Linux系统的tomcat以daemon模式启动

mac2024-05-12  35

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

#解压安装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

3 添加开机自启服务

3.1 debian系统为准

默认当前目录在 /usr/softwares/apache-tomcat-8.5.34/bin

3.1.1 对 daemon.sh 脚本做修改:

#说明:找到 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程序

3.1.2 添加服务

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.sh start() {     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}" esac exit 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

 

3.1.3 开启服务

#开启tomcat服务 service tomcat start #关闭tomcat服务 service tomcat stop #重启tomcat服务 service tomcat restart #查看tomcat服务的状态 service tomcat status

最后,重启机器,再查看下该进程就可以知道是否开机自启动了。

reboot ps -aux|grep tomcat

3.2 centos系统为准

默认当前目录在 /usr/softwares/apache-tomcat-8.5.34/bin

3.2.1 对 daemon.sh 脚本做修改:

#说明:在首行 #!/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程序

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

PS:若是非root启动的tomcat项目中有上传文件的功能,会有文件上传不上去的情况,需要把上传目录所属的用户和组改成与tomcat安装目录一致才行。

我遇到的报错:

java.io.FileNotFoundException: /develop/apache-tomcat-8.0.48/work/Catalina/localhost/chat/upload_69c818da_22b3_41b2_b042_941fc7281223_00000004.tmp (No such file or directory)

其他人遇到的报错:

Processing of multipart/form-data request failed. /usr/local/apache-tomcat-9.0.4/work/Catalina/localhost/EDoctor/upload_50259820_2122_4f77_af6d_17f1fd261a13_00000001.tmp (Permission denied)

 

最新回复(0)