風空兮
自動化部署在互聯網中已經非常成熟了。也有很多的開源方案。
現在用Jenkins 自動部署的比較多,詳細的配置可以網上搜。
自動部署流程一般如下
- git同步最新代碼
- 使用maven打包項目
- 停止tomcat服務器
- 部署項目
- 啟動tomcat服務器
通過web操作的過程一般都是
通過web頁面調用jenkins腳本,進行代碼編譯,代碼編譯建議在乾淨環境區編譯,編譯成功後,把上線java文件上傳到上線文件服務器,然後修改配置文件。利用命令調用遠程服務器端部署監控程序,下載服文件服務器部署jar,下載最新配置文件進行替換。然後備份原來jar文件,刪除jar,把新的jar替換。自動重啟就可以。也可以開發遠程看啟動日誌頁面。可以查詢web是否啟動正常。當然完善的自動部署還會涉及到自動切換流量。上線成功後狀態回傳等。詳細的內容比較多。你可以關注我的頭條號。改天我可以總結一個完整的產品流程和實現
三僡然
tomcat自動化部署腳本實現的功能如下:
(1) 檢查tomcat進程是否存在,如果存在則kill掉
(2) 備份現有war包到tomcat/backup目錄
(3) 複製當前目錄新war包到tomcat/webapps目錄
(4) 啟動tomcat
shell腳本內容如下:
#!/bin/bash
now=`date +%Y%m%d%H%M%S`
tomcatPath=/usr/local/tomcat/software/tomcat6
backupPath=/usr/local/tomcat/software/tomcat6/backup
war=$1
if [ -e "$war.war" ]; then
echo -e "\\033[34m war archive: $war.war \\033[0m"
else
echo -e "\\033[31m war archive '$war.war' not exists \\033[0m"
exit -1
fi
# change color
echo -e "\\033[34m"
#create backup dir
if [ ! -d "$backupPath" ]; then
mkdir "$backupPath"
fi
echo "tomcat home: $tomcatPath"
echo "backup path: $backupPath"
echo 'try to stop tomcat...'
pid=`ps aux|grep "java"|grep "$tomcatPath"|awk '{printf $2}'`
if [ -n $pid ]; then
echo "tomcat pid: $pid";
kill -9 $pid;
fi
echo 'stop tomcat finished...'
echo 'backup old archive...'
if [ -f "$tomcatPath/webapps/$war.war" ]; then
mv -v "$tomcatPath/webapps/$war.war" "$backupPath/$1_$now.war";
fi
rm -rf $tomcatPath/webapps/$war*
echo "copy $war.war archive to webapps.."
cp -v "$war.war" "$tomcatPath/webapps/"
echo -e "\\033[32m"
echo 'startup tomcat...'
sh $tomcatPath/bin/startup.sh
tail -10f $tomcatPath/logs/catalina.out
使用時,需要先修改tomcatPath的值為實際tomcat路徑。
保存該文件到autodeploy.sh, 執行命令:
Shell執行代碼
./autodeploy.sh abc
autodeploy.sh和abc.war
淮安二傻子
發佈到本地的話,在maven中使用tomcat plugin即可,如果要發佈到測試環境SIT或UAT環境,應該使用ci工具比如Jenkins, 在Jenkins中建一個continues project, 只要有code checkin, 就自動build和deploy到測試環境,在Jenkins中還需要有一個release project, 因為continues自動build的都是snapshot,這不能部署到production上去, 這個release project就是用來build release版本,然後publish到公司內部的maven repositories(一般用nexus),開發人員不應該允許操作production環境, 應該由專門的服務器管理人員從nexus上下載release版本進行production的部署。
題外說一點,大多數部署也包含數據庫腳本的變化,這怎麼自動部署,也是有很好的工具比如liquibase,用liquibase建立數據庫命令的版本控制,打包在war/ear中,部署時liquibase能自動檢測環境中現有的數據庫腳本的版本,而運行沒有部署過的數據庫腳本命令。
Gary2018
tomcat的conf目錄下有一個server.xml文件。裡面context標籤下有一個屬性叫reload=true,你設置一下。以後他就會自動部署
專注JavaWeb開發
題主,這個問題很好做,寫一個shell腳本就可以搞定
下面是我給你的解決方案(linux系統下):
開發人員使用Git或者SVN把修改好的代碼提交到SVN或Git服務器上,然後在做檢出打包的功能,步奏如下:
1.刪除原來tomcat下的webApp
2.checkout 最新的代碼,進行打包和copy到tomcat的目錄下
3.再次啟動tomcat服務器
若只是初見good
1.代碼倉庫,git和svn
2.拉取最新代碼,自定義打包編譯,jenkins
3.通過tomcat自動redeploy打包好的war包,或者scp加腳本代碼重啟,一般是第二種,第一種不適用於頻繁redeploy
wwhhff11
可以考慮用jekins+marven+git來做tomcat持續集成。
雲谷計算
jenkins瞭解一下