歡迎您光臨本站 註冊首頁

Linux部署Tomcat發佈項目過程中各種問題及解決方法

←手機掃碼閱讀     kyec555 @ 2020-04-30 , reply:0

部署項目到項目現場測試環境

JDK1.8

Tomcat8.5

Maven打包好的war

Linux-----Centos

不知道誰給現場的Tomcat,將其上傳到Linux平臺******目錄,並且進行解壓。直接啟動

圖1:

問題1

因為是第一次啟動Tocmat,沒有日誌文件。所以直接啟動 ./startup.sh。後續可以使用以下命令動態的查看日誌信息。執行後提示 沒有執行權限

./startup.sh & tailf ../logs/catalina.out

問題分析: .sh可執行文件 當前用戶都不具備權限

問題解決: 使用命令:chmod u+x *.sh。在tomcat/bin目錄下執行

命令分析: 表示對當前目錄下的所有.sh文件的所有者增加可執行權限。

chmod是權限管理命令change the permissions mode of a file的縮寫

u 代表所有者;

x 代表執行權限;

“+” 表示增加權限。

也可以單獨指定一個文件 比如:chmod u+x abc.sh

然後用./startup.sh啟動。

圖2:

問題2

啟動之後報錯找不到 *****目錄下的文件。

問題分析: 此問題出現是因為在 tomcat 的server.xml文件中配置了多個 Context環境。但是在指定的目錄下並沒有項目部署。

問題解決: 刪除server.xml文件中所有的Context。刪除 tomcat 目錄webapps以及wtpwebapps 下所有部署過的項目。此時只是單獨啟動一個 ebank。啟動成功,訪問8080成功。

圖3:

問題3

在 tomcat 服務器 webapps上添加Maven打包好的war包。之後進行啟動。但是報錯端口被佔用。

問題分析: 這個操作是在沒有暫停之前那一步操作進行的。所以導致端口被佔用。可是直接暫停tomcat之後還是報端口被佔用

問題解決: 採用暴力一點的方式:

查詢ebank進程ID:ps aux|grep tomcat

直接殺掉進程:kill-9 PID 殺掉tomcat的進程,之後可以正常的啟動圖4:

問題4

此時雖然可以正常啟動,但是報錯:java.lang.OutOfMemoryError: PermGen space(提示內存溢出,屬於永久區的內存溢出)。

問題分析: Tomcat的內存參數之前並沒有設置過,當前部署的項目佔用內存較大加載的class較多。導致永久區內存不夠使用。

問題解決: 將tomcat 的bin 下 catalina.sh文件複製一份進行修改,將原先的進行備份。在catalina.sh文件中 找到cygwin=false位置的前面 添加參數,注意引號要帶上

JAVA_OPTS="-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m"

將修改後的文件替換到tomcat/bin下。

圖5:

圖6:

問題5

此時再次啟動,但是提示找不到catalina.sh文件?

問題分析: 因為在startup.sh執行文件中會調用catalina.sh執行文件。從而啟動Tomcat服務。後續使用命令 ll 查看bin目錄下。發現問題此時的catalina.sh 文件不在是一個可以執行的文件了。(不是綠色的)問題解決: 再次使用chmod u+x catalina.sh 賦予可以執行的權限。

圖7:

圖8:圖中以hello.sh 舉個栗子。(顯示為黑色,與catalina.sh 不同)



問題6

啟動成功,但是在瀏覽器確訪問不到項目,訪問8080成功。

問題分析: 在Tomcat的webapps目錄下發現,經過Tocmat的解壓縮將各個War包解壓後 都帶有版本號(war包是Maven打包生成的,帶有版本號)。瀏覽器訪問的正確地址是不帶版本號的問題解決: 刪除項目,重新命名War包。再次啟動。到此為止全部成功圖8:

額外使用的命令

清空日誌:

echo -n "" > ../logs/catalina.out 固定語法:echo -n "" >

查看日誌大小:

du -h ../logs/catalina.out 固定語法:du -h >



[kyec555 ] Linux部署Tomcat發佈項目過程中各種問題及解決方法已經有225次圍觀

http://coctec.com/docs/linux/show-post-232236.html