專案上線之後,版本的迭代必不可少,但是怎麼做才是相對規範,安全的呢?
當然原專案備份是必不可少的了:
首先對原專案打包:tar cvf wechat20150315.tar wechat
對專案版本的迭代,當然是改動越小越好,改動越小越安全越容易把控 , 所以呢,不要用本地環境的專案覆蓋生產環境上的專案。
最好只是對於某乙個jar包的更改,或者某乙個 .class 檔案的更改,確保改動最小。
對於替換 .class ,直接把本地編譯的對應的 .class 檔案替換到生產環境就可以了,然後重啟服務。
對於替換 jar包 ,比如我們更改了 wechat-service.jar 中的乙個檔案,那麼把 wechat-service.jar 解壓, 得到 wechat-service 資料夾。
然後再替換資料夾中對應的 .class 檔案。
然後在把這個更改過的資料夾 wechat-service 打成 jar 包:
jar cvf wechat-service.jar -c wechat-service\ .
(結尾是 "\ ." 反斜槓+空格+英文句號)
這樣新的 jar 就出來了,把這個新打出的 jar 替換成生產環境上對應的 jar,就ok了。
在多人分工合作時,使用該方法較合理。
如果改動很大,如果能保證專案改動只有自己,那麼也是可以覆蓋的,畢竟改動大,乙個乙個替換 .class 檔案的工作量變大,出問題的機率也更大。
如果還有別的部署方法一起分享,比如打成 war包 什麼的。
我在部署時常用的命令:
1,首先開啟我要迭代的專案的log,並監控(當然是在不處理任務的時候把專案停下來了,減少異常資料出現的可能)
tail -f wechat/log/wechat.log
2,再開乙個命令視窗,ps -ef | grep tomcat ,記錄下該 對於的專案程序的 pid (因為要在shutdown時,該程序有可能停止不了,比如pid 為 53245)
ps -ef | grep tomcat
2,監控log日誌,當無人訪問,不執行任務時shutdown
/tomcat/bin/shutdown.sh
3,shutdown之後,檢視是否停止,ps -ef | grep tomcat ,如果該程序依然存在,那麼kill 掉這個程序,不存在就不用kill了。
kill -9 53245
4,這時把更改過的對應檔案 或者 對應的 jar 包,替換到生產環境就好了。然後 start
/tomcat/bin/startup.sh
5,啟動之後,ps -ef | grep tomcat 肯定是有的了,等完全啟動之後,用瀏覽器或者 手機訪問下就可以了。
注意:
1,在專案打包成 jar 時,打包之後的 jar 要放在本地環境跑一跑,避免到生產環境跪掉了。
2,版本的迭代當然也有其他的辦法,也可以放乙個預生產專案(也就是和原生產專案一樣一樣的哦,也可以理解為備份),預生產專案和生產專案同一時刻只能 存活乙個。比如 現在環境是這樣的:生產環境當前狀態start,預生產環境當前狀態stop。現在需要迭代,先對預生產環境更改,預生產環境更改後,先shutdown生產環境,在start預生產環境。當應用跑起來沒問題了,那麼再對生產環境同樣的操作也就放心了。shutdown預生產環境,start生產環境,這樣就會更安全一些了。如果中途預生產環境跪掉了,立刻切換到生產環境。
個人專案部署方案
舊部署方式是在 git 的推送 中執行當前的專案的部署,由於前段專案存安裝依賴,編譯打包等步驟,直接在當前專案重新部署會導致當前服務掛掉或出現問題.時間能持續好幾分種,極其影響體驗.因此準備使用 docker 來優化服務部署.在專案庫增加 推送 hook,位址為 jenkins 內建的 url.在 ...
react專案成型的個人心得
此文是我在react專案搭建後對整個流程的一些環節進行整理和梳理,如有錯誤還請指正。一般目錄結構搭建好後,我們會首先在src中開始工作,因為大多數 都是在src中完成的。這裡要說乙個react專案的構建思想 1 準備工作比較全面的目錄結構如下 關於入口檔案以下是基礎和全面版 2 建立主元件3拆分元件...
liunx下Saleor專案部署心得
第一次使用ubuntu 部署 python專案走了不少彎路,本文用來記錄部署過程中發現的問題以免下次遇到了又給忘了 首先是安裝python3.6 這個參考了這個問題的答案ubuntu下如何安裝最新的python3.6 node.js的安裝應該是最簡單的了參考官方教程就行了 postgresql的安裝...