1. 程式人生 > >linux中tomcat服務的啟動問題

linux中tomcat服務的啟動問題

今日2018年10月16日,在專案過程中遇到了tomcat奔潰(崩潰?)的問題。最後經過亦師亦友的同行講解,我明白了原因。故來此與各位大佬交流分享一下。總結的話語有什麼問題,還望各位大佬批評指正,感激不盡。 

先下結論吧(後面再去分析結果):在web專案中,容器若是tomcat,禁止使用bin資料夾中的start.sh去啟動tomcat服務。

下面來分析一下原因:

1、在linux中,tomcat服務的所屬使用者是tomcat,然而tomcat使用者是無法登陸linux系統的,顧因此使用別的使用者登陸系統,例如使用root使用者登陸。

 

2、在linux中裝好tomcat服務之後,通常有兩種啟動服務的方式
   第一種是執行bin資料夾中的start.sh指令碼檔案
   第二種是執行命令:systemctl start tomcat
   一般來說,禁止使用指令碼檔案啟動tomcat服務。原因如下:
    1、tomcat是需要用tomcat使用者去執行的。並不是以root使用者去執行
    2、在root許可權下去執行start.sh指令碼,這樣tomcat就是以root使用者去執行
    3、而使用命令:systemctl start tomcat,這樣無論以何種使用者登陸,tomcat服務都是以tomcat使用者去執行

 

3、下面說一下tomcat中webapp資料夾中的專案目錄、war包的問題。
   如上所說,tomcat服務是以tomcat使用者去執行,因此,tomcat資料夾中的所屬使用者以及所屬使用者組都是:tomcat。
   若以root使用者往tomcat資料夾中去增刪war包以及專案目錄,此時上傳的東西的所屬使用者以及使用者組都是root許可權。

 

4、最後說一下為什麼11號啟動的時候是可以的,但是16號不行了。
   11號的時候:路人甲以root許可權登陸,並以指令碼方法啟動了tomcat,此時tomcat的執行使用者是root,所以後面上傳的war包所屬使用者都是root。在root使用者執行的tomcat服務下去執行root使用者的專案目錄,是不會出錯的。
   16號的時候:路人乙以root許可權登陸,用命令:systemctl restart tomcat重啟tomcat服務,此時tomcat服務的執行使用者變成了tomcat,然而之前的專案檔案的所屬使用者仍是:root。用tomcat使用者去執行root許可權的檔案,因此報錯。

 

此致  敬禮

    Demons丶丶

 

2018.11.8補充:

在linux中安裝tomcat時,新建tomcat使用者組,在tomcat使用者組中新建tomcat使用者,用此使用者去跑tomcat服務。