关于部署传统的Dynamic Web项目
現在大部分都是采用maven構建的項目,但是偶爾也會遇到一些較老的項目,采用的是傳統的動態Web項目。
我最近碰到這樣一個項目,項目用的jar包都放在了WEB-INF/lib目錄下。之前的人采用的部署方式是這樣,首先在服務器上面安裝好tomcat,然后將項目編譯后的文件夾放到服務器某目錄,假設在/home/project中,然后通過tomcat配置<Context path="/" docBase="/home/project"? debug="0" reloadable="true"></Context>將編譯后的文件夾映射到tomcat中,啟動tomcat,項目也隨之啟動。
如果有代碼更新,那么先在eclipse中將項目進行編譯,然后本地編譯好的文件和服務器上的文件進行比對,比對軟件是Beyond Compare,如果有不同就將本地的文件覆蓋服務器的文件。
這種部署和更新方式確實很麻煩,這種方式一旦遇到團隊較大或者更新內容較多,無疑是十分麻煩的。
?
后面思考如何自動化部署,首先想到的是jenkins,但是jenkins一般用于maven項目的構建,因而否決了。然后想到不管采用什么方法,肯定是先要通過git將項目從倉庫拉取到服務器,然后再服務器上編譯好,然后再重啟tomcat就可以了。沿著這個思路想到了其實可以采用javac命令編譯項目,然后發現了ant,ant可以構建傳統的項目,現在已經被maven取代了。不過老的項目還是只能用ant構建,解鈴還須系鈴人。在服務器上面安裝好git后,拉取了最近的代碼。然后安裝了ant,編譯好項目。重啟tomcat即可。
至此采用自動化的方式,不是人工手動比對文件是否修改。但是過程依然很多,然后采用shell腳本,將 git拉取代碼?ant編譯項目?tomcat重啟等步驟全部寫在一個shell腳本。每次有代碼提交后,只需要運行這個腳本即可。?
?
后面發現jenkins其實是支持ant的,繞了一圈 :(
后面決定重新采用jenkins,首先配置好jenkins,將ant的build.xml文件放在源碼的根目錄,然后jenkins調用內置的ant執行build.xml的腳本。原本都很順利,但是又出現了一個新的問題,ant的build.xml文件中有個步驟是將編譯好的文件復制到特定文件夾,但是這一步遇到了一個錯誤提示”未知原因“,當時我就在思考可能是權限問題。linux系統對權限控制較好,root用戶和普通用戶的權限區分的很明顯。雖然有思考是這個原因,但是無法驗證,也沒有思考到如何去查詢。后來我將需要復制的文件通過root用戶身份復制一遍,但是jenkins在構建后執行shell腳本時又出現了問題,明確顯示”權限不足“。這樣驗證了我的想法,然后根據提示信息,查詢到了原因。大意是jenkins在執行shell腳本時,會在系統中以一個名為jenkins的用戶去執行腳本,而有些文件需要較高的權限,因而會遇到之前的問題。需要在jenkins配置文件中修改一些配置。然后解決了問題。
經過這一系列的過程,雖然大致能跑通,但是肯定有優化的地方,也或者沒有。但是中間遇到很多問題,網上查詢這些問題花費了較多時間,而且網上的文章參差不齊,找到完全契合你的需求的更加少。其實一般某個軟件或者框架,官網的文檔應該是最優最好。網上查了那么多的資料,感覺學會如果想快速搞懂一個軟件或框架,需要先理清其中的一些概念,然后建立一個大概的模型,然后再學習細節,完善內容。畢竟要學的東西太多,而且這家公司學習的東西,在別家的公司不一定能復用。因此學會如何快速掌握一門新的技能或知識也是急需解決的問題,當然沒有銀彈,需要根據不同的情況制定不同的思考方式。
轉載于:https://www.cnblogs.com/colin220/p/10211489.html
總結
以上是生活随笔為你收集整理的关于部署传统的Dynamic Web项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 19年面试总结
- 下一篇: Android自己搭建一个实用的Shar