代码编织梦想

在 Ubuntu 上部署 Tomcat Web 应用

在这里插入图片描述

前言

本篇是我在实验室部署考勤java后端的时候遇到了一些问题,于是重新下载安装tomcat部署了一遍,总结以下操作以及遇到的bug修复。

步骤

1、安装java

在 Ubuntu 上安装 Java 的命令是:

sudo apt-get update
sudo apt-get install default-jdk

2、下载和安装 Tomcat

下载 Tomcat 安装包:

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz

解压缩安装包:

tar -xzvf apache-tomcat-9.0.22.tar.gz

3、启动 Tomcat

在终端中输入以下命令启动 Tomcat:

cd apache-tomcat-9.0.22/bin
sudo sh startup.sh

4访问应用

Tomcat默认启动端口是8080(可以修改,下面讲)在浏览器中输入 http://localhost:8080 访问 Tomcat 主页。如果一切正常,应该能够看到一个 Apache Tomcat 页面。

5、部署 Web 应用程序

为了部署 Web 应用程序,需要将 WAR 文件复制到 Tomcat 的 webapps 目录中,因为配置文件默认读取的目录是webapps(下面讲如何用其他路径)。在终端中使用以下命令进入 webapps 目录:

cd apache-tomcat-9.0.22/webapps/

将 WAR 文件复制到该目录中:

sudo cp /path/to/your-application.war /path/to/tomcat/webapps/

其中path是你自己项目打包的路径

6、重启 Tomcat

在终端中输入以下命令重启 Tomcat:

cd apache-tomcat-9.0.22/bin
sudo sh shutdown.sh
sudo sh startup.sh

到此就可以在浏览器中输入 http://localhost:8080/your-application 访问你的 Web 应用程序。

配置文件

这是我的服务器安装的Tomcat目录:下面有一个conf文件就是专门放配置文件的

在这里插入图片描述

server.xml

修改端口

修改port就行,我这里把默认的改成了8888端口。

Tomcat 默认使用 8080 端口启动 Web 服务器,但这并不意味着无法在 Tomcat 上使用不同的端口。你可以更改 Tomcat 的默认端口来使用其他端口,例如你的后端应用程序的端口号。

要更改 Tomcat 的默认端口,请修改 Tomcat 配置文件中的 server.xml 文件。打开该文件并找到以下行:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

如果将 Tomcat 的端口更改为 8888,则 URL 应更改为:

http://localhost:8888/your-application

确保该 URL 中的端口号与本地后端应用程序的端口号相匹配。这样,就可以通过 Tomcat 访问本地后端应用程序来提供 Web 服务。

在这里插入图片描述

开启端口

在 Ubuntu 中,可以使用 ufw ( Uncomplicated Firewall ) 命令管理防火墙来打开端口。以下是打开指定端口的步骤:

在终端中输入以下命令:

sudo ufw status

输出应该显示当前防火墙的状态,例如:

Status: inactive

如果输出显示防火墙已启用,则显示当前打开的端口,例如:

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)

打开需要的端口

打开指定的端口,例如 8888,可以使用以下命令:

sudo ufw allow 8888/tcp

如果希望设置允许指定 IP 地址访问该端口,则可以使用以下命令:

sudo ufw allow from [IP地址] to any port 8888

重载防火墙规则配置

sudo ufw reload

修改项目配置路径

server.xml 是 Tomcat 的核心配置文件之一。你可以在其中指定 WAR 文件的路径,告诉 Tomcat 如何加载Web应用程序。以下是在 server.xml 中配置 WAR 文件的步骤:

  1. 打开 server.xml 文件,该文件通常位于 Tomcat 安装目录下的 conf 目录中。
  2. <Host> 元素内,找到 <Context> 元素,该元素指定 Tomcat 加载 Web 应用程序的上下文路径和 WAR 文件的路径。如果 <Context> 元素不存在,则可以添加一个新的 <Context> 元素。
  3. <Context> 元素中,设置 docBase 属性为你的 WAR 文件的路径。

以下是一个示例 <Context> 元素配置,其中 docBase 属性指向 WAR 文件的路径:

<Context path="/your-webapp" docBase="/path/to/your-webapp.war" />

在这个示例中,配置的上下文路径是 /your-webapp,WAR 文件在 /path/to/your-webapp.war 路径下。

  1. 保存 server.xml 文件,并重新启动 Tomcat 以使更改生效。

当 Tomcat 启动时,它会自动加载你指定的 WAR 文件,并将其部署为 Web 应用程序。请注意,如果更改了 server.xml 文件,请谨慎检查文件是否存在语法错误,并备份原始文件,以便在需要时可以还原配置。

报错

404错误

在这里插入图片描述

404表示File Not Found, 文件不存在错误。

正确的端口号

出现404错误证明,TOMCAT是启动成功了的。 但是在一台计算机上,可以启动多个端口号不一样的TOMCAT, 所以请确保自己访问的是正确的那个端口号,别自己启动的是8080端口号的TOMCAT,但是访问的地址却用的是80端口(默认),这样肯定会出现404错误的。

环境变量

假设有两个Tomcat A和 B,自己分明运行的是B 下的startup.bat, 但是启动的却是A,为什么会这样呢? 这就是环境变量在作祟了。
在环境变量中有两个属性:分别是CATALINA_HOME和CATALNIA_BASE,如果这个值指向的是A,那么即便运行的是B下的startup.bat, 真正启动的还会是A。

