1. 程式人生 > >Linux系統的tomcat以daemon模式啟動

Linux系統的tomcat以daemon模式啟動

目錄

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 開啟服務


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