安装 Java JDK
Apache Tomcat 是一个基于 Java 的应用程序,因此必须在服务器上安装 Java。如果没有安装 Java,可以使用下面的命令安装它
sudo apt update
sudo apt install openjdk-8-jdk
如果是Debian12的话,需要先添加Debian软件源,参考Debian官网软件包,往您的/etc/apt/sources.list
文件中添加一行源镜像地址(不同的地区可以使用附近的源镜像):
deb http://ftp.de.debian.org/debian sid main
安装 Java 之后,可以使用以下命令验证 Java 版本
java -version
您将得到以下输出
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-8u412-ga-1~22.04.1-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
安装 Apache Tomcat
注意在这个地方,如果出现404的话,自行根据官方的版本进行下载
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz
下载 Apache Tomcat 后,把下载的文件提取到 /usr/local/目录
sudo mkdir -p /usr/local/tomcat
tar xzvf apache-tomcat-9*tar.gz -C /usr/local/tomcat --strip-components=1
为 Tomcat 目录设置适当的所有权和权限
chown -R root:root /usr/local/tomcat/
chmod -R 755 /usr/local/tomcat/
创建Tomcat管理用户
默认情况下,无需任何身份验证即可访问 Tomcat。建议启用身份验证并为 Tomcat 创建一个管理用户,可以通过编辑 Tomcat 用户配置文件来添加它。
nano /usr/local/tomcat/conf/tomcat-users.xml
在行 </tomcat-users>
前面添加以下内容,根据自己的账号密码进行修改。
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="yourpassword" roles="manager-gui,admin-gui"/>
保存并退出
开启 Tomcat Remote Access
默认情况下,Tomcat 被配置为只能从本地主机访问。建议启用 Tomcat 远程访问,以便从远程主机管理 Tomcat。
要从远程主机启用 manager app,请编辑以下文件:
nano /usr/local/tomcat/webapps/manager/META-INF/context.xml
删除以下行
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
要从远程主机启用 host manager app,请编辑以下文件:
nano /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
删除以下行
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
保存并退出
配置 Nginx 作为 Tomcat 的反向代理
接下来,您需要创建一个 Nginx 作为 Apache Tomcat 的反向代理。首先,用下面的命令安装 Nginx web 服务器
apt-get install nginx -y
安装 Nginx web 服务器后,使用以下命令创建 Nginx 虚拟主机配置文件
nano /etc/nginx/conf.d/tomcat.conf
添加以下代码行
server {
listen 80;
server_name tomcat.example.com;
access_log /var/log/nginx/tomcat-access.log;
error_log /var/log/nginx/tomcat-error.log;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
保存并关闭该文件,验证 Nginx 是否有语法错误
nginx -t
您将得到以下输出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
接下来,重新启动 Nginx 服务以应用更改
systemctl restart nginx
您还可以使用以下命令检查 Nginx 状态
systemctl status nginx
您应该看到以下输出
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-29 08:15:28 UTC; 8s ago
Docs: man:nginx(8)
Process: 19070 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 19071 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 19072 (nginx)
Tasks: 3 (limit: 4630)
Memory: 3.3M
CPU: 63ms
CGroup: /system.slice/nginx.service
??19072 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
??19073 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
??19074 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Apr 29 08:15:28 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Apr 29 08:15:28 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.
开始启动tomcat
cd /usr/local/tomcat/bin
./startup.sh
访问 Apache Tomcat
打开您的 Web 浏览器,并使用 http://tomcat.example.compame 访问 Apache Tomcat Web 界面,如下所示:
点击 Manager App,系统将要求您进行身份验证,如下所示:
提供您的管理员用户名和密码,然后点击 Sign in 按钮,如下所示:
点击 Host Manager,如下所示:
点击 Server Status,如下所示:
部署war应用
将 productName.war 文件上传到webapps目录下,默认访问路径是 http://tomcat.example.compame/productName
去掉productName 这层路径
nano /usr/local/tomcat/conf/server.xml
docBase要改成你的项目目录
path为虚拟路径,访问时的路径,注意:不是根目录的,如果是其他路径比如"/test"一定要加"/""
reloadable设置为true
<Context path="" docBase="productName" reloadable="true"></Context>
然后,重启Tomcat服务
cd /usr/local/tomcat/bin
./shutdown.sh
./startup.sh