1 序言
Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为可以配置某个普通用户以 Unix 守护进程的方式运行。这样的话,可以很方便地启动 / 停止应用程序,同时也可以支持开机自启。开机自启tomcat是比较重要的,可以保证由于意外而使机器需要重启时不需要手动重启tomcat就可以自动恢复服务。
简而言之,在生产环境中我们需要将tomcat配置成以daemon守护进程来运行,主要有以下几个原因:
以daemon方式运行tomcat可使tomcat不受终端影响,不会因为退出终端而停止运行。
可以让tomcat以普通用户身份运行。
可以让tomcat在系统启动时自动运行。
2 安装jsvc
Tomcat 安装包的 bin 子目录下就包含了 Jsvc 工具包的源码,整个建立过程很方便,如下。
假设java8的安装目录是 /usr/softwares/jdk1.8.0_181
tomcat下载地址,下载自己需要的版本:https://tomcat.apache.org/download-80.cgi
#解压安装tomcat8.5
cd /usr/local/service/tomcat
tar -xzvf apache-tomcat-8.5.46.tar.gz
#解压安装tomcat中的jsvc
cd apache-tomcat-8.5.46/bin
tar -xzvf commons-daemon-native.tar.gz
cd commons-daemon-1.1.0-native-src/unix/
./configure --with-java=/usr/java/jdk1.8.0_65
make
cp jsvc /usr/local/service/tomcat/apache-tomcat-8.5.46/bin
3 添加开机自启服务
3.2 centos系统为准
默认当前目录在 /usr/softwares/apache-tomcat-8.5.34/bin
#说明:在首行 #!/bin/sh 的下一行添加服务配置信息
# chkconfig: 2345 20 80
# description: Startup script for the Tomcat 8.5 Server
#说明:找到 test ".$TOMCAT_USER" = . && TOMCAT_USER= 这一行,在前面加上jdk和tomcat环境配置
JAVA_HOME=/usr/java/jdk1.8.0_65
CATALINA_HOME=/usr/local/service/tomcat/apache-tomcat-8.5.46
test ".$TOMCAT_USER" = . && TOMCAT_USER=root
参数说明
chkconfig 的2345表示默认服务级别,启动顺序为20,关闭顺序为80
TOMCAT_USER=root,以root用户来执行tomcat程序
3.2.2 添加服务
centos系统支持 chkconfig 命令添加/删除服务
cp daemon.sh /etc/init.d/tomcat
#添加tomcat服务
chkconfig --add tomcat
chkconfig --list tomcat #查看服务是否添加成功
关于chkconfig命令比较简单,网上也随便可以找到详情,这里就不多说了。
3.2.3 开启服务
#开启tomcat服务
service tomcat start
#关闭tomcat服务
service tomcat stop
#重启tomcat服务
service tomcat restart
#查看tomcat服务的状态
service tomcat status
最后,重启机器,再查看下该进程就可以知道是否开机自启动了。
reboot
ps -aux|grep tomcat
第二种方式(未验证)
方式二:systemctl服务方式(新方式)
以前都用service命令管理软件,而centos7.x引入新的方式来管理系统进程,使用systemctl替换了service命令,当然service方式依旧可以继续使用。systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。systemctl的使用可参考CentOS7中systemctl的使用
7.创建开机启动服务文件
创建一个名为tomcat.service的系统服务脚本
#创建一个名为tomcat.service的系统服务脚本
vim /usr/lib/systemd/system/tomcat.service
写入以下内容
[Unit]
Description=Apache Tomcat
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/tomcat
ExecStart=/usr/local/tomcat/bin/daemon.sh start
ExecStop=/usr/local/tomcat/bin/daemon.sh stop
User=tomcat
Group=tomcat
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置好后,要刷新一下
#重新加载一下配置。每次改动后也要重新加载
systemctl daemon-reload
8.设置开机启动,并启动服务
#设置允许开机自启动
systemctl enable tomcat
#启动服务
systemctl start tomcat
#查看状态
systemctl status tomcat
#查看服务是否激活
systemctl is-active tomcat
##其它命令
# 禁止开机启动
systemctl disable tomcat
# 停止服务
systemctl stop tomcat
# 重启服务
systemctl restart tomcat
# 查看所有已启动的服务
systemctl list -units --type=service