目录
1 序言
2 安装jsvc
3 添加开机自启服务
3.1 debian系统为准
3.1.1 对 daemon.sh 脚本做修改:
3.1.2 添加服务
3.1.3 开启服务
3.2 centos系统为准
3.2.1 对 daemon.sh 脚本做修改:
3.2.2 添加服务
3.2.3 开启服务
Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为可以配置某个普通用户以 Unix 守护进程的方式运行。这样的话,可以很方便地启动 / 停止应用程序,同时也可以支持开机自启。开机自启tomcat是比较重要的,可以保证由于意外而使机器需要重启时不需要手动重启tomcat就可以自动恢复服务。
简而言之,在生产环境中我们需要将tomcat配置成以daemon守护进程来运行,主要有以下几个原因:
Tomcat 安装包的 bin 子目录下就包含了 Jsvc 工具包的源码,整个建立过程很方便,如下。
假设java8的安装目录是 /usr/softwares/jdk1.8.0_181
#解压安装tomcat8.5
cd /usr/softwares/
tar -xzvf apache-tomcat-8.5.34.tar.gz
#解压安装tomcat中的jsvc
cd apache-tomcat-8.5.34/bin
tar -xzvf commons-daemon-native.tar.gz
cd commons-daemon-1.1.0-native-src/unix/
./configure --with-java=/usr/softwares/jdk1.8.0_181
make
cp jsvc /usr/softwares/apache-tomcat-8.5.34/bin
默认当前目录在 /usr/softwares/apache-tomcat-8.5.34/bin
#说明:找到 test ".$TOMCAT_USER" = . && TOMCAT_USER= 这一行,在前面加上jdk和tomcat环境配置
JAVA_HOME=/usr/softwares/jdk1.8.0_181
CATALINA_HOME=/usr/softwares/apache-tomcat-8.5.34
test ".$TOMCAT_USER" = . && TOMCAT_USER=root
参数说明:
TOMCAT_USER=root,以root用户来执行tomcat程序
debian系统支持 update-rc.d 命令添加/删除服务
#若/etc/init.d/tomcat已存在,则需要先删除
vim /etc/init.d/tomcat
#!/bin/bash
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: tomcat 8.5 auto start
### END INIT INFO################################################
tomcat_daemon=/usr/softwares/apache-tomcat-8.5.34/bin/daemon.shstart() {
echo -n "Starting tomcat: "
${tomcat_daemon} start
echo "tomcat start ok"
}stop() {
echo -n "Shutdown tomcat: "
${tomcat_daemon} stop
echo "tomcat stop ok"
}#how we were called
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esacexit 0
参数说明
Default-Start 默认在这些级别,启动
Default-Stop 默认在这些级别,停止
#授权
chmod 777 /etc/init.d/tomcat
#添加tomcat服务,以默认的级别defaults(即2,3,4,5启动;0,1,6停止),且启动顺序为40,关闭顺序为80
update-rc.d tomcat defaults 40 80
科普update-rc.d:
在用这个命令前,需要把执行文件放到 /etc/init.d 目录下,注意,若此服务已经存在想要修改,建议是先删除了再重新添加。
添加服务的命令:
update-rc.d 执行文件名 start 20 2 3 4 5 . stop 80 0 1 6 .
相当于
update-rc.d 执行文件名 defaults 20 80
删除服务的命令:
update-rc.d -f 执行文件名 remove
查看开机自启动服务是否添加成功,可以查看 /etc/rc*.d 目录下是否存在这些执行文件名的软链接。
其实服务级别0,1,2,3,4,5,6在目录 /etc 下有对应的文件目录:rc0.d,rc1.d,rc2.d,rc3.d,rc4.d,rc5.d,rc6.d。
若设置在相应级别下启动,则该级别目录下会有以S开头(start的意思)的执行文件名;若设置在相应级别下停止,则该级别目录下会有以K开头(kill的意思)的执行文件名。
查看服务的命令:
ls /etc/rc*.d
#开启tomcat服务
service tomcat start
#关闭tomcat服务
service tomcat stop
#重启tomcat服务
service tomcat restart
#查看tomcat服务的状态
service tomcat status
最后,重启机器,再查看下该进程就可以知道是否开机自启动了。
reboot
ps -aux|grep tomcat
默认当前目录在 /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/softwares/jdk1.8.0_181
CATALINA_HOME=/usr/softwares/apache-tomcat-8.5.34
test ".$TOMCAT_USER" = . && TOMCAT_USER=root
参数说明
chkconfig 的2345表示默认服务级别,启动顺序为20,关闭顺序为80
TOMCAT_USER=root,以root用户来执行tomcat程序
centos系统支持 chkconfig 命令添加/删除服务
cp daemon.sh /etc/init.d/tomcat
#添加tomcat服务
chkconfig --add tomcat
chkconfig --list tomcat #查看服务是否添加成功
关于chkconfig命令比较简单,网上也随便可以找到详情,这里就不多说了。
#开启tomcat服务
service tomcat start
#关闭tomcat服务
service tomcat stop
#重启tomcat服务
service tomcat restart
#查看tomcat服务的状态
service tomcat status
最后,重启机器,再查看下该进程就可以知道是否开机自启动了。
reboot
ps -aux|grep tomcat