如何實現tomcat自動化部署?

風空兮


自動化部署在互聯網中已經非常成熟了。也有很多的開源方案。

現在用Jenkins 自動部署的比較多,詳細的配置可以網上搜。

自動部署流程一般如下

  1. git同步最新代碼
  2. 使用maven打包項目
  3. 停止tomcat服務器
  4. 部署項目
  5. 啟動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瞭解一下


分享到:


相關文章: