Jenkins deploy to container部署war到tomcat(學(xué)習(xí)筆記十六)

/**

* lihaibo

* 文章內(nèi)容都是根據(jù)自己工作情況實踐得出。

*如有錯誤,請指正

* 版權(quán)聲明:本博客歡迎轉(zhuǎn)發(fā),但請保留原作者信息!

http://www.cnblogs.com/horizonli/p/5407551.html

本博客已經(jīng)添加"打賞"功能,"打賞"位置位于右邊欄紅色框中,感謝您的贊助.

*/

一、deploy插件

在jenkins中發(fā)布application到遠(yuǎn)端有很多方法,除了publish over ssh外還有個插件deploy.hpi也可以實現(xiàn)。


?? 插件下載地址:

鏈接: http://pan.baidu.com/s/1pLotSmR 密碼: jzud

插件安裝方法:? 點擊:Jenkins(三)---Jenkins初始配置和插件配置

或手動轉(zhuǎn)到 http://www.cnblogs.com/horizonli/p/5331970.html

二、配置 啟用插件前需要對遠(yuǎn)程端的容器進(jìn)行環(huán)境初始化(這里以tomcat為例)

?1.tomcat能正常啟動

?2.tomcat能在web界面使用用戶登錄到app? manager

? 1)配置增加tomcat用戶:


? 2)添加用戶和角色


?3)登錄tomcat manager


登錄后如果能看到下面的界面表示配置正確

三、使用deploy插件發(fā)布war包到遠(yuǎn)程容器(這里以tomcat為例)

在系統(tǒng)設(shè)置中配置maven/jdk/git? 可以參考:Jenkins(三)---Jenkins初始配置和插件配置?(除去七 SSH這一節(jié) )

啟動插件


打開之后填寫

這里單獨(dú)說下war包的路徑和界面:

在后臺看是這樣的:

從前臺看這樣的:

界面地址:

這個地址就是用設(shè)置的用戶和密碼登錄后的界面地址如下圖:

四、利用deploy插件發(fā)布application到遠(yuǎn)程主機(jī)

?? 1.首先確保遠(yuǎn)程主機(jī)上的tomcat能正常啟動并能使用用戶登錄到application管理界面

?? 2.再進(jìn)行構(gòu)建操作

?? 3.如下圖所示構(gòu)建成功

INFO] Building war: /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war

[INFO] WEB-INF/web.xml already added, skipping

[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------[INFO] Total time:6.782 s

[INFO] Finished at: 2016-04-19T14:06:53+08:00[INFO] Final Memory: 27M/438M

[INFO] ------------------------------------------------------------------------[JENKINS] Archiving /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/pom.xml to com.eliteams/quick4j/1.0.0/quick4j-1.0.0.pom

[JENKINS] Archiving /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war to com.eliteams/quick4j/1.0.0/quick4j-1.0.0.war

channel stopped

Deploying /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war to container Tomcat6.x Remote

? [/opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war] is not deployed. Doing a fresh deployment.

? Deploying [/opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war]

Finished: SUCCESS

?? 4.測試是否發(fā)布成功

??? 4.1檢查tomcat manager頁面


?? 4.2web界面查看


====================================================================================

遇到的問題總結(jié):

?問題一:部署app的時候,tomcat出現(xiàn)“403/401 for URL: http://172.16.18.192:8090/manager/text/list” 和The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

??? 問題點: tomcat用戶配置文件

??? 解決方案:檢查用戶名和密碼是否正確? 是否添加了用戶角色和權(quán)限.

?問題二(最常見):部署完app后會出現(xiàn)內(nèi)存溢出"java.lang.OutOfMemoryError: PermGen space"

??? 問題點:tomcat的虛擬機(jī)內(nèi)存不足,需要設(shè)置更大的內(nèi)存

??? 解決方案:1.找到tomcat路徑,用編輯器打開catalina.sh,在“echo "Using CATALINA_BASE:??? $CATALINA_BASE"”上面加入以下行:

??????????? JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

???????????????? 2.用腳本重啟tomcat服務(wù)器,再部署。

???????????????? 重啟tomcat示例腳本:


#!/bin/bash

#Time

log_time=`date+[%Y-%m-%d]%H:%M:%S`

###manual_properties###

tomcat_basehome=/opt/tomcat6/apache-tomcat-6.0.45tomcat_port=9090shell_environment=/bin/bash

war_Dir=/opt/jenkins

war_Name=quick4j.war

###manual_properties###

#update server environmentecho"**********************************? ${log_time} *************************************"echo"updating server? environment start"export JAVA_HOME=/app/java/jdk1.8.0_11

export JRE_HOME=/app/java/jdk1.8.0_11/jre

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar/export CATALINA_2_HOME=/opt/tomcat6/apache-tomcat-6.0.45export CATALINA_2_BASE=/opt/tomcat6/apache-tomcat-6.0.45export TOMCAT_2_HOME=/opt/tomcat6/apache-tomcat-6.0.45sleep3echo"updating server? environment? end"#build check funcationecho"check tomcat status..."check_tomcat_status(){

? ? ? netstat -ant|grep ${tomcat_port}

? ? ? t=$?if[ $t -eq0];thenecho"tomcat is running....port is ${tomcat_port}"echo"shutdown tomcat....."echo">>>>>>>shutdown tomcat begin<<<<<<<<"? ? ? ? ? ? ${shell_environment} ${tomcat_basehome}/bin/shutdown.shecho">>>>>>>shutdown tomcat end <<<<<<<<"sleep5elif[ $t -ne0];thenecho"tomcat is poweroff"? ? ? ? ? ? ? ${shell_environment} ${tomcat_basehome}/bin/shutdown.shsleep5fi}

#check tomcat status invoke functioncheck_tomcat_status

#transfer? application package

deploy_Loaction=${tomcat_basehome}/webapps/war_Dir_Data=`ls ${war_Dir}`echo"start? transfer? war package to tomcat webapps ......."if[ -z $war_Dir ];thenecho"Folder ${war_Dir} is empty.please check war package in this folder!"? ? exit 1elseecho"Find ${war_Dir} exist war package ${war_Name}"? ? # echo"deleteing old? package ${war_Name} in ${war_Dir}"? ? # rm${war_Dir}/${war_Name}

? ? echo"deleteing old? package ${war_Name} in ${deploy_Loaction}"rm ${deploy_Loaction}${war_Name}

? ? echo"start? transfer ${war_Name} to ${deploy_Loaction}"cp${war_Dir}/${war_Name}? ${deploy_Loaction}

? ? sleep3fi#reboot tomcat echo" >>>>>>>? rebooting? tomcat begin <<<<<<<<"${shell_environment} ${tomcat_basehome}/bin/startup.shecho" >>>>>>>? rebooting? tomcat end <<<<<<<<"echo"the log you can read in canalina.out"echo"************************ deploy war package into container Successlly? **********************************"

?問題三:遇到“Connection refused”的異常

??? 問題點:tomcat

??? 解決方案:請檢查遠(yuǎn)程機(jī)的容器是否啟動、端口是否設(shè)置正常,不同的容器配置方式不一樣,請參考相應(yīng)容器的配置文檔

?問題四:遇到“Deployed application at context path /xxx but context failed to start”

??? 問題點:tomcat

??? 解決方案:到遠(yuǎn)程機(jī)的WEB容器下查看日志


問題總結(jié)部分參考:http://blog.csdn.net/houyefeng/article/details/50996198

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容