一般情況下使用的Linux環境都是加固的,root路徑只有超級管理員權限才能進入。我們新建一個自己的用戶,在/home下會有一個用戶目錄,傳輸war包都放在這個目錄下,此時不動webapps文件下的內容,傳輸包的時候,項目不會中斷。
如下是部署腳本deploy.sh:
#!/bin/bash #自動部署腳本 #tomcat路徑 tomcatBinPath=/alidata/server/tomcat-7.0.54/bin #war包和腳本目錄 homepath=/home/baihuidong/DeployApplicationForTomcat echo '--------開始部署--------' #檢查war包是否存在 cd $homepath if [ $(find ./ -maxdepth 1 -name "*.war"|wc -l) -ne 1 ]; then echo '請保證DeployApplicationForTomcat文件中有且只有一個war包!' exit 1 fi #進入tomcat目錄 cd $tomcatBinPath if [ $? -ne 0 ];then echo '請檢查tomcat的bin路徑是否正確!' exit 1 fi echo "進入tomcat的bin目錄:$tomcatBinPath" pid=$(ps -fu `whoami`|grep "$tomcatBinPath"|grep -v grep|awk '{print $2}') if [ -z "$pid" ];then echo "相關tomcat進程已關閉:$pid" else ./shutdown.sh #停止tomcat服務 sleep 8 kill -9 $pid echo '成功關閉tomcat服務!' fi #清空oldWarPackage目錄 cd $homepath if [ $? -ne 0 ];then echo '請檢查homepath路徑是否正確或者是否有權限進入!' exit 1 fi if [ -d $homepath/oldWarPackage ];then echo "oldWarPackage文件夾存在!" rm -rf $homepath/oldWarPackage/* else echo "oldWarPackage文件夾不存在!" mkdir $homepath/oldWarPackage fi cd $tomcatBinPath/../webapps/ if [ $? -ne 0 ];then echo '請檢查webapps路徑是否正確!' exit 1 fi echo "進入webapps目錄:$(pwd)" cp *.war $homepath/oldWarPackage/ if [ $? -ne 0 ];then echo '請檢查webapps下是否有war包或者oldWarPackage目錄是否存在!' exit 1 fi rm -rf * cp $homepath/*.war ./ chown root:root *.war chmod 755 *.war cd $tomcatBinPath ./startup.sh echo '--------部署結束--------'
若部署中間出錯,則使用回滾腳本
回滾腳本rollback.sh:
#!/bin/bash #回滾腳本 #war包和腳本目錄 homepath=/home/baihuidong/DeployApplicationForTomcat cd $homepath/oldWarPackage if [ $(find ./ -maxdepth 1 -name "*.war"|wc -l) -ne 1 ]; then echo '請保證oldWarPackage文件中有且只有一個war包!' exit 1 fi echo '------回滾開始------' cd ../ rm -rf ./*.war cp ./oldWarPackage/*.war ./ ./deploy.sh echo '------回滾結束------'
其實這里的回滾腳本,是重新部署原war包的方案。還有一種方案,就是備份webapps路徑下的war包和ROOT文件夾,回滾之后拷貝到webapps下,重啟tomcat,這樣省去了Tomcat解壓war包的時間。
注意:
如果在Linux下使用vim命令編寫腳本,需添加相關執行權限才能被執行(文件名變成綠色)。
如果在windows下編寫的sh腳本,傳到Linux上,需要增加相關執行權限,且需要格式轉化
使用如下命令進行轉換:
chmod 755 deploy.sh //設置執行權限 dos2unix deploy.sh //格式轉化 busybox dos2unix deploy.sh //如果提示dos2unix命令找不到,使用這條
還可以使用vim進行格式轉化。具體看我的vim的文章。