如何基于RHEL 9.x部署TomCat?

Tomcat

1. 概念部分

一直以来都觉得Tomcat以root身份运行非常不安全,故研究Tomcat如何以普通用户身份运行,以下是参考网络上的一些配置实现Tomcat以daemon方式运行于CentOS 6&7系统下面。
另外,由于systemctl的功能,我们可以使用另外一种方法部署,详细请参阅比较新的文章,

如何基于RHEL 9.x部署TomCat之二?

2 实操部分

2.1 系统环境

2.1.1 系统信息

OS = RHEL 8.x x86_64
IP Address = 10.168.0.157
Host Name = any.cmdschool.org

2.1.2 配置编译环境和依赖包

yum -y install gcc gcc-c++ make expat-devel
yum install -y libcap-devel

2.1.3 关闭SELinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.1.4 配置防火墙

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.2 软件配置

2.2.1 安装JDK

请参阅以下文章安装JDK,
http://www.cmdschool.org/archives/397

2.2.2 下载安装包

cd ~
wget http://apache.fayea.com/tomcat/tomcat-9/v9.0.0.M13/bin/apache-tomcat-9.0.0.M13.tar.gz

2.2.3 配置运行用户

groupadd  -g 91 tomcat
useradd -u 91 -g 91 -d /usr/tomcat  -s /sbin/nologin tomcat

2.2.4 部署tomcat目录

mkdir /usr/tomcat
chown root:tomcat -R /usr/tomcat
chmod 770 -R /usr/tomcat/

2.2.5 配置安装目录

cd ~
tar -xf apache-tomcat-9.0.0.M13.tar.gz
mv apache-tomcat-9.0.0.M13 /usr/tomcat/
chown root:tomcat -R /usr/tomcat
chmod 770 -R /usr/tomcat/
ln -s /usr/tomcat/apache-tomcat-9.0.0.M13/logs/ /var/log/tomcat

2.3 配置Tomcat

2.3.1 配置环境变量

echo 'JAVA_HOME=/usr/java/jdk1.8.0_65' > /usr/tomcat/apache-tomcat-9.0.0.M13/bin/setenv.sh
echo 'JRE_HOME=${JAVA_HOME}/jre' >> /usr/tomcat/apache-tomcat-9.0.0.M13/bin/setenv.sh
echo 'CATALINA_HOME=/usr/tomcat/apache-tomcat-9.0.0.M13' >> /usr/tomcat/apache-tomcat-9.0.0.M13/bin/setenv.sh
echo 'CATALINA_BASE=${CATALINA_HOME}' >> /usr/tomcat/apache-tomcat-9.0.0.M13/bin/setenv.sh
echo "JAVA_OPTS='-server -Xms2048m -Xmx4096m -Xss512k'" >> /usr/tomcat/apache-tomcat-9.0.0.M13/bin/setenv.sh
echo 'TOMCAT_USER=tomcat' >> /usr/tomcat/apache-tomcat-9.0.0.M13/bin/setenv.sh

2.3.2解压daemon工具包

cd /usr/tomcat/apache-tomcat-9.0.0.M13/bin/
tar -xf commons-daemon-native.tar.gz

2.3.3 编译daemon工具

cd commons-daemon-1.0.15-native-src/unix
./configure
make

2.3.4 部署daemon工具

cp jsvc /usr/tomcat/apache-tomcat-9.0.0.M13/bin/

2.3.5 手动测试服务启停

/usr/tomcat/apache-tomcat-9.0.0.M13/bin/daemon.sh start
/usr/tomcat/apache-tomcat-9.0.0.M13/bin/daemon.sh stop
netstat -antp

2.3.6 配置tomcat服务

vim /usr/lib/systemd/system/tomcat.service

创建如下配置,

[Unit]
Description=Apache tomcat manager
Wants=network.target
Before=network.target
After=network-pre.target
Documentation=https://tomcat.apache.org

[Service]
Type=forking
ExecStartPre=/bin/sh -c 'chown root:tomcat -R /usr/tomcat;chmod 770 -R /usr/tomcat'
ExecStart=/bin/sh -c '/usr/tomcat/apache-tomcat-9.0.0.M13/bin/daemon.sh start'
ExecStop=/bin/sh -c '/usr/tomcat/apache-tomcat-9.0.0.M13/bin/daemon.sh stop'
PIDFile=/usr/tomcat/apache-tomcat-9.0.0.M13/logs/catalina-daemon.pid
Restart=on-success

[Install]
WantedBy=multi-user.target

修改完脚本后,你需要使用如下命令重载服务,

systemctl daemon-reload

你可使用如下命令控制服务和查询状态,

systemctl start tomcat.service
systemctl status tomcat.service
systemctl stop tomcat.service
systemctl restart tomcat.service

测试完毕,建议你使用如下命令设置服务自动启动,

systemctl enable tomcat.service

2.3.7 浏览器测试

http://10.168.0.157:8080/

参阅文档:
=============================
http://blog.csdn.net/bebabyron/article/details/11852317
http://www.liaoshixiong.cn/java/centos7-tomcat-daemon.html
http://www.xuebuyuan.com/1361441.html
http://blog.csdn.net/centre10/article/details/50639693

没有评论

发表回复

Tomcat
如何配置Tomcat的日志轮转?

1 前言 一个问题,一篇文章,一出故事。 笔者之前为Tomcat日志自动分割写过一个脚本,最近发现如 …

Tomcat
如何用JSSE配置Tomcat 9 HTTPS?

1 前言 一个问题,一篇文章,一出故事。 笔者需要在Tomcat生产环境启用Tomcat的HTTPS …

Tomcat
如何用OpenSSL SSL/TLS配置Tomcat 9 HTTPS?

1 前言 一个问题,一篇文章,一出故事。 笔者需要在Tomcat生产环境启用Tomcat的HTTPS …