今日2023年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使用者去執行
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服務。
Linux啟動Tomcat服務
昨天機器重啟之後發現系統頁面無法啟動,發現原因是tomcat無法啟動,之後進入tomcat的安裝目錄使用bin startup.sh啟動tomcat,隨後發現頁面還是無法訪問。後來發現是沒有啟動mysql 解決方案 啟動mysql etc rc.d init.d service mysqld sta...
tomcat中配置https服務
在conf server.xml中,配置乙個 其中,scheme https 宣告此服務是https服務,keystorefile conf keystore 指定了keystore檔案的路徑,keystorepass指定了密碼。將準備好的keystore檔案放至指定的目錄下。啟動tomcat,就可...
Linux中tomcat伺服器安裝配置
mkdir soft yum y install lrzsz 解壓tomcat tar zxvf apache tomcat 7.0.92.tar.gz 將tar.gz的包移動到 software目錄 mv apache tomcat 7.0.92.tar.gz software 檢視進入目錄 cd...