如何在 Debian 10 上使用 Nginx 代理安装 Apache Tomcat 9
在此页
- 先决条件
- 开始
- 安装Java
- 安装Tomcat
- 为 Tomcat 创建一个 Systemd 服务文件
- 配置 Tomcat Web 界面
- 为 Tomcat 配置 Nginx
- 访问 Tomcat 网络用户界面
- 结论
Tomcat 是一个免费、开源和轻量级的应用程序服务器,用于部署基于 Java 的应用程序。它可以用作独立服务器或与 Apache 和 Nginx 等其他服务器结合使用。它提供了与 Java Servlet 交互的扩展功能,还实现了 Java 平台的多项技术规范。目前,Tomcat 是使用最广泛的 Java 应用服务器之一。
在本教程中,我将向您展示如何在 Debian 10 上安装带有 Nginx 的 Tomcat 9。
先决条件
- 运行 Debian 10 的服务器。
- 用您的服务器 IP 指向的有效域名。
- 在您的服务器上配置了根密码。
入门
在开始之前,最好将 APT 缓存更新到最新版本。您可以通过运行以下命令来更新它:
apt-get update -y
一旦您的系统包缓存是最新的,您就可以继续下一步。
安装Java
Tomcat 是基于 Java 的应用程序,因此必须在您的服务器中安装 Java。如果没有安装,可以使用以下命令安装:
apt-get install default-jdk -y
安装 Java 后,您可以使用以下命令验证 Java 版本:
java --version
您应该得到以下输出:
openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode, sharing)
完成后,您可以继续下一步。
安装Tomcat
首先,您需要创建一个专用用户来运行 Tomcat 服务器。您可以使用以下命令创建它:
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
接下来,使用以下命令下载最新版本的 Tomcat:
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz
下载完成后,使用以下命令解压缩下载的文件:
tar -xvzf apache-tomcat-9.0.45.tar.gz
接下来,使用以下命令将提取的目录移动到 /opt:
mv apache-tomcat-9.0.45 /opt/tomcat/tomcat
接下来,使用以下命令设置适当的权限和所有权:
chown -R tomcat:tomcat /opt/tomcat/tomcat
chmod -R 755 /opt/tomcat/tomcat
完成后,您可以继续下一步。
为 Tomcat 创建 Systemd 服务文件
接下来,您需要创建一个 systemd 服务文件来管理 Tomcat 服务。您可以使用以下命令创建它:
nano /etc/systemd/system/tomcat.service
添加以下行:
[Unit]
Description=Tomcat 9.0 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/tomcat"
Environment="CATALINA_HOME=/opt/tomcat/tomcat"
Environment="CATALINA_PID=/opt/tomcat/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
保存并关闭文件,然后使用以下命令重新加载 systemd 守护进程:
systemctl daemon-reload
接下来,启动 Tomcat 服务并使用以下命令使其在系统重启时启动:
systemctl start tomcat
systemctl enable tomcat
您还可以使用以下命令验证 Tomcat 的状态:
systemctl status tomcat
您应该得到以下输出:
? tomcat.service - Tomcat 9.0 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2021-04-14 05:41:21 UTC; 42s ago
Process: 5784 ExecStart=/opt/tomcat/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 5791 (java)
Tasks: 30 (limit: 4701)
Memory: 159.1M
CGroup: /system.slice/tomcat.service
??5791 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat/conf/logging.properties -Djava.util.log
Apr 14 05:41:21 debian systemd[1]: Starting Tomcat 9.0 servlet container...
Apr 14 05:41:21 debian startup.sh[5784]: Tomcat started.
Apr 14 05:41:21 debian systemd[1]: Started Tomcat 9.0 servlet container.
完成后,您可以继续下一步。
配置 Tomcat Web 界面
接下来,您需要定义一个用户来访问 Tomcat Web 界面。您可以使用 tomcat-users.xml 文件定义它:
nano /opt/tomcat/tomcat/conf/tomcat-users.xml
找到
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcatadmin" password="password" roles="admin-gui,manager-gui"/>
完成后保存并关闭文件。
默认情况下,Tomcat Web 界面配置为只能从本地主机访问。所以你需要配置它以供外部访问。
对于 Manager 应用程序,编辑以下行:
nano /opt/tomcat/tomcat/webapps/manager/META-INF/context.xml
对于 Host Manager 应用程序,编辑以下文件:
nano /opt/tomcat/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" />
保存并关闭文件,然后重新启动 Tomcat 服务以应用更改:
systemctl restart tomcat
完成后,您可以继续下一步。
为 Tomcat 配置 Nginx
接下来,您需要安装和配置 Nginx 作为 Tomcat 的反向代理。首先,使用以下命令安装 Nginx 包:
apt-get install nginx -y
安装 Nginx 后,您需要为 Tomcat 创建一个新的 Nginx 虚拟主机配置文件。您可以使用以下命令创建它:
nano /etc/nginx/conf.d/tomcat.conf
添加以下行:
server {
listen 80;
server_name tomcat.example.com;
root /opt/tomcat/tomcat/webapps/;
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 Wed 2021-04-14 05:57:03 UTC; 1min 38s ago
Docs: man:nginx(8)
Process: 6852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 6853 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 6854 (nginx)
Tasks: 3 (limit: 4701)
Memory: 4.0M
CGroup: /system.slice/nginx.service
??6854 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
??6855 nginx: worker process
??6856 nginx: worker process
Apr 14 05:57:03 debian systemd[1]: Starting A high performance web server and a reverse proxy server...
Apr 14 05:57:03 debian systemd[1]: Started A high performance web server and a reverse proxy server.
至此,Nginx 已经配置好可以访问 Tomcat 了。您现在可以继续下一步。
访问 Tomcat 网页界面
现在,打开 Web 浏览器并使用 URL http://tomcat.example.com 访问 Tomcat Web UI。您应该会看到以下页面:

单击 Manager App,您应该会看到以下页面:

提供您的 Manager App 管理员用户名和密码,然后单击“登录”按钮。您应该会看到以下页面:

您也可以点击主机管理器访问主机管理器应用程序,如下所示:

结论
恭喜!您已经在 Debian 10 上成功安装了带有 Nginx 作为反向代理的 Tomcat。您现在可以使用 Tomcat 轻松部署 Java 应用程序。如果您有任何问题,请随时问我。