将项目布署到远程Tomcat方式一
上述创建项目,可以看出是在本地进行执行的,也就是进行编译后执行的Tomcat是何Jenkins的宿主服务器是在一起的,这很显然不符合我们常规的公司及其部署的方案,通常是将编译之后的代码在运行到其他的Tomcat服务器中的,下边有两种方式,将编译之后的项目部署到远程服务器中。
1、使用脚本的方式部署到远程服务器
2、使用Deploy to container Plugin
插件部署到远程服务器
上述的开始阶段就安装了这个插件,下边就开始发挥其作用。

在创建的Job左侧点击设置,其他配置何在远程搭建项目是一致的,不同的是在这个地方:

以前我们在编译之后,将编译后的通过脚本补助到Jenkins的宿主服务器,使用插件,就不需要这种方式了。

还有就是的在构建之后,将编译后的文件**/target/dubbo-provider.war
(就是上边的~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target目录)部署到下边的远程Tomcat容器中;
这里Containers的用户名和密码是Tomcat管理员的账户密码,Tomcat URL 就是你需要进行部署的远程Tomcat服务器的ip和端口。
这里需要进行设置的是远程Tomcat的管理员信息,修改远程Tomcat容器下的conf–tomcat-users.xml文件,在内添加下边的内容:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager,manager-script,manager-gui"/>
即可实现远程的访问,测试是可以通过的,但是有一个问题,通过这种方式,只将war复制到了wenapps下:

因此这种方式的话,我们访问的时候必须是ip、端口和项目名,例如:
http://115.159.151.247:8030/dubbo-provider/
当然这种方式 也是在实际的应用中不提倡的,解决方式就是修改Tomcat默认的访问路径即可,设置Tomcat–conf–server.xml文件如下:
在Host节点之间添加:
<Context path="" docBase="dubbo-provider" debug="0" reloadable="true" />

或者在docBase里边输入项目的绝对路径,例如我的:
<Context path="" docBase="/home/xuliugen/dubbo-provider/webapps/dubbo-provider" debug="0" reloadable="true" />
然后重启Tomcat,这样的话,http://ip:8030/dubbo-provider/ 和http://ip:8030这两种方式都可以访问到该项目。


后期补充:
上边的是设置Context Path,使得默认部署的时候会在webapps下作为一个单独的容器,其实可以直接将其设置为/
,
因为Tomcat默认的访问路径指向的就是ROOT,所以如果设置为ROOT的话就不需要在进行上边的设置了,如下:

自动部署war包到ROOT路径,也就是网站的根目录时,deploy插件的”Context path”要填写:”/”,而不是”ROOT”或者”/ROOT”,不然自动部署会失败,有类似以下错误:

其他问题
1、部署项目的时候报错

这个大家很好理解,是因为下载jar失败的问题,由于是第一次使用Maven,需要第一次下载很多jar到Maven仓库中,由于网络的问题下载失败,大家可以多次构建让他重新下载,或者直接到:https://repo.maven.apache.org/maven2 根据报错的jar,在maven2中找到自己缺失的jar,然后在/root/.m2/repository
相应的位置添加jar即可。
2、编写脚本文件启动tomcat但是项目仍然运行不起来
就是上边说道的问题了:
添加:export BUILD_ID=dontKillMe
,因为该job启动完后执行下一job,jenkins直接把tomcat进程杀了,所以无论脚本中怎么写了启动tomcat的命令,他是不会启动的。
3、遇到下边的问题

这就是在系统设置的时候,设置的git的地址不对,上述已经说明了,应该是git的可执行文件的地址,如果只是git的目录,是无法找到git这个可执行文件的,如下:

可以看出使用的是这个:/usr/local/git/bin/git 进行git仓库的配置何代码的拉取,因此这设置git的目录,jenkins默认是不会找bin目录下的git可执行文件的。
至此,Jenkins的部署完成,希望对大家有所帮助。
2.将项目布署到远程Tomcat方式二-- SSH
接下来要完成自动构建成war包后,将些war包上传到远程linux的tomcat的webapps目录,更新项目的war包,并重启tomcat.
1、安装插件
系统管理-》管理插件,在可选插件里找到下面这个,然后点击直接安装命令,安装成功后要重启jenkins

t笔者在安装插件时报错如下:

这应该是天朝的墙所导致的,所以笔者就使用了手动安装的方式。
解决方法:
手动安装
到https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin,下载hpi到本地电脑到

在系统管理--管理插件--高级--浏览-上传插件即可

然后它自动上传并安装:
红色的是笔者在线安装不成功的,蓝色的是笔者安装成功的了,之后重启jenkis即可。

2、配置ssh内容:
在系统管理-》系统设置里
找到Publish over SSH
然后输入:

3、配置Post Steps
这里还是接着上面的JavaWeb项目,这个配置得安装了上面的插件后才会显示!

其中,
Transfer SetSource files:表示要上传的本地的war包及路径,可到工作空间去看
Remove prefix:表示要上传时要去除的文件夹,即只上传war包
remote driectory:即表示执行时的路径,相当于把war包上传到这里了
exec commad:要执行的命令
要执行的脚本的内容:
!/bin/sh
defined
TOMCAT_HOME="/usr/java/tomcat/apache-tomcat-7.0.67/"
ID=ps -ef | grep java | grep tomcat|awk '{print $2}'
echo $ID
echo "kill tomcat"
kill -9 $ID
echo "remover war file"
cd "$TOMCAT_HOME"/webapps
rm -rf JavaWeb-0.0.1-SNAPSHOT
rm -rf JavaWeb-0.0.1-SNAPSHOT.war
echo "copy war to webapp"
cd /home/lin
cp JavaWeb-0.0.1-SNAPSHOT.war "$TOMCAT_HOME"/webapps
cd "$TOMCAT_HOME"/bin
echo "start tomcat"
./startup.sh
步骤:
先停掉tomcat
删除webapp下对应的war包
复制war到webapps
重启tomcat
4、构建部署
点击项目的构建按钮,最终出现如下:

在linux上打开浏览器,输入http://localhost:8080/JavaWeb-0.0.1-SNAPSHOT/
注意:这里配置的ssh用户:lin要有root的权限,要不可以会报错没有权限执行kill 或rm 命令
其中JDK、Tomcat、SVN服务器请看这里Ubuntu安装配置JDK、Tomcat、SVN服务器
网友评论