/**html
* lihaibojava
* 文章內容都是根據本身工做狀況實踐得出。git
*若有錯誤,請指正web
* 版權聲明:本博客歡迎轉發,但請保留原做者信息!shell
http://www.cnblogs.com/horizonli/p/5407551.htmlapache
*/tomcat
1、deploy插件
bash
在jenkins中發佈application到遠端有不少方法,除了publish over ssh外還有個插件deploy.hpi也能夠實現。服務器
插件下載地址:app
連接: http://pan.baidu.com/s/1pLotSmR 密碼: jzud
插件安裝方法: 點擊:Jenkins(三)---Jenkins初始配置和插件配置
或手動轉到 http://www.cnblogs.com/horizonli/p/5331970.html
2、配置 啓用插件前須要對遠程端的容器進行環境初始化(這裏以tomcat爲例)
1.tomcat能正常啓動
2.tomcat能在web界面使用用戶登陸到app manager
1)配置增長tomcat用戶:
2)添加用戶和角色
3)登陸tomcat manager
登陸後若是能看到下面的界面表示配置正確
3、使用deploy插件發佈war包到遠程容器(這裏以tomcat爲例)
在系統設置中配置maven/jdk/git 能夠參考:Jenkins(三)---Jenkins初始配置和插件配置 (除去七 SSH這一節 )
啓動插件
打開以後填寫
這裏單獨說下war包的路徑和界面:
在後臺看是這樣的:
從前臺看這樣的:
界面地址:
這個地址就是用設置的用戶和密碼登陸後的界面地址以下圖:
4、利用deploy插件發佈application到遠程主機
1.首先確保遠程主機上的tomcat能正常啓動並能使用用戶登陸到application管理界面
2.再進行構建操做
3.以下圖所示構建成功
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 Tomcat 6.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.測試是否發佈成功
4.1檢查tomcat manager頁面
4.2web界面查看
====================================================================================
遇到的問題總結:
問題一:部署app的時候,tomcat出現「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用戶配置文件
解決方案:檢查用戶名和密碼是否正確 是否添加了用戶角色和權限.
問題二(最多見):部署完app後會出現內存溢出"java.lang.OutOfMemoryError: PermGen space"
問題點:tomcat的虛擬機內存不足,須要設置更大的內存
解決方案:1.找到tomcat路徑,用編輯器打開catalina.sh,在「echo "Using CATALINA_BASE: $CATALINA_BASE"」上面加入如下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
2.用腳本重啓tomcat服務器,再部署。
重啓tomcat示例腳本:
#!/bin/bash #Time log_time=`date +[%Y-%m-%d]%H:%M:%S` ###manual_properties### tomcat_basehome=/opt/tomcat6/apache-tomcat-6.0.45 tomcat_port=9090 shell_environment=/bin/bash war_Dir=/opt/jenkins war_Name=quick4j.war ###manual_properties### #update server environment echo "********************************** ${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.45 export CATALINA_2_BASE=/opt/tomcat6/apache-tomcat-6.0.45 export TOMCAT_2_HOME=/opt/tomcat6/apache-tomcat-6.0.45 sleep 3 echo "updating server environment end" #build check funcation echo "check tomcat status..." check_tomcat_status(){ netstat -ant|grep ${tomcat_port} t=$? if [ $t -eq 0 ]; then echo "tomcat is running....port is ${tomcat_port}" echo "shutdown tomcat....." echo ">>>>>>>shutdown tomcat begin<<<<<<<<" ${shell_environment} ${tomcat_basehome}/bin/shutdown.sh echo ">>>>>>>shutdown tomcat end <<<<<<<<" sleep 5 elif [ $t -ne 0 ];then echo "tomcat is poweroff" ${shell_environment} ${tomcat_basehome}/bin/shutdown.sh sleep 5 fi } #check tomcat status invoke function check_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 ];then echo "Folder ${war_Dir} is empty.please check war package in this folder!" exit 1 else echo "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} sleep 3 fi #reboot tomcat echo " >>>>>>> rebooting tomcat begin <<<<<<<<" ${shell_environment} ${tomcat_basehome}/bin/startup.sh echo " >>>>>>> rebooting tomcat end <<<<<<<<" echo "the log you can read in canalina.out" echo "************************ deploy war package into container Successlly **********************************"
問題三:遇到「Connection refused」的異常
問題點:tomcat
解決方案:請檢查遠程機的容器是否啓動、端口是否設置正常,不一樣的容器配置方式不同,請參考相應容器的配置文檔
問題四:遇到「Deployed application at context path /xxx but context failed to start」
問題點:tomcat
解決方案:到遠程機的WEB容器下查看日誌
問題總結部分參考:http://blog.csdn.net/houyefeng/article/details/50996198
--------------------目錄電梯---------------------
[原]Jenkins(一)---我理解的jenkins是這樣的
[原]Jenkins(二)---jenkins之Git+maven+jdk+tomcat
[原]Jenkins(三)---Jenkins初始配置和插件配置
[原]Jenkins(七)---jenkins項目編譯測試發佈由maven構建的web項目
[原]Jenkins(八)---jenkins構建項目報錯時發送錯誤報告郵件
[原]Jenkins(九)---jenkins分別發佈多個項目到多個遠程主機
[原]Jenkins(十)---jenkins註冊管理員admin並賦全部權限給admin
[原]Jenkins(十一)---jenkins使用管理員admin建立用戶和分配權限
[原]Jenkins(十二)---jenkins管理員用戶沒法登錄解決辦法Access Denied
[原]Jenkins(十三)---jenkins用戶權限管理