如何在 Ubuntu 上安装和配置 Apache Tomcat
Tomcat,也称为 Apache Tomcat,是运行 Java servlet、JSP 和 WebSocket 的最流行的应用程序之一。它简单、轻量,用于渲染 Java 代码和各种其他应用程序。它拥有强大的附加组件生态系统,是全球使用最广泛的应用程序和网络服务器之一。
本教程将向您展示如何在 Ubuntu 20.04 上使用 Nginx 作为反向代理安装 Tomcat。
要求
- 配备 Ubuntu 20.04 和 2 GB RAM 的服务器。
- root 密码已在您的服务器上设置。
安装Java
Tomcat 是一个基于Java 的应用程序。因此,您需要在服务器上安装Java。您可以使用以下命令安装它:
apt-get install openjdk-11-jdk -y
安装 Java 后,使用以下命令检查已安装的 Java 版本:
java --version
您应该得到以下输出:
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
安装Tomcat
在开始之前,您需要创建一个用户和一个组来运行 Tomcat。
首先,使用以下命令创建一个名为 tomcat 的组:
groupadd tomcat
接下来,使用以下命令创建一个名为 tomcat 的新用户:
useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
接下来,在 /opt 中创建一个 tomcat 目录并使用以下命令下载最新版本的 tomcat:
mkdir /opt/tomcat
apt-get install curl -y
curl -O http://mirrors.estointernet.in/apache/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz
下载完成后,使用以下命令将下载的文件解压到 /opt/tomcat 目录:
tar xzvf apache-tomcat-9.0.35.tar.gz -C /opt/tomcat --strip-components=1
接下来,使用以下命令将 /opt/tomcat 目录的所有者更改为 tomcat 并赋予其适当的权限:
chown -R tomcat:tomcat /opt/tomcat
chmod -R 755 /opt/tomcat
为tomcat创建systemd服务文件。
首先,使用以下命令找到Java的位置:
update-java-alternatives -l
您应该看到以下输出:
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
为tomcat创建systemd文件时可以使用上面的路径。
接下来,创建一个新的systemd服务文件来管理Tomcat服务。
nano /etc/systemd/system/tomcat.service
添加以下行:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
保存并关闭文件,然后使用以下命令重新加载 systemd 守护进程:
systemctl daemon-reload
接下来,启动 Tomcat 服务并启用它,以便它在重新启动时启动:
systemctl start tomcat
systemctl enable tomcat
接下来,使用以下命令检查 Tomcat 服务:
systemctl status tomcat
您应该得到以下输出:
? tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 17:13:08 UTC; 5s ago
Process: 77758 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 77776 (java)
Tasks: 30 (limit: 4691)
Memory: 116.2M
CGroup: /system.slice/tomcat.service
??77776 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djav>
May 21 17:13:08 ubunt4 systemd[1]: Starting Apache Tomcat Web Application Container...
May 21 17:13:08 ubunt4 startup.sh[77758]: Tomcat started.
May 21 17:13:08 ubunt4 systemd[1]: Started Apache Tomcat Web Application Container.
配置 Tomcat Web UI
接下来,您需要定义一个用户来访问 Tomcat Web UI。您可以通过编辑 tomcat-users.xml 文件来完成此操作:
nano /opt/tomcat/conf/tomcat-users.xml
在上面添加以下行:
<role rolename="manager-gui"/>
<user username="manager" password="secure-password" roles="manager-gui,admin-gui"/>
完成后保存并关闭文件。
默认情况下,Tomcat Web UI 配置为只能从本地主机访问。因此,您需要允许从任何地方访问 Tomcat Web UI。
要启用对 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" /> -->
完成后保存并关闭文件。
要启用对主机管理器应用程序的访问,请编辑以下文件:
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 服务以应用更改。
systemctl restart tomcat
完成后,您可以继续下一步。
访问Tomcat
现在打开 Web 浏览器并输入 URL http://your-server-ip:8080。您将被重定向到 Tomcat(见下文):
单击经理应用程序按钮访问经理应用程序。您应该看到以下页面:
输入您的用户名和密码,然后单击“登录”按钮。在下一页上,您将看到 Manager App 仪表板:
单击主机管理器应用程序按钮以访问主机管理器应用程序。您应该看到以下页面:
输入您的用户名和密码,然后单击“登录”按钮。在下一页上,您将看到主机管理器应用程序仪表板:
将 Nginx 配置为 Tomcat 的反向代理。
Tomcat默认运行在8080端口,建议配置Nginx作为反向代理来访问Tomcat。
首先,使用以下命令安装 Nginx Web 服务器:
apt-get install nginx -y
安装后,使用以下命令为 Nginx 虚拟主机创建新的配置文件:
nano /etc/nginx/sites-available/tomcat.conf
添加以下行:
server {
listen 80;
server_name your-server-ip;
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/;
}
}
完成后保存并关闭文件。然后使用以下命令创建到 /etc/nginx/sites-enabled/ 目录的符号链接:
ln -s /etc/nginx/sites-available/tomcat.conf /etc/nginx/sites-enabled/
接下来,使用以下命令检查 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 - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2020-03-02 22:28:13 EST; 4min 14s ago
Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 985 (nginx)
Tasks: 3 (limit: 25028)
Memory: 5.5M
CGroup: /system.slice/nginx.service
??985 nginx: master process /usr/sbin/nginx
??986 nginx: worker process
??987 nginx: worker process
May 20 21:28:12 ubunt4 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 20 21:28:12 ubunt4 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 20 21:28:12 ubunt4 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 20 21:28:13 ubunt4 systemd[1]: Started The nginx HTTP and reverse proxy server.
您现在可以使用 URL http://your-server-ip 访问 Tomcat。
结论
恭喜!您已在 Ubuntu 20.04 上成功安装 Tomcat 和 Nginx。现在您可以使用 Tomcat 开发和托管基于 Java 的应用程序。有关更多信息,请参阅 Tomcat 文档。