tomcat的systemctl啟動指令碼
阿新 • • 發佈:2018-11-09
最近在做Tomcat的實驗,順便研究了一下tomcat的啟動指令碼發現一個問題,然後經過多方查閱其他大神的資料,終於解決,現在跟大家分享。
tomcat的啟動指令碼跟別的指令碼有稍微區別的原因是他需要識別JAVA_HOME環境,你僅僅是寫到/etc/profile檔案中是不行的。
在啟動的時候會報錯,我們通過查詢錯誤資訊,顯示如下資訊內容
startup.sh[14716]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
明明定義了JAVA_HOME為什麼顯示沒有JAVA_HOME呢?
因為tomcat自帶的startup.sh指令碼。呼叫的是catalina.sh指令碼,然後catalina.sh指令碼識別的是catalina.bat中的JAVA_HOME環境
所以我們可以直接在catalina.bat中新增JAVA_HOME,但是我覺得都已經寫了啟動指令碼,還需要去別的地方改,這樣的話,反而沒有service的指令碼方便,
然後查了資料發現。可以在systemctl腳奔模組中新增一個Environment來匯入JAVA_HOME,下面將我寫的tomcat的啟動指令碼分享給大家。
vim /usr/lib/systemd/system/tomcat.service
[Unit] Description=Tomcat After=network.target [Service] Type=forking Environment="JAVA_HOME=/usr/local/java" //tomcat啟用時需要識別JAVA_HOMEExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
chmod 600 /usr/lib/systemd/system/tomcat.service
systemctl daemon-reload systemctl start tomcat
此時tomcat即可正常啟動
附加說明一點
因為shutdown.sh指令碼通過tomcat的8005號埠關閉tomcat,如果你的熵池比較小的話,那麼你在啟動tomcat的時候,可能需要一段時間才可以
完全啟用到,可以通過查詢埠,來檢視tomcat有沒有完全啟動
ss -antp | grep java
增加熵池大小的話,可以參考我的另外一篇文章,tomcat啟用是為什麼8005埠沒有被佔用
最後,在贈送一個tomcat的service的啟用指令碼
vim /etc/init.d/tomcat #!/bin/bash #chkconfig: 2345 96 14 export JAVA_HOME=/usr/local/java export CATALINA_HOME=/usr/local/tomcat exec $CATALINA_HOME/bin/catalina.sh $*
[[email protected] ~]# chmod +x /etc/init.d/tomcat [[email protected] ~]# chkconfig --add tomcat [[email protected] ~]# chkconfig tomcat on
如果有什麼錯誤,或者問題,歡迎評論討論