目的:Centos7 Daemon.sh运行Tomcat守护
环境:
系统:Centos 7.5
环境:x64,jdk1.8.0_181
需求:
- 业务服务依赖Tomcat.
- 需要Tocam以守护进程方式留存系统中,无人值守模式。
方法步骤:
1. 以Tomcat包中的jsvc工具包以unix守护进程方式启停Tomcat
1.1 下载Tomcat,官网地址:http://tomcat.apache.org/ ,下载所需要的版本。如图,以8.5.37为例
1.2 由于编译jsvc需要java环境,所以需要提前安装jdk,这里就不做安装介绍了。
1.3 编译jsvc, 将下载的zip包放到指定目录下(示例目录为/home/cts/tomcat/)
unzip apache-tomcat-8.5.37.zip
cd ./apache-tomcat-8.5.37/bin/
tar -zxvf commons-daemon-native.tar.gz
cd commons-daemon-native/unix/
./configure
make
cp jscv /home/cts/tomcat/apache-tomcat-8.5.37/bin/
补充说明:若没有配置JAVA_HOME,可以手动指定(./configure --with-java=jdk路径)
1.4 测试使用jsvc启动tomcat
1.4.1 更改damon.sh部分内容:
vim /home/cts/tomcat/apache-tomcat-8.5.37/bin/daemon.sh
添加如下改动:
1. 在首行 #!/bin/sh 的下一行添加一条服务配置信息
# chkconfig: 2345 20 80
补充说明:注意#不能去掉。#chkconfig 的2345表示默认服务级别,启动顺序为20,关闭顺序为80。
2. 在代码最开始位置添加JAVA_HOME和CATALINA_HOME路径,如下
#modify JAVA_HOME path and CATALINA_HOME path。
JAVA_HOME=/home/jdk1.8.0_181
CATALINA_HOME=/home/cts/tomcat/apache-tomcat-8.5.37
echo "JAVA_HOME":$JAVA_HOME
echo "CATALINA_HOME":$CATALINA_HOME
3. 更改TOMCAT_USER
找到 test ".$TOMCAT_USER" = . && TOMCAT_USER= 这一行,在等号后面加上用户
如:test ".$TOMCAT_USER" = . && TOMCAT_USER= root
补充说明:
如果用root用户启动,也可以不指定,在start模块里面去掉-user $TOMCAT_USER \
4.指定日志位置,也可以默认。
找到test ".$CATALINA_OUT" = . && CATALINA_OUT=这行,更改路径。
1.4.2 执行daemon.sh,并测试效果
1. 执行
chmod +x daemon.sh
./daemon.sh start
2. 测试tomcat是否正常运行,如有问题可查看catalina-daemon.out日志对应解决。
访问http://ip:8080查看tomcat是否运行
3. 测试守护进程
netstat -apn | grep 8080
kill -9 占用8080的进程
稍等片刻,看tomcat是否会自动开起来。
2. 将daemon.sh启动脚本添加到到服务,开机自启动**
1. 添加服务
cp daemon.sh /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig --list tomcat #查看服务是否添加成功
2. 使用服务
#开启tomcat服务
service tomcat start
关闭tomcat服务
#service tomcat stop
#重启tomcat服务
service tomcat restart
#查看tomcat服务的状态
service tomcat status
3. 测试开机自启动, ps查看是否自启动
reboot
ps -aux | grep tomcat
ps:
1. 在daemon.sh start执行不成功的时候,可以尝试一下daemon.sh run试试,看脚本是否ok。若run可以开启tomcat,比较多的情况是start模块里面的这行代码导致 -user $TOMCAT_USER -user $TOMCAT_USER \ 。解决方式是去掉这行,然后保存运行。