1. 程式人生 > >tomcat的systemctl啟動指令碼

tomcat的systemctl啟動指令碼

最近在做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_HOME
  ExecStart=/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

  

 

 

如果有什麼錯誤,或者問題,歡迎評論討論