1. 程式人生 > >Java Web專案檔案更新部署的優化方案

Java Web專案檔案更新部署的優化方案

現狀

專案已部署在生產環境的WebSphere伺服器叢集下,但公司並沒有在生產環境下整合專案自動構建工具Jenkins。

但是,由於專案穩定性的需要,又不能進行全量部署或增量部署。
注:如果隨意進行全量部署,可能會將線上已經穩定的程式碼替換掉,變成測試環境中未經嚴格檢驗的程式碼。

傻瓜式部署

所以,當有業務邏輯發生變更時,為了謹慎起見,只能替換髮生變動的位元組碼檔案或jsp檔案。
其中,假設我們需要替換的檔案是HelloWorld.class,部署的專案位於/opt/IBM路徑下,那麼需要執行的Linux命令如下:
找出HelloWorld.class所在路徑並進入:

find /opt/IBM/ -name 'HelloWorld.class'
cd /opt/IBM/foundpath/

檢查HelloWorld.class的最後修改日期:

ll HelloWorld.class

上傳最新的HelloWorld.class檔案:

rz -y

再次檢查:

ll HelloWorld.class

一共需要執行四條命令才能完成對HelloWorld.class檔案的更新操作,而且極易出錯。

優化指令碼

現在Shell指令碼(deploy.sh)中寫入以上四條命令,以達到高效低失誤執行的目的:

#將sh後的第一個引數定義為變數var
var=$1
echo var: $var
backdir=/opt/backup/
updir=/opt/upload/

#找到vars對應檔名所在的路徑,並分離出檔名和路徑名
wholename=find /opt/IBM -name $var
echo wholename: $wholename

#分離出路徑名和檔名
dirname=${wholename%/*}
filename=${wholename##*/}
echo dirname: $dirname
echo filename: $filename

#進入檔案所在的路徑
cd $dirname
echo firstcheck:
ls -l $filename
mv $filename $backdir

#進入上傳資料夾,移動覆蓋原有檔案
cd $updir
mv $var $dirname

#進入檔案所在的路徑,進行檢查
cd $dirname
echo secondcheck:
ls -l $filename

需要注意,以上指令碼只適合對只有唯一命名的class檔案進行替換。比如find命令的搜尋範圍/opt/IBM資料夾下只有HelloWorld.class,就可以使用以上指令碼。