在CentOS 7 下用systemctl控制Tomcat 8.5

CentOS系统自带的软件版本比较陈旧,比如Tomcat官方有已经更新到了Tomcat 9,内置的还是Tomcat 7。使用起来十分不便,最近因为项目需求,下载安装了Tomcat 8,特把过程记录如后。

1、安装Java开发运行环境

CentOS 7软件仓库中内置有Java 1.7、1.8,我们可以直接通过yum指令安装。

1.1 安装

# 安装Java 1.8运行环境
sudo yum install java-1.8.0-openjdk

1.2 查看Java版本

java -version

1.3 配置Java环境变量

编辑/etc/profile文件:

sudo vi /etc/profile

在文件的最后加入以下几行,用来设置JAVA_HOME、CLASS_PATH和PATH环境变量:

 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/
 export CLASS_PATH=$JAVA_HOME/lib
 export PATH=$PATH:$JAVA_HOME/bin

2、安装Tomcat

2.1 下载Tomcat 8.5.34

通过wget指令,下载Tomcat 8.5.34:

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz

2.2 解压缩

tar -zxvf apache-tomcat-8.5.34.tar.gz
mv apache-tomcat-8.5.34 /opt/

2.3 配置Tomcat运行参数

在tomcat/bin目录下,新建setenv.sh文件,内容如下:

 # Set Catalina Base
 export CATALINA_BASE=/opt/apache-tomcat-8.5.34/

 # Set Tomcat Pid file
 CATALINA_PID="$CATALINA_BASE/tomcat.pid"

 # Set JAVA Options
 JAVA_OPTS="-server -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=1024m -Xms1024M -Xmx2048M -XX:MaxNewSize=256m"

2.4 创建Tomcat用户并授权

getent group tomcat || groupadd -r tomcat
getent passwd tomcat || useradd -r -d /opt -s /bin/nologin -g tomcat tomcat
chown -R tomcat:tomcat /opt/apache-tomcat-8.5.34

2.5 配置Tomcat

在/usr/lib/systemd目录下,新建一个tomcat.service:

vi /usr/lib/systemd/system/tomcat8.service

内容如下(注意把下面的/opt/apache-tomcat-8.5.34/路径修改为你的Tomcat实际安装路径):

 [Unit]
 Description=Apache Tomcat 8
 After=syslog.target network.target

 [Service]
 Type=forking
 PIDFile=/opt/apache-tomcat-8.5.34/bin/tomcat.pid
 ExecStart=/opt/apache-tomcat-8.5.34/bin/startup.sh
 ExecReload=/bin/kill -s HUP $MAINPID
 ExecStop=/bin/kill -s QUIT $MAINPID
 PrivateTmp=true
 User=tomcat
 Group=tomcat

 [Install]
 WantedBy=multi-user.target

2.6 启用、启动Tomcat服务器

systemctl enable tomcat8   # 启用Tomcat8服务
systemctl start tomcat8    # 启动Tomcat8服务

2.7 打开防火墙

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

3、其他几个小问题

手工下载、解压缩、配置安装的Tomcat,会碰到几个小问题。虽然解决起来不算麻烦,但还是记录下来,方便参考。

3.1 APR 问题

Tomcat启动时提示找不到APR:

info [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in      production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]

主要是缺少APR、tomcat-native,安装上就可以了:

sudo yum install apr apr-util tomcat-native

另外,APR即时安装了,还是没有启用的。你看看Tomcat的启动日志catalina.out,如果里面有http-nio-8080表示使用的还是NIO模式。我们还需要修改Tomcat安装目录的conf/server.xml文件。

将默认值:


修改为:


将默认值:


修改为:


3.2 启动特别慢问题

Tomcat启动的特别慢,需要60多秒,看了下日志信息,发现有如下提示:

22-Sep-2018 14:48:28.359 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID          generation using [SHA1PRNG] took [56,009] milliseconds.

主要是tomcat的session id的生成慢了(通过java.security.SecureRandom生成随机数来实现),在setenv.sh文件中加入以下参数,问题解决:

 # 使用file:/dev/./urandom, 加快启动速度
 export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

你可能感兴趣的:(在CentOS 7 下用systemctl控制Tomcat 8.5)