【个人博客项目】使用Jenkins简单的搭建一下

目录标题

前言

为了学习一下工作中常用到的jenkins,于是挑了个最简单的模式动手操作了一遍。

环境->阿里云服务器:CentOS7.0

https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=pvezicr7

项目->网上找一个可在本地跑的Maven项目

安装JDK1.8、Git、Maven

已经安装的同学请忽略

JDK1.8请移步:https://www.cnblogs.com/zs-notes/p/8535275.html

Git请移步:http://weibingsheng.cn/blog/index.php/home/index/read.html?id=285

Maven请移步:https://www.cnblogs.com/jimisun/p/8054819.html

注意:配置JDK和Maven的环境变量

安装Tomcat

已经安装的同学请忽略

以下操作命令都在根目录执行
下载tomcat安装包:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gz

解压安装包:
tar -zxvf apache-tomcat-8.5.4.tar.gz

在根目录下执行(local目录中创建tomcat目录):
mkdir /usr/local/tomcat

将tomcat相关文件移动到创建的tomcat目录:
mv apache-tomcat-8.5.4/* /usr/local/tomcat

启动Tomcat:
cd /usr/local/tomcat/bin           //进入bin目录下:
./startup.sh                              //启动tomcat
./shutdown.sh                         //关闭tomcat

修改tomcat8相关配置

修改tomcat-users.xml文件:
vi /usr/local/tomcat/apache-tomcat-8.5.4/conf/tomcat-users.xml

主要为了jenkins通过maven实现tomcat下热部署所做的配置,我们知道tomcat manager可以在不停止tomcat的情况实现war的部署。这样,在jenkins中项目通过Maven打包后直接放在tomcat的webapps目录下后tomcat就会自动发布。
配置role和user是的maven可以获得操作tomcat的权限,修改tomcat的tomcat-users.xml文件,添加如下配置:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

这里配置的username,password在jenkins中会用到

然后开放manager访问权限(这一步一定不能少,不然会报权限错误):
【权限错误:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: 
           The username you provided is not allowed to use the text-based】

修改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" />-->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

安装Jenkins

jenkins可以直接下载运行;也可以只下载war包格式,然后放到tomcat的webapps中启动;jenkins本来就是一个webApp。

这里我下载了可以直接运行的jenkins。

$ yum install yum-fastestmirror -y  #安装自动选择最快源的插件
#添加Jenkins源:
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
$ yum install jenkins               #安装jenkins

启动方式:
$ sudo service jenkins start

访问方式:
浏览器输入http://你服务器的公网ip:8080/

tomcat和jenkins的端口如果冲突就选择其中一个修改端口
Jenkins如果要更改配置(端口):
$ vim /etc/sysconfig/jenkins
$ sudo service jenkins restart

然后我们在浏览器输入http://你服务器的公网ip:8080/后便可以访问自己的jenkins了,当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。

根据上面提示在linux的根目录下执行

cat  /var/jenkins_home/secrets/initialAdminPassword

找到密码后,直接复制到输入框中,点击继续,进入一下界面,证明解锁成功

点击推荐安装(install suggested plugins)即可,如果安装失败可以跳过,之后再在jenkins管理界面手动安装就行。

下载完成后会让创建一个管理员用户,需要设置用户名、密码等。默认配置即可。管理员相关配置完成后,需要重启,点击重启。

浏览器再次输入你的服务器IP:8080,便可进入到登录页,输入上面设置的管理员用户名和密码即可登录到管理后台。

手动安装需要的插件(maven和热部署),进入到管理后台后

点击系统管理->插件管理->可选插件

过滤搜索框输入Maven Integration来搜索Maven Integration插件。

过滤搜索框输入Maven Integration来搜索Maven Integration插件。

点击直接安装(install without restart)。下面搜索并安装热部署插件Deploy to container,安装完这俩插件了,需要重启jenkins。

注意:可以自行去查一下jenkins启动Maven常用的插件安装,这里就不赘述了

进入jenkins管理后台配置jdk、maven、git

进入到管理后台后,点击系统管理->全局工具管理

配置git,由于git在linux下安装还需要其他的依赖库,在容器内安装这些比较麻烦,所以这里直接让jenkins自行安装。勾选自动安装单选框。

创建一个maven项目并实现自动化部署

条件:maven类型的、github上的Web项目;已经启动的tomcat8的应用服务器。

注意:若在同一台服务器上tomcat8和jenkins的端口冲突

jenkins创建maven任务,点击新建任务,进入创建界面。

进入配置界面:首先配置general,勾选github。并填写github上项目地址。

构建后操作:配置maven生成war信息、上下文及web容器信息、Credentials 和tomcat Url。

WAR/EAR files选择你需要部署的war包在工作空间下的**相对路径**
Context path意为发布到目标tomcat的webapp后的文件夹名字
Credentials 需要先添加一个用户,点击添加,用户名和密码是tomcat_user.xml中配置的
Tomcat URL 就是你需要连接的tomcat地址和端口号

到此配置基本完成,点击应用,保存。

手动构建,测试下:进入到已经创建的任务界面,点击立即构建。点击左下角的 build history 查看控制台日志(console Output)。第一次构建会有点慢,需要等一会儿。

注意点:项目中的数据库是连接的本地的话就需要换掉,如果用远程服务器的数据库记得远程授权。

如果报了类似这样的错误:the Tomcat Manager responded "FAIL - " instead of the expected "OK" message
那就要去tomcat中查看下报错,可以能是项目报错了。
例如:# [java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect to database in eclipse [closed]](https://stackoverflow.com/questions/11869697/java-sql-sqlexception-access-denied-for-user-rootlocalhost-using-password)
就需要用一个能够远程访问的数据库了。

以上笔记只作为一个基础来看,若有错误还请指正,后面还有很多扩展的内容要学习,比如:不同场景下jenkins的配置、Maven打包时对于dev,uat等环境下的自定义操作、手写shell脚本等等。。。路漫漫其修远兮。

相关推荐
摸鱼也很难1 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
woshilys2 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程3 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo4 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
好像是个likun5 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
cominglately7 小时前
centos单机部署seata
linux·运维·centos
coder_pig7 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
CircleMouse7 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0668 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes