Jenkins deploy to container部署war到tomcat(学习笔记十六)-阿里云开发者社区

开发者社区> 开发与运维> 正文

Jenkins deploy to container部署war到tomcat(学习笔记十六)

简介: /** * lihaibo * 文章内容都是根据自己工作情况实践得出。 *如有错误,请指正 * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5407551.html 本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您的赞助. */ 一、deploy插件 在jenkins中发布application到远端有很多方法,除了publish over ssh外还有个插件deploy.hpi也可以实现。

/**

* lihaibo

* 文章内容都是根据自己工作情况实践得出。

*如有错误,请指正

* 版权声明:本博客欢迎转发,但请保留原作者信息!

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

本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您的赞助.

*/

一、deploy插件

在jenkins中发布application到远端有很多方法,除了publish over ssh外还有个插件deploy.hpi也可以实现。


   插件下载地址:

链接: http://pan.baidu.com/s/1pLotSmR 密码: jzud

插件安装方法:  点击:Jenkins(三)---Jenkins初始配置和插件配置

或手动转到 http://www.cnblogs.com/horizonli/p/5331970.html

二、配置 启用插件前需要对远程端的容器进行环境初始化(这里以tomcat为例)

 1.tomcat能正常启动

 2.tomcat能在web界面使用用户登录到app  manager

  1)配置增加tomcat用户:


  2)添加用户和角色


 3)登录tomcat manager


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

三、使用deploy插件发布war包到远程容器(这里以tomcat为例)

在系统设置中配置maven/jdk/git  可以参考:Jenkins(三)---Jenkins初始配置和插件配置 (除去七 SSH这一节 )

启动插件


打开之后填写

这里单独说下war包的路径和界面:

在后台看是这样的:

从前台看这样的:

界面地址:

这个地址就是用设置的用户和密码登录后的界面地址如下图:

四、利用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 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

img_51e409b11aa51c150090697429a953ed.gif

   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示例脚本:


img_51e409b11aa51c150090697429a953ed.gif

#!/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  **********************************"

img_51e409b11aa51c150090697429a953ed.gif

 问题三:遇到“Connection refused”的异常

    问题点:tomcat

    解决方案:请检查远程机的容器是否启动、端口是否设置正常,不同的容器配置方式不一样,请参考相应容器的配置文档

 问题四:遇到“Deployed application at context path /xxx but context failed to start”

    问题点:tomcat

    解决方案:到远程机的WEB容器下查看日志


问题总结部分参考:http://blog.csdn.net/houyefeng/article/details/50996198

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章