Apache Tomcat是Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket技术的开源实现。
它是当今世界上使用最广泛的应用程序和Web服务器之一。Tomcat易于使用,并具有强大的生态系统。本教程介绍如何在CentOS 8安装Tomcat 9。
Tomcat 9需要Java SE 8或更高版本。我们将安装OpenJDK 11,这是Java平台的开源实现。
以root用户或具有sudo权限的用户运行命令sudo yum install java-1.8.0-openjdk-devel
安装Java。
安装完成后,运行命令Java --version
检查是否安装正确。命令将会打印Java的版本。
以root运行Tomcat,具有安全风险。我们将创建普通用户运行Tomcat,配并将Tomcat用户的家目录设置为/opt/tomcat
。
运行useradd命令sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
。
sudo yum install java-1.8.0-openjdk-devel
java -version
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)
下载Tomcat
Tomcat二进制发行可从Tomcat下载页面下载。在撰写本文时,最新的Tomcat版本是9.0.30
。
在继续下一运行步之前,请检查Tomcat 9下载页面以查看是否有较新的版本。然后将运行wget
命令将Tomcat tar.gz文件下载到Linux的临时目录/tmp
。
下载完成后,解压缩tar.gz文件到/opt/tomcat
目录。
VERSION=9.0.30
wget https://dlcdn.apache.org/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
Tomcat会定期进行更新。为了更好地控制版本和更新,我们将创建一个名为latest
的符号链接,该链接指向Tomcat的安装目录。
运行chmod命令使bin
目录中的shell脚本具有可执行权限,这些脚本用于启动和停止Tomcat。
将/opt/tomcat目录的所有权更改为tomcat用户和tomcat组,使tomcat用户可以访问 /opt/tomcat目录。运行命令sudo chown -R tomcat: /opt/tomcat
。
sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
sudo chown -R tomcat: /opt/tomcat
创建Systemd服务单元
我们将其设置为服务运行,而不是手动启动和停止Tomcat服务器。
打开您喜欢的文本编辑器,创建文件tomcat.service在/etc/systemd/system/目录。在本教程中我们将使用vim创建文件。
完成后,保存文件并退出vim。然后运行systemctl daemon-reload
命令重新加载配置文件。
运行命令sudo systemctl enable --now tomcat
启动Tomcat服务并自动启动。systemctl restart tomcat
命令重启tomcat服务。
sudo vim /etc/systemd/system/tomcat.service
sudo systemctl daemon-reload
sudo systemctl enable --now tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
● tomcat.service - Tomcat 9 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-01-15 20:38:07 UTC; 30s ago
Process: 3957 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
...
配置防火墙
如果您CentOS 8正在运行防火墙服务firewalld,并且您想从外部网络访问tomcat服务,则需要打开端口8080
。
运行sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
命令打开80端口。
通常,在生产环境中运行Tomcat时,应使用反向代理。最佳做法是只允许从内部网络访问端口8080
。
如果已经配置Nginx的反向代理,请运行最后两个firewall-cmd命令打开端口80和443。
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
配置Tomcat Web
至此,您应该能够使用Web浏览器访问Tomcat。由于我们尚未创建用户,因此无法访问Tomcat管理界面。
我们可以在tomcat-users.xml
文件中定义Tomcat用户和角色。继续使用vim编辑文件tomcat-users.xml。
创建tomcat Web用户manager-gui和admin-gui,如下所示。确保密码更改为更安全的密码。
sudo vim /opt/tomcat/latest/conf/tomcat-users.xml
默认情况下,Tomcat Web配置为仅允许从本地主机访问。如果您需要外部网络访问Web界面。
请打开/opt/tomcat/latest/webapps/manager/META-INF/context.xml文件并注释以下行。
通常,不建议从任何地方允许访问,因为这会带来安全风险。
如果您只想从指定IP访问Tomcat Web,则无需注释这些xml片段,而是将您的外网IP添加到列表中。
允许的IP地址列表是用竖线|
分隔的列表。您可以添加单个IP地址或使用正则表达式。
假设您的公开IP为41.41.41.41
,而您只想仅从IP访问Tomcat Web。完成后,重新启动Tomcat服务以使更改生效。
sudo systemctl restart tomcat
测试安装
打开浏览器,输入URL ttp://:8080
。Tomcat Web允许您部署,取消部署,启动,停止和重新加载应用程序。
可以打开URL http://:8080/manager/html
找到它。
结论
我们已经向您展示了如何在CentOS 8安装Tomcat 9以及如何访问Tomcat管理界面。
有关Apache Tomcat的更多信息,请访问官方文档页面。如果您遇到问题或有反馈,请在下面发表评论。