本页内容
- 先决条件
- 安装 Java JDK
- 在 Ubuntu 22.04 上安装 Apache Tomcat
- 创建 Tomcat 管理用户
- 启用 Tomcat 远程访问
- 为 Apache Tomcat 创建服务文件
- 将 Nginx 配置为 Tomcat 的反向代理
- 访问 Apache Tomcat
- 结论
Apache Tomcat 是一个开源的 Java Web 服务器和 Servlet 容器,用于托管用 Java 编写的 Web 应用程序。它是 Web 开发人员构建和维护基于 Java 软件平台的动态网站和应用程序的首选。它是由 Apache Software Foundation 开发的开源项目。Tomcat 使 Web 服务器能够处理基于 Java 的动态 Web 内容。
本教程将向您展示如何在 Ubuntu 22.04 上安装 Apache Tomcat。
先决条件
- 一台运行 Ubuntu 22.04 的服务器。
- 一个指向您服务器 IP 的有效域名。
- 服务器上已配置 root 密码。
安装 Java JDK
Apache Tomcat 是一个基于 Java 的应用程序,因此必须在您的服务器上安装 Java。如果尚未安装 Java,您可以使用以下命令进行安装:
apt install default-jdk -y
Java 安装完成后,您可以使用以下命令验证 Java 版本:
java -version
您将得到以下输出:
openjdk version "11.0.15" 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
在 Ubuntu 22.04 上安装 Apache Tomcat
首先,将 Tomcat 作为单独的用户运行是个好主意。您可以使用以下命令创建一个 Tomcat 用户:
useradd -m -d /opt/tomcat -U -s /bin/false tomcat
接下来,使用以下命令下载最新版本的 Apache Tomcat:
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
Apache Tomcat 下载完成后,将下载的文件解压到 /opt 目录中:
tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
接下来,为 Tomcat 目录设置正确的所有者和权限:
chown -R tomcat:tomcat /opt/tomcat/
chmod -R u+x /opt/tomcat/bin
完成后,您可以继续进行下一步。
创建 Tomcat 管理用户
默认情况下,访问 Tomcat 无需任何身份验证。因此建议启用身份验证并为 Tomcat 创建一个管理用户。您可以通过编辑 Tomcat 用户配置文件来添加:
nano /opt/tomcat/conf/tomcat-users.xml
在 行之前添加以下行:
<role rolename="admin-gui" /> <user username="admin" password="yourpassword" roles="manager-gui,admin-gui" />
完成后保存并关闭文件。
启用 Tomcat 远程访问
默认情况下,Tomcat 被配置为仅允许从本地主机访问。因此建议启用 Tomcat 远程访问,以便从远程主机管理 Tomcat。
要从远程主机启用 manager 应用,请编辑以下文件:
nano /opt/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 应用,请编辑以下文件:
nano /opt/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" />
完成后保存并关闭文件。
为 Apache Tomcat 创建服务文件
接下来,您需要创建一个服务文件,以便通过 systemd 管理 Tomcat 服务。您可以使用以下命令创建该文件:
nano /etc/systemd/system/tomcat.service
添加以下行:
[Unit] Description=Tomcat After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat" Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
保存并关闭文件,然后重新加载 systemd 守护进程以应用更改:
systemctl daemon-reload
接下来,使用以下命令启动 Tomcat 服务并使其在系统重启时自动启动:
systemctl start tomcat
systemctl enable tomcat
您可以使用以下命令检查 Apache Tomcat 的状态:
systemctl status tomcat
您将得到以下输出:
? tomcat.service - Tomcat
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-29 08:11:54 UTC; 6s ago
Process: 18959 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 18966 (java)
Tasks: 29 (limit: 4630)
Memory: 116.4M
CPU: 5.312s
CGroup: /system.slice/tomcat.service
??18966 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja>
Apr 29 08:11:54 ubuntu systemd[1]: Starting Tomcat...
Apr 29 08:11:54 ubuntu startup.sh[18959]: Tomcat started.
Apr 29 08:11:54 ubuntu systemd[1]: Started Tomcat.
此时,Tomcat 已启动并在 8080 端口监听。您可以使用以下命令检查:
ss -antpl | grep java
您将得到以下输出:
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:* users:(("java",pid=18966,fd=53))
LISTEN 0 100 *:8080 *:* users:(("java",pid=18966,fd=43))
完成后,您可以继续进行下一步。
将 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.
访问 Apache Tomcat
现在,打开您的 Web 浏览器,使用 URL http://tomcat.example.com 访问 Apache Tomcat Web 界面。您应该在以下屏幕上看到 Tomcat 仪表板:

点击 Manager App。系统将要求您进行身份验证,如下所示:

输入您的管理员用户名和密码,然后点击 Sign in 按钮。您应该在以下屏幕上看到 Manager App 仪表板:

要访问 Host Manager 应用,请点击 Host Manager。您应该会看到以下屏幕:

点击 Server Status。您应该在以下屏幕上看到 Apache Tomcat 状态:

结论
恭喜!您已成功在 Ubuntu 22.04 上以 Nginx 作为反向代理安装了 Apache Tomcat。您现在可以使用 Apache Tomcat 创建并托管您的第一个 Java 应用程序。如果您有任何疑问,欢迎随时向我提问。