2012-03-31 198 views
14

在過去的10年左右,我只好Web應用程序部署到了tomcat無數次的機會。我還寫了幾個腳本試圖自動執行,但從未設法使其完全自動化。部署戰爭到Tomcat

這裏是問題。我正在嘗試部署一場新的戰爭,與我的tomcat的webapps中的現有戰爭同名。

選項1:簡易方法 - 只要複製戰爭和等待它更新展開的目錄。這有時工作。很多時候 - 爆炸目錄沒有在合理的時間內更新。
選項2:通方法 - 停止Tomcat,刪除所有的戰爭和臨時文件。複製戰爭並啓動tomcat。這通常包括停止tomcat,等待一段時間 - 然後檢查過程是否仍然存在並將其殺死。
方案3:手動的方法 - 這可能是驚人的,但我發現它的工作很多次 - 複製戰,等待更新的展開的目錄,一旦它 - 重新啓動Tomcat。如果沒有 - 你可以嘗試刪除臨時工作文件,這有時會有所幫助。

我也嘗試了很多選項 - 以不同的順序和動作的子集 - 重新啓動,停止,刪除戰爭,刪除爆炸,刪除本地主機上下文,刪除本地主機工作目錄,複製戰爭,睡眠,比較日期,問禮貌地tomcat重新加載等等。沒有任何東西可以工作。

這可能是我做錯了事,但我聽到過很多人的相同經歷,所以我在這裏得到一些建議 - 你說什麼?向tomcat部署新戰爭的最佳方式是什麼?

謝謝!

+0

這是什麼問題?停機?這是DEV/PREPROD /什麼或PROD?你需要在關機/重啓週期中保持會話嗎? – TacticalCoder 2012-03-31 02:54:34

+0

嘿@krakover如果你對其中一個答案感到滿意,你會介意將其中一個接受爲 – systemkern 2015-01-20 13:25:59

回答

0

我只使用Tomcat的管理工具來停止進程,刪除它,並安裝新的戰爭。十分簡單。

9

我傾向於選擇2.如果有一個項目我正在IDE上工作,特別是在附加了調試器的情況下,我發現事情最終會開始變得混亂。在我發現清理所有東西使問題消失之前,可能要追趕一個小時的紅鯡魚。然後,它是好的,有一個側面的腳本,我可以偶爾推出清除了一切:

  • 關機力與60年代的超時
  • 明確了日誌,溫度,工作目錄
  • 清除掉WebApp文件夾
  • 在新的戰爭文件
  • 複製從生成位置
  • 爆發新戰爭的文件
  • 如果必要的話,運行awk腳本定製的屬性文件機器特定值(因此前面的前plode)
  • 啓動與CATALINA_PID環境變量設置(很好地實現關機力)

通常的東西關機。如果沒有,那麼通常會有一個後臺線程啓動,但沒有關閉掛鉤(例如memecached客戶端),需要被追捕。通常情況下,在新戰爭中下降似乎很有效。但是,如果在開發環境中,執行完全重啓重啓的腳本很好。

+1

+1,以便管理所有這些,唯一可靠的,可重複的方法去 – Brian 2012-03-31 00:32:01

+0

我已經有tomcat編寫它的pid在啓動和關閉時刪除,所以我可以告訴它何時通過腳本關閉而不會猜測。這是一種痛苦(我不記得如何去做),但它是值得的。我的部署100%自動化。 – 2014-11-26 01:08:57

2

我上傳的戰爭我的主目錄,CD到/ usr /本地/ Tomcat中,然後運行以下命令:

bin/shutdown.sh 
rm webapps/ROOT.war 
rm -rf webapps/ROOT 
cp ~/ROOT.war webapps 
bin/startup.sh 

很容易的實現自動化,但我一直懶得(或不足夠懶惰)到目前爲止做到這一點。

+1

如果將「cp」替換爲「mv」,它將部署得更快...... – Kdeveloper 2012-04-01 20:23:27

10

,你可以很容易地在shell腳本,捲曲

在Tomcat 6自動完成:

curl --upload-file deployme.war "http://tomcat:[email protected]:8088/manager/deploy?path=/deployme&update=true" 
在Tomcat
curl -T "deployme.war" "http://tomcat:[email protected]:8080/manager/text/deploy?path=/deployme&update=true" 

或通過幾乎任何porgramming語言。我發佈了一個基於java的解決方案here