专栏首页程序猿的大杂烩通过Jenkins部署java项目

通过Jenkins部署java项目

笔记内容:通过Jenkins部署java项目 笔记日期:2018-02-28

  • 26.9 部署java项目-创建私有仓库
  • 26.10 部署java项目-下载zrlog源码
  • 26.11 安装配置tomcat
  • 26.12 部署java项目-安装maven
  • 26.13 安装插件
  • 26.14 构建job
  • 26.15 发布war包

部署java项目-创建私有仓库

Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven。

本次实验,我们采用git私有仓库的形式,涉及到配置密钥,以zrlog来作为本次实验需要部署的java项目。

实验环境:

  • 192.168.77.128 作为项目的线上服务器,具有JDK1.8+Tomcat8.5环境
  • 192.168.77.130 Jenkins服务器

准备工作:

  • 自行在免费的代码托管平台申请一个私有的git仓库,我这里使用的是国内的一个免费托管平台:码云
  • 生成密钥对,把公钥放到git服务端,也就是配置仓库的密钥认证,常规操作就不演示了

克隆创建好的私有仓库:

[root@server ~]# cd /home/
[root@server /home]# git clone git@gitee.com:Zero-One/Test-Zrlog.git
[root@server /home]# cd Test-Zrlog/
[root@server /home/Test-Zrlog]# ls
README.md
[root@server /home/Test-Zrlog]# vim README.md  // 随便更改一下内容
[root@server /home/Test-Zrlog]# git add .
[root@server /home/Test-Zrlog]# git commit -m "first"
[root@server /home/Test-Zrlog]# git push

push成功则代表没问题。


部署java项目-下载zrlog源码

下载zrlog的源码,并解压:

[root@server /home/Test-Zrlog]# cd ../
[root@server /home]# wget https://codeload.github.com/94fzb/zrlog/zip/master
[root@server /home]# du -sh master 
2.1M    master
[root@server /home]# unzip master

然后把解压后的文件都移到git仓库里,并提交到远程仓库上:

[root@server /home]# mv zrlog-master/* Test-Zrlog/
mv: overwrite ‘Test-Zrlog/README.md’? y
[root@server /home]# cd Test-Zrlog/
[root@server /home/Test-Zrlog]# git add .
[root@server /home/Test-Zrlog]# git commit -m "zrlog source"
[root@server /home/Test-Zrlog]# git push

配置tomcat

在线上服务器上需要安装好jdk + tomcat,其中jdk最好不要使用openjdk,使用openjdk容易出问题,我这里使用的jdk版本为1.8,tomcat版本则为8.23。

准备好JDK+Tomcat环境并且Tomcat能够正常服务后,还需要配置Tomcat的用户文件:

[root@client ~]# vim /usr/local/tomcat/conf/tomcat-users.xml  # 在文件末尾加入以下内容
    <role rolename="admin"/>  # role配置角色
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <role rolename="manager"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/> 
    <user name="admin" password="your_password" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />  # user配置用户及用户的角色
</tomcat-users>  # 注意以上内容是写在tomcat-users标签内的

接着配置Tomcat的Context文件,只需要配置白名单ip即可,不然默认只允许本地ip访问:

[root@client ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.77.*" />  # 这里可以根据你自己的机器ip进行配置
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

完成以上编辑后,重启tomcat:

[root@client ~]# sh /usr/local/tomcat/bin/shutdown.sh
[root@client ~]# sh /usr/local/tomcat/bin/startup.sh

打开浏览器进入到Tomcat的web页面,然后点击 “manager webapp” 进入到管理页面:

然后会进入到管理页面:

在这个页面我们可以对发布的web项目进行管理,而且Jenkins也需要通过这个管理页面的接口来发布我们的Java项目,所以才需要配置这个管理页面的用户及白名单ip。


部署java项目-安装maven

因为我们需要通过maven来帮我们编译并打包Java项目,所以这一步是安装好maven,注意这一步是在Jenkins服务器上完成的,官网下载地址:

https://maven.apache.org/download.cgi

下载并解压:

[root@client ~]# cd /usr/local/
[root@client /usr/local]# wget  http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
[root@client /usr/local]# tar -zxvf apache-maven-3.5.2-bin.tar.gz 
[root@client /usr/local]# rm -rf apache-maven-3.5.2-bin.tar.gz
[root@client /usr/local]# ls apache-maven-3.5.2/
bin  boot  conf  lib  LICENSE  NOTICE  README.txt
[root@client /usr/local]# apache-maven-3.5.2/bin/mvn --version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /usr/local/apache-maven-3.5.2
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
[root@client /usr/local]# 

安装完成后,到Jenkins的web页面上进行配置,jenkins页面 -> 系统管理 -> 全局工具配置:

先配置maven的setting.xml文件的路径:

然后往下拉,找到Maven那一栏,配置maven的安装路径:

点击 “Saven” 之后,我们的maven也就配置完了


安装插件

系统管理 -> 管理插件,检查是否已经安装 Maven Integration和 Deploy to container,若没有安装则需要安装这两个插件:

  • 安装Maven Integration:
  • 安装Deploy to container:

安装完成:

Maven Integration是用于构建Maven项目的,而Deploy to container则是用于发布远程war包的。

如果没有安装Maven Integration的话,构建任务时是没有Maven项目的选项的:

重启Jenkins服务:

systemctl restart jenkins

然后点击 “新建任务” ,这时会发现多了一个Maven项目的选项,这就证明maven插件安装成功了:


构建job

点击 “新建任务” ,创建一个Maven项目:

填写项目信息:

源码管理,配置远程的私有git仓库:

构建触发器、构建环境、Pre Steps这几项保持默认节即可,

然后配置Build那一栏,Build的过程是在编译源码并打包:

接下来的Post Steps以及构建设置这两项也保持默认。

构建后操作需要配置,这一步我这里目前只是配置一下邮件通知,目的是先进行测试能否成功构建Maven项目,测试成功后一会再配置发布war包:

配置完保存之后,就可以点击立即构建来构建这个maven项目了,我这里是构建成功的:

而且邮箱也成功收到了邮件通知:

这时进入控制台输出页面,由于是第一次构建Maven的项目,所以会看到下载了很多Maven相关的东西:

而第二、第三次构建Maven的项目就不会再下载这么多东西了,如上我们的测试构建Maven项目就成功了,接下来就可以远程发布war包了。


发布war包

回到项目的配置,在构建后操作那一栏点击 “增加构建后操作步骤” 选择 “Deploy war/ear to a container” :

Containers选择Tomcat 8.x,Tomcat URL填写要把war包发布到的那台机器的url:

Credentials这里需要点击右侧的Add,添加用户名和密码:

配置完之后点击保存即可。

然后就可以构建任务了,我这里是构建成功的:

并且也收到了邮件通知:

这时候到目标机器上,看看war包是否已发布到tomcat上了:

[root@client ~]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT  zrlog-1.9.0  zrlog-1.9.0.war
[root@client ~]# 

如上,可以看到war已成功发布到tomcat上了。

浏览器上也成功登录了zrlog:

到此为止,我们的Java项目就发布成功了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • docker compose的简单使用

    docker compose可以方便我们快捷高效地管理容器的启动、停止以及重启等操作,和批量管理容器,它类似于linux下的shell脚本,基于yaml语法,在...

    端碗吹水
  • docker通过模板创建镜像以及容器、仓库和数据管理

    笔记内容:docker通过模板创建镜像以及容器、仓库和数据管理 笔记日期:2018-02-05

    端碗吹水
  • 容器部署Spring Cloud项目

    最后我们在rancher上部署eureka和config项目,首先我们需要在本地创建这两个项目的docker镜像,然后推送到网易云镜像仓库上。

    端碗吹水
  • TensorFlow2.0 代码实战专栏(四):Word2Vec (Word Embedding)

    使用TensorFlow 2.0实现Word2Vec算法计算单词的向量表示,这个例子是使用一小部分维基百科文章来训练的。

    磐创AI
  • 【深度学习】人人都能看得懂的卷积神经网络——入门篇

    近年来,卷积神经网络热度很高,在短时间内,这类网络成为了一种颠覆性技术,打破了从文本、视频到语音多个领域的大量最先进的算法,远远超出其最初在图像处理的应用范围。

    黄博的机器学习圈子
  • Android 常用正则表达式

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

    用户2965908
  • maven安装和应用

    为了保持一致,因为我本机jdk是1.13的,所以此处我们使用1.12版本的 从setting中我们看出使用的是3.6的maven,因此配置版本也修改为3.6版本...

    DrawSky
  • maven安装和配置【windows系统】)

        最近准备使用Maven来进行项目管理和构建,该系列将记录我学习Maven的整个过程。

    bear_fish
  • GaiaWorld:加密技术在区块链中的意义

    加密技术作为区块链技术里极其重要、不可或缺的一部分,为区块链的匿名性、不可篡改和不可伪造等特点保驾护航。如果说共识机制是区分一个公链质量的核心和灵魂,那么加密算...

    GAIAWorld
  • 快速学习Maven-Maven的使用

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    cwl_java

扫码关注云+社区

领取腾讯云代金券