天天看點

把Tomcat配置為系統服務

yum指令安裝Tomcat後發現是Tomcat7,現在Tomcat9都出來了,為了用上最新版本,就去官網下了壓縮包自己解壓安裝了Tomcat9.0.12.但自己安裝的操作起來不友善。本來準備把$CATALINA_HOME/bin/shartup.sh放到開機啟動的腳本裡面,突然想起來可以配置成系統服務呀,這樣不是更友善嗎。然而,事情并沒有那麼簡單,畢竟我什麼都不懂。

  1. 找到了完美的配置。

    在這裡找到了一篇博文,感覺很完美地解決了我的問題,我都已經想好了,弄完之後貼個連結,标個轉載,又是一篇部落格。

  2. 不太對呀

    然而,執行systemctl start tomcat.service時報錯,天哪,用systemctl status tomcat.servide發現錯誤是Failed to read PID from file /usr/local/tomcat9/tomcat.pid: Invalid argument。

  3. 又有辦法了

    在百度上搜了一下,看到别人配置Nginx時也有類似的錯誤,解決方法是要麼把服務配置檔案中的PIDFile那一行删了,要麼是在配置檔案中加一行,ExecStartPost=/bin/sleep 0.1,這樣是在啟動腳本執行之後等0.1秒,然後再去讀.pid檔案。直接寫在服務配置檔案裡面或者/etc/systemd/system/tomcat.service.d/override.conf裡面都可以,後面的這個檔案也會在服務調用時生效,覆寫服務配置檔案。

  4. 到底行不行

    按照上面的改了服務配置檔案之後執行systemctl daemon-reload。然後systemctl start tomcat,結果還是不行,檢視原因說PID file /usr/local/tomcat9/tomcat.pid not readable (yet?) after start-post.還是.pid檔案的原因,看了一下,竟然沒有那個檔案,那用touch建立一個吧。然而還是不行。看别人的pid檔案都在/var/run/裡面,要不試試,還是不行。

  5. 原來是這麼回事

    實在是沒辦法呀,我覺得既然人家寫了pid檔案,最好還是别删,想想辦法弄好,不好意思,真的弄不好。删了pid檔案那一行,果然就可以了。

    又去看了一下,原來這個pid檔案不是systemd生成的,它是對應的守護程序自己生成的,而且用處不大,現在也很少用了,Tomcat啟動後并不會去生成對應的pid檔案,是以一直不行,一直報錯。放心地大膽地去删掉就可以了。

  6. 一點補充

    start之後的狀态是Active: active (running),但是stop之後的狀态是Active: failed (Result: exit-code),原來Tomcat停止成功的狀态是143,在服務配置檔案裡面加一行SuccessExitStatus=143。現在stop之後的狀态是Active: inactive (dead)。

  7. 來個總結

    網上搜尋的時候很難有百分百合适的結果,看着差不多就耐心點看完,随便瞟一眼就又去找其他的,這樣很沒效率。

繼續閱讀