Jenkins中的專案打包部署到遠端Tomcat
Jenkins構建成功之後,可以在/usr/local/JenkinsHome/workspace中看到
在系統管理-外掛管理-已安裝外掛中,檢視publish over ssh是否安裝
hostname設定
192.168.0.239 為SVN、Nexus、Jenkins所在虛擬機器
192.168.0.240 為模擬測試環境虛擬機器
192.168.0.241 為模擬生產環境虛擬機器
分別修改240、241機器的hostname,下圖僅使用hostname指令修改主機名,重啟後失效
240 192.168.0.240-test
241 192.168.0.241-product
此外,還需要如下設定
vi /etc/sysconfig/network
vi /etc/hosts
重啟後,檢視hostname
在192.168.0.239所在機器進行如下配置
vi /etc/hosts
/etc/hosts類似於DNS,即ip地址與hostname的對應關係。Linux系統在向DNS伺服器發出域名解析請求之前,先查詢/etc/hosts檔案,檢視是否存在相關記錄。
系統管理-系統設定-ssh remote hosts
設定登入240、241Linux虛擬機器的使用者名稱和密碼
新增證書
填寫使用者名稱、密碼及相關資訊
設定完成後的credential
系統管理-系統設定-ssh remote hosts
新增測試環境host
新增生產環境host
配置Publish over SSH,新增SSH Server: 192.168.0.240-test、192.168.0.241-product
Linux虛擬機器配置2個Tomcat
每一個tomcat配置指向自己的環境變數,否則2個Tomcat不能同時成功啟動
修改環境變數
vi /etc/profile
新增如下內容
# first tomcat
CATALINA_BASE=/usr/local/test-tomcat-01
CATALINA_HOME=/usr/local/test-tomcat-01
TOMCAT_HOME=/usr/local/test-tomcat-01
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME
# second tomcat
CATALINA_2_BASE=/usr/local/test-tomcat-02
CATALINA_2_HOME=/usr/local/test-tomcat-02
TOMCAT_2_HOME=/usr/local/test-tomcat-02
export CATALINA_2_BASE CATALINA_2_HOME TOMCAT_2_HOME
執行指令source /etc/profile ,使上述環境變數配置立即生效
第一個Tomcat即test-tomcat-01不做改動,只對第二個Tomcat即test-tomcat-02的catalina.sh、server.xml進行修改
vi catalina.sh
新增如下內容
export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME
vi server.sh
<Server port="8006" shutdown="SHUTDOWN"> 8005修改為8006
<Connector port="8090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> 8080修改為8090
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> 8009修改為8010
此時,分別啟動test-tomcat-01、test-tomcat-02
上傳專案HBKeNong、HBKeNongPicture至192.168.0.239的SVN
在192.168.0.239虛擬機器中,檢視svn-tomcat已啟動
登入SVN的管控臺http://192.168.0.239:9090/svnadmin/ SVN管控臺的安裝與使用可參考《Linux中apache http server+svn+svnadmin整合》
下面需要新增2個專案HBKeNong、HBKeNongPicture
新增使用者組
給developer使用者組分配了使用者admin,此時admin就擁有了對HBKeNong的讀寫操作許可權
因為192.168.0.239虛擬機器上使用的是Apache和SVN整合,在使用svnadmin對資源進行管理的時候,使用者的group和user均需要為apache
vi /etc/httpd/conf/httpd.conf
然而新建的HBKeNong所屬的使用者組和使用者均為root,需要做如下設定
chown -R apache.apache HBKeNong
chmod -R 777 HBKeNong
選中待匯入的專案HBKeNong--右鍵Tortoise SVN -- Import
在SVN admin中檢視剛上傳的專案
HBKeNongPicture的操作同理。
下載SmartSVN,檢出專案並匯入到Eclipse中
在Jenkins中新建任務並執行構建
對HBKeNong執行構建操作
檢視構建過程的控制檯輸出
同理,HBKeNongPicture專案也構建成功了
將Jenkins構建的war包釋出到模擬測試環境
模擬測試環境在192.168.0.240Linux虛擬機器上,在/usr/local下面有test-tomcat-01、test-tomcat-02分別用來部署HBKeNong、HBKeNongPicture
在192.168.0.240 測試環境虛擬機器中/usr/local目錄下,新建目錄test_env_update_war用於存放最新的待部署的war包,新建目錄test_env_script用於存放專案部署的指令碼,新建目錄test_war_backup用於存放war包的備份。
賦予test_HBKeNong_deploy.sh指令碼執行許可權
chmod 777 test_HBKeNong_deploy.sh
#!/bin/bash
DATE=`date +%F-%H-%M`
PROJECT='HBKeNong-1.0-SNAPSHOT'
PROJECT_TARGET='HBKeNong'
ROOTDIR='/usr/local'
TOMCAT_HOME='/usr/local/test-tomcat-01'
#停止tomcat服務
echo '停止test-tomcat-01'
sh ${TOMCAT_HOME}/bin/shutdown.sh
ps -ef | grep ${TOMCAT_HOME}/ | grep -v grep| awk '{print $2}' | xargs kill -9
cp ${ROOTDIR}/test_env_update_war/${PROJECT}.war ${ROOTDIR}/test_war_backup/test-${PROJECT}-${DATE}.war
rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_TARGET}.war
rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_TARGET}
mv ${ROOTDIR}/test_env_update_war/${PROJECT}.war ${TOMCAT_HOME}/webapps/${PROJECT_TARGET}.war
#啟動tomcat服務
echo '啟動test-tomcat-01'
sh ${TOMCAT_HOME}/bin/startup.sh
其中,ps -ef | grep ${TOMCAT_HOME}/ | grep -v grep| awk '{print $2}' | xargs kill -9 的含義如下:
對HBKeNong進行構建
訪問http://192.168.0.240:8090/HBKeNongPicture/ ,測試可以正常訪問
HBKeNongPicture同理
在test-tomcat-02中的catalina.sh中新增如下內容
export JAVA_HOME=/usr/local/localsoftware/jdk1.8.0_121
export JRE_HOME=/usr/local/localsoftware/jdk1.8.0_121/jre
執行構建
訪問http://192.168.0.240:8090/HBKeNongPicture/
Tomcat設定開機自啟動
192.168.0.240 為模式測試環境,該虛擬機器上存在test-tomcat-01、test-tomcat-02
在192.168.0.240 執行指令 vi /etc/rc.d/rc.local,新增如下2行內容
sh /usr/local/test-tomcat-01/bin/startup.sh
sh /usr/local/test-tomcat-02/bin/startup.sh
重啟後,檢視是否tomcat已啟動