确定Web应用是否成功启动

虽然Tomcat启动成功了,但是对应的Web应用启动失败,依然会导致404错误。
怎么判断Web应用成功与失败呢? 倘若Web引用启动失败,那么就一定会在Tomcat的logs目录下的 localhost.当前日期.log 里留下错误信息。
打开这个文件,检查对应的Web应用是否启动过程中报错了。 也许是web.xml多写了一个标签结束,也许是对应的servlet类找不到。

webapps下的ROOT目录

有的时候,在server.xml 中配置的<context 是以“/"为开始路径的,与此同时,在webapps目录下还存在一个ROOT目录,这个ROOT目录其实也是告诉tomcat,以“/” 为开始路径,那么这样就发生冲突了,Tomcat只能二选一,通常情况下都会选择ROOT目录,那么在server.xml中配置的<context 就无法启动了,导致访问对应的资源提示404错误。
解决办法就是:删除掉ROOT目录,或者把ROOT目录重命名

不能访问WEB-INF目录下的资源

安全角度出发,TOMCAT不允许访问WEB-INF目录下的HTML,JSP文件。 所以如果你的资源文件放在WEB-INF下,也会提示404错误

访问地址后面多加了一个斜杠

如图,本来应该访问

http://127.0.0.1:8080/hello

但是却访问了地址:

http://127.0.0.1:8080/hello/
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_60496161/article/details/129825607

菜鸟--linux下ubuntu 安装jdk、tomcat、部署web应用_hcj19871119的博客-爱代码爱编程

本人对于web应用和linux都是菜鸟,所以想搞个最简单的项目试试,在虚拟机上尝试了一把部署web应用,最终成功。我这样的菜鸟都可以,你们肯定是信手拈来,具体如下: jdk和jre安装 1、jdk-8u144-linux-i586.tar.gz  放到某个目录下,我选择/home/jacky/Download (对应版本为jdk1.8.0_14

ubuntu16.04虚拟机tomcat7中部署web应用_chongchuyi9402的博客-爱代码爱编程

1.使用VMware Workstation 安装Ubuntu     Ubuntu下载地址http://cn.ubuntu.com/download/     安装步骤http://jingyan.baidu.com/article/0320e2c1ef9f6c1b87507bf6.html 2.我下载的是Ubuntu16.04 desktop

ubuntu tomcat9安装及远程部署-爱代码爱编程

一、创建一个系统用户 以 root 用户运行 Tomcat 有一个安全风险。我们将会创建一个系统用户和用户组,其主目录为/opt/tomcat。我们将会使用这个用户来运行 Tomcat 服务。想要这么做,输入下面的命令: sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat 二、下载 Tomc

Ubuntu部署tomcat-爱代码爱编程

安装tomcat需要有Java环境,需要先安装jdk,可以参考Ubuntu部署Jenkins 其中有步骤介绍 1. tomcat官网下载对应linux压缩包 2. 将下载的tomcat压缩包放在你安装的文件夹下,我放置在/usr/share/tomcat目录下 3. 解压tomcat压缩包到当前路径 tar -xzvf apache-tomca

【01】在阿里云Ubuntu服务器上部署Tomcat详细流程(结合官方文档)-爱代码爱编程

一、服务器基本信息 操作系统:Ubuntu 18.04 64位(CentOS 和 Ubuntu 的指令、默认配置存在不同,所以一定要看好自己的操作系统版本) 二、Tomcat详细部署安装流程 主要步骤流程还是要参考阿里云官方提供的文档: 手动部署Java Web环境(Alibaba Cloud Linux 2) 但是官方文档都是以CentOS

ubuntu外置tomcat部署应用;访问项目时去掉项目名-爱代码爱编程

首先需要一个正常能跑的应用打成war包 项目中加入spring-boot-starter-web(如果是已经加入该依赖的项目可以忽略)和spring-boot-starter-tomcat依赖。packaging由jar修改为war。在build内加入finalName,这个是设置打war包名称,可以不设置使用默认的。 修改启动类,使其继承Spri

如何在 Ubuntu 20.04 上安装 Tomcat 9-爱代码爱编程

本文最先发布在:如何在 Ubuntu 20.04 上安装 Tomcat 9 - ITCoder 这篇指南描述如何在 Ubuntu 20.04 上安装和配置 Tomcat 9 。 Apache Tomcat是一个开源的 Web 服务器和 Java servlet 容器。它是世界上最流行的选择,用来构建基于 Java 的网站和应用。Tomcat 是一个轻量

超详细Ubuntu Linux安装配置 Tomcat-爱代码爱编程

Ubuntu 安装配置Tomcat 1. 开始之前2. 安装 Java2.1 查找2.2 安装2.3 验证3. 安装 Tomcat3.1 获取Tomcat3.2 解压Tomcat3.3 验证安装3.4 配置Tomcat帐号密码权限3.5 配置Tomcat开机自启动3.6 部署web项目3.7 修改端口 1. 开始之前 Tomcat是一个基

9、ubuntu安装tomcat&配置部署web-爱代码爱编程

1、安装 Java 这里使用Ubuntu22.04 其他版本也差不多 tomcat是基于Java开发的,安装前需确保已经按照了jdk apt update apt install openjdk-8-jdk 验证是否按照成功 java -version 环境变量  2、安装 Tomcat 下载链接 Tomcat: Apache Tomc