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

目录
相关文章
|
17天前
|
应用服务中间件 容器
从零手写实现 tomcat-07-war 如何解析处理三方的 war 包?
这是一个关于构建Web应用和理解类加载器的文章摘要。作者探讨了如何解析和处理WAR包,使用Netty权威指南系列(BIO, NIO, AIO)作为背景阅读。文章通过一个简单的Web项目实例,展示了项目的目录结构,包括`pom.xml`, `web.xml`和`IndexServlet`。作者还介绍了自定义的`WebAppClassLoader`,它扩展了`URLClassLoader`,用于根据类路径加载非当前项目类。最后提到了一个名为mini-cat的开源项目,它是简易版Tomcat实现,可在GitHub上找到。
|
6月前
|
Java 应用服务中间件
idea tomcat 404 无法自动打开本地项目war包路径
idea tomcat 404 无法自动打开本地项目war包路径
73 0
|
5月前
|
Java 应用服务中间件 API
SpringBoot项目 Tomcat部署war程序时启动成功但是访问404异常处理
SpringBoot项目 Tomcat部署war程序时启动成功但是访问404异常处理
90 0
|
5月前
|
Java 应用服务中间件 容器
SpringBoot配置外部Tomcat并打war包
SpringBoot配置外部Tomcat并打war包
75 0
|
14天前
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
|
5月前
|
Java 应用服务中间件
SpringBoot 项目war包部署 配置外置tomcat方法
SpringBoot 项目war包部署 配置外置tomcat方法
72 0
|
2月前
|
JavaScript jenkins 持续交付
Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)
Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)
71 0
|
4月前
|
Java 应用服务中间件 Maven
Tomcat部署SpringBoot war包
Tomcat部署SpringBoot war包
30 0
|
5月前
|
jenkins Java 应用服务中间件
Jenkins【部署 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
Jenkins【部署 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
82 0
|
5月前
1分钟入门angular动画效果animations,敲简单滴哟~~
1分钟入门angular动画效果animations,敲简单滴哟~~
1分钟入门angular动画效果animations,敲简单滴哟~~