如何在 Debian 10 上安装 Apache Tomcat 10
在此页
- 先决条件
- 开始
- 安装Java
- 安装 Apache Tomcat
- 创建 Tomcat Web 管理员用户
- 允许远程访问 Tomcat
- 为 Tomcat 创建一个系统单元文件
- 为 Tomcat 配置 Nginx
- 访问 Tomcat 应用程序
- 结论
Apache Tomcat 是开源的,是最流行的用于托管基于 Java 的应用程序的 Web 应用程序服务器。它带有 Java Servlet、JavaServer Pages (JSP)、Java EL,并提供运行 Java 代码的环境。 Tomcat 提供了一组丰富的功能,包括轻量级、高度灵活、文档齐全、提供额外级别的安全性、成熟等等。
在本教程中,我们将解释如何在 Debian 10 服务器上安装 Apache Tomcat 10。
先决条件
- 运行 Debian 10 的服务器。
- 用您的服务器 IP 指向的有效域名。
- 在服务器上配置了根密码。
入门
在开始之前,使用以下命令将系统包更新到最新版本:
apt-get update -y
更新所有包后,您可以继续下一步。
安装Java
Apache Tomcat 是一个基于 Java 的应用程序。所以你需要在你的服务器上安装 Java。您可以使用以下命令安装 Java:
apt-get install default-jdk -y
安装后,使用以下命令验证 Java 版本:
java --version
以下输出将向您显示服务器上安装的 Java 版本。
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
完成后,您可以继续下一步。
安装 Apache Tomcat
在编写本教程时,Apache Tomcat 的最新可用版本是 10.0.7。
首先,使用以下命令添加用户以运行 Apache Tomcat:
useradd -m -d /opt/tomcat -U -s /bin/false tomcat
接下来,使用以下命令下载 Apache Tomcat 10:
wget https://mirrors.estointernet.in/apache/tomcat/tomcat-10/v10.0.7/bin/apache-tomcat-10.0.7.tar.gz
下载完成后,使用以下命令将下载的文件解压缩到 /opt/tomcat 目录:
tar -xzvf apache-tomcat-10.0.7.tar.gz -C /opt/tomcat --strip-components=1
接下来,使用以下命令为 /opt/tomcat 目录设置适当的所有权:
chown -R tomcat:tomcat /opt/tomcat/
完成后,您可以继续下一步。
创建 Tomcat Web 管理员用户
接下来,您需要创建一个管理员用户来访问 Tomcat 管理界面。您可以通过编辑 tomcat-users.xml 文件来创建它:
nano /opt/tomcat/conf/tomcat-users.xml
在最后一行之前添加以下行:
<role rolename="manager-gui" />
<user username="manager" password="pasword" roles="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="password" roles="manager-gui,admin-gui" />
完成后保存并关闭文件。您现在可以继续下一步。
允许远程访问 Tomcat
默认情况下,Tomcat 被配置为只能从本地系统访问。因此,您需要配置 Tomcat,以便可以从远程系统访问它。
首先,编辑 context.xml 文件以允许远程访问 Tomcat 管理器应用程序:
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" />
保存并关闭文件,然后编辑 context.xml 文件以允许远程访问 Tomcat 主机管理器应用程序:
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" />
完成后保存并关闭文件。您现在可以继续下一步。
为 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
您现在可以使用以下命令检查 Tomcat 服务的状态:
systemctl status tomcat
您应该得到以下输出:
? tomcat.service - Tomcat
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2021-07-01 04:58:39 UTC; 15s ago
Process: 5706 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 5713 (java)
Tasks: 29 (limit: 2359)
Memory: 154.7M
CGroup: /system.slice/tomcat.service
??5713 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.ut
Jul 01 04:58:39 tomcat systemd[1]: Starting Tomcat...
Jul 01 04:58:39 tomcat startup.sh[5706]: Tomcat started.
Jul 01 04:58:39 tomcat systemd[1]: Started Tomcat.
此时Tomcat已经启动并监听8080端口,可以通过以下命令查看:
ss -antpl | grep 8080
您应该得到以下输出:
LISTEN 0 100 *:8080 *:* users:(("java",pid=5713,fd=43))
完成后,您可以继续下一步。
为 Tomcat 配置 Nginx
接下来推荐使用Nginx作为反向代理来访问Tomcat应用。
首先,使用以下命令安装 Nginx Web 服务器:
apt-get install nginx -y
安装 Nginx 后,创建一个新的 Nginx 虚拟主机配置文件:
nano /etc/nginx/conf.d/tomcat.conf
添加以下行:
server {
listen 80;
server_name tomcat.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/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 Thu 2021-07-01 05:00:32 UTC; 6s ago
Docs: man:nginx(8)
Process: 6322 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 6323 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 6324 (nginx)
Tasks: 2 (limit: 2359)
Memory: 2.7M
CGroup: /system.slice/nginx.service
??6324 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
??6325 nginx: worker process
Jul 01 05:00:32 tomcat systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 01 05:00:32 tomcat systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jul 01 05:00:32 tomcat systemd[1]: Started A high performance web server and a reverse proxy server.
完成后,您可以继续下一步。
访问 Tomcat 应用程序
现在,打开 Web 浏览器并使用 URL http://tomcat.example.com 访问 Tomcat 应用程序。您将被重定向到以下页面:

单击“管理应用程序”。您应该会看到 Manager App 登录页面:

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

要访问主机管理器,请从 Tomcat 主页单击主机管理器。您应该看到 Tomcat 主机管理器登录页面:

提供您的管理员用户名和密码,然后单击“登录”按钮。您应该在以下页面上看到 Tomcat 主机管理器仪表板:

结论
恭喜!您已在 Debian 10 服务器上成功安装 Apache Tomcat 10。您现在可以创建 Java 应用程序并使用 Apache Tomcat 托管它。如果您有任何问题,请随时问我。