Linux系統的tomcat以daemon模式啟動
目錄
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.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
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