请教tomcat和jenkins部署的一个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教tomcat和jenkins部署的一个问题相关的知识,希望对你有一定的参考价值。
centos安装jenkins1、安装tomcat
安装Tomcat8
去http://tomcat.apache.org/download-80.cgi下载Tomcat8的安装文件apache-tomcat-8.0.26.tar.gz。
将apache-tomcat-8.0.26.tar.gz文件放到/usr/local目录下,执行如下脚本:
# cd /usr/local
# tar -zxvf apache-tomcat-8.0.26.tar.gz // 解压压缩包
# rm -rf apache-tomcat-8.0.26.tar.gz.tar.gz // 删除压缩包
# mv apache-tomcat-8.0.26 tomcat
启动Tomcat8
# /usr/local/tomcat/bin/startup.sh //启动tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_60
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
如果出现下面错误:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
则要注意提前设置java路径
在apache-tomcat-8.0.26/bin/setclasspath.sh中添加一下内容
export JAVA_HOME=/usr/java/jdk1.8.0_60
export JRE_HOME=/usr/java/jdk1.8.0_60/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
防火墙开放8080端口
增加8080端口到防火墙配置中,执行以下操作:
# vi /etc/sysconfig/iptables
#增加以下代码
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
重启防火墙
# service iptables restart
检验Tomcat8安装运行
通过以下地址查看tomcat是否运行正常:
http://192.168.11.52:8080/
看到tomcat系统界面,说明安装成功!
停止Tomcat8
# /usr/local/tomcat/bin/shutdown.sh //停止tomcat
2、安装jdk
安装java 配置环境变量
http://www.cnblogs.com/haoliansheng/p/5832979.html
vi /etc/profile
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:%JAVA_HOME/lib/tools.jar
3、war包部署
请参考以下 把jenkins.war 放在 tomcat的webapps 目录即可
https://wenku.baidu.com/view/b6e3ad3d852458fb770b56af.html 参考技术A 12312312312
通过jenkins自动部署war包到tomcat时遇到的一些问题
前两天项目组长让我通过jenkins的持续集成来完成项目的自动部署,但是中间可是踩了不少坑,在这里记录一下遇到的问题和解决办法。
服务器环境 windows server 2008 R2
项目容器版本 tomcat 7.0.82
jdk版本 jdk7.0.72
重现步骤
1.jenkins安装插件,在插件管理器中找到如下插件安装
2.因为jenkins实现这个插件的功能,原理也是上传文件至tomcat的wabapps文件夹,但是要对上传做一个安全控制,否则任何人都可以上传那不是乱套了。所以我们需要在tomcat中声明一个用户和密码,然后jenkins使用这个用户身份去上传就OK了。具体步骤如下
2.1 在tomcat/conf/tomcat-user.xml中创建用户名和密码
<tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="tomcat@deployer" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status"/> </tomcat-users>
注:那几个rolename最好都写上,有帮助,比如gui和script表示该用户拥有执行script和使用gui界面的权力。
username和password自己定义一个即可。
2.2 在jenkins中新建认证身份,用于连接tomcat。
注:scope为该身份的作用域,设为全局即可,username和password对应刚才在tomcat内创建的用户,ID为自动生成以及对这个身份的简单描述。
3. 构建(本项目为grails项目,如下shell代码仅供参考)
此处执行shell构建的操作: source /etc/profile:主要目的 重新导入环境变量 rm -f target/*.war:清除之前已构建的包 grails prod war:再打个包(默认还在target目录下)
4. 然后可以配置自动部署啦,在"构建后操作"这一步会多一个选项,即刚才安装的插件支持的功能,部署一个war/ear包到服务器容器里。
注:war/ear files 即构建的包的路径,相对于项目的根路径。
context path 可以理解为部署在tomcat之后,项目的访问路径。 此处的 / 表示为webapps文件夹的ROOT目录,在我的这种情况下,无论项目名是什么,均通过192.168.1.28:8080访问.
containers 这个就简单了 添加你的tomcat版本(或其他,如jboss),认证身份就用刚才创建的那个全局身份,tomcat URL 就写到tomcat的端口地址就可以啦。
5. 打完收工,保存,build now!
如果你是个幸运儿,构建之后的控制台输出为 success, 那配置到这里就应该结束了,但是我这个出现了N多次failure,在这里简单贴出可能的解决办法:
1.jdk版本保持一致。在你的开发环境(IDE)下的jdk版本,与服务器端的tomcat需要的jdk版本保持一致。不一致有可能出现兼容问题。
2.查看控制台的错误信息,如果服务器端tomcat返回的失败信息涉及到fileupload相关错误,一般情况下为项目体积过大导致,超过了tomcat默认的50M上限,需修改。
打开Tomcat\\webapps\\manager\\WEB-INF\\web.xml,修改如下代码
<multipart-config>
<!-- 此处定义为大概200M --> <max-file-size>200428800</max-file-size> <max-request-size>200428800</max-request-size> <file-size-threshold>0</file-size-threshold>
</multipart-config>
3.查看控制台的错误信息,如果项目构建过慢,最后以失败结束。很有可能是服务器内存过小,我的项目windows服务器起始为2G,相对于java/groovy这种吃内存的语言来说太小了。后来加到了4G才勉强可以。
以上是关于请教tomcat和jenkins部署的一个问题的主要内容,如果未能解决你的问题,请参考以下文章
无法使用部署到容器插件从 jenkins 部署对 Tomcat 的战争