Jsvc 是專為 Java 應用程序開發的一個工具包,其目標是把 Java 應用程序的普通運行轉換為可以配置某個普通用戶以 Unix 守護進程的方式運行。這樣的話,可以很方便地啟動 / 停止應用程序,同時也可以支持開機自啟。開機自啟tomcat是比較重要的,可以保證由於意外而使機器需要重啟時不需要手動重啟tomcat就可以自動恢復服務。
簡而言之,在生產環境中我們需要將tomcat配置成以daemon守護進程來運行,主要有以下幾個原因:
- 以daemon方式運行tomcat可使tomcat不受終端影響,不會因為退出終端而停止運行。
- 可以讓tomcat以普通用戶身份運行。
- 可以讓tomcat在系統啟動時自動運行,且實現非root用戶自運行。
1、在/usr/local/apache-tomcat-7.0.68/bin中有commons-daemon-native.tar.gz 壓縮包(每個版本都有對應的包在tomat包里)
2、解壓commons-daemon-native.tar.gz
tar -zxvf commons-daemon-native.tar.gz
3、解壓完成,出現commons-daemon-1.0.15-native-src文件夾(目錄)
4、 執行configure 文件
cd commons-daemon-1.0.15-native-src/unix ./configure
5、 編譯 (注意不是安裝,這里的是為了編譯出jsvc文件)
make
6、 編譯完成后出現jsvc文件夾,復制jsvc到/usr/local/apache-tomcat-7.0.68/bin目錄下面
cp jsvc ../../
7、避免內存溢出,設置環境變量(添加setenv.sh,內容如下)該文件放在bin下邊,跟daemon.sh文件同級
#add tomcat pid CATALINA_PID="$CATALINA_BASE/tomcat.pid" #add java opts JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx2048M -XX:MaxNewSize=256m"
8、/usr/local/apache-tomcat-7.0.68/bin/daemon.sh start啟動tomcat
9、配置tomcat為系統服務,並實現自動啟動,首先修改/usr/local/apache-tomcat-7.0.68/bin目錄下daemon.sh腳本,在首行 #!/bin/sh 的下一行添加服務配置信息
# chkconfig: 2345 20 80
# description: Startup script for the Tomcat 7.0.65 Server
10、找到 test ".$TOMCAT_USER" = . && TOMCAT_USER= 這一行,在前面加上jdk和tomcat環境配置
JAVA_HOME=/usr/softwares/jdk1.6.0_45 CATALINA_HOME=/usr/softwares/apache-tomcat-7.0.68 test ".$TOMCAT_USER" = . && TOMCAT_USER=wyan
參數說明
chkconfig 的2345表示默認服務級別,啟動順序為20,關閉順序為80
TOMCAT_USER=wyan,以wyan用戶來執行tomcat程序
11、把tomcat添加成系統服務進行啟動,在上面的配置正確后,要將daemon.sh添加成為服務就非常簡單了,只需要創建一個軟鏈到/etc/rc.d/init.d/目錄中即可(此步驟需要切換root,並且路徑要為全路徑)
ln -s /usr/softwares/apache-tomcat-7.0.68/bin/daemon.sh /etc/rc.d/init.d/tomcat7
注意:切換到root用戶,然后修改連接歸屬用戶
chown -R wyan:wyan /etc/rc.d/init.d/tomcat7
然后可以切換到wyan用戶進行啟動停止測試
1.啟動:
service tomcat7 start
2.停止:
service tomcat7 stop
12、添加tomcat7服務自動啟動,並查看是否添加成功
chkconfig --add tomcat7 #添加tomcat服務
chkconfig --list tomcat7 #查看服務是否添加成功
然后重啟linux發現tomcat會自動啟動成功,注意守護進程是root的,工作進程是wyan的,這一點要知曉
問題記錄:把日志清除后,重啟linux,tomcat隨系統自動啟動,發現日志中catalina-daemon.out日志文件所屬用戶是root,這個應該是正常的
如果要把這個文件所屬用戶改成wyan,操作方式是保留catalina-daemon.out文件,並且chown -R wyan:wyan catalina-daemon.out執行,重啟后文件所屬用戶仍然是wyan
但是如果刪除文件后,重啟,文件所屬用戶又會變成root,所以catalina-daemon.out文件盡量不要刪除;以后再找完美解決方案
遇到問題描述:
在使用了daemon方式啟動后,發現應用打印出的日志為亂碼,之前的啟動方式不為亂碼,在網上找了很多方法,解決方式都是在daemon.sh文件中添加字符集,最后通過添加如下配置解決:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
添加配置最好添加在之前配置的代碼下邊挨着,方便維護;(問題解決原理就是這里配置的字符集與linux的字符集相同,查看linux字符集命令:echo $LANG)