项目要求所有的开发部署工作必须要全部在内网上完成(目前这类项目应该很多),是一个从0开始搭建项目的过程,从今天开始在头条上记录一下搭建的全过程,也给后续的自己一个参考。
前言(创作目的)
目前it生产流程中,自动化运维属于硬性要求,因此Jenkins被越来越重视起来。网上很多Jenkins部署攻略,如下图:
不过不是需要在线环境就是步骤不齐全,在查阅了各种资料之后,按一步步真实的记录,保证可按此文成功做内网搭建环境。
注:本文用的centos7系统,其他系统只供参考。
Jenkins依赖环境以及安装包准备
- jdk,jdk-8u121-linux-x64.tar.gz
- tomcat,apache-tomcat-8.5.61.tar.gz
- maven,apache-maven-3.5.0-bin.tar.gz
- git,git-2.9.3.tar.gz (离线环境安装git需要一些额外的rpm安装包,下文git章节会提供)
- jenkins.war
jdk安装
- 一般现在的centos系统都会自带一个openjdk版本,不过自带的openjdk在后续jenkins配置的时候无法配置jdk安装路径。所以需要下载一个Oracle jdk,并且将服务器默认的jdk从openjdk修改为我们自己下载的oracle jdk;
- 下载jdk压缩包,并上传至指定的服务器路径下,我的路径是/home/jdk,执行:tar -zsvf jdk-8u121-linux-x64.tar.gz
- 修改环境变量,并进行相应的配置
#编辑profile文件
vim /etc/profile
#执行后,点击i,进入编辑状态
#在文件的最后加上
EXPORT JAVA_HOME=/JDK安装路径
EXPORT JRE_HOME=$JAVA_HOME/jre
EXPORT PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#编辑完成后输入:wq,退出vim编辑页面
#刷新profile配置文件
source /etc/profile
#此时服务器默认的jdk版本仍然是openjdk,
#并不是我们新安装的oracle jdk,此时我们需要使用update-alternatives命令切换默认jdk
sudo update-alternatives --install /usr/bin/javac javac /JDK安装路径/bin/javac 300
sudo update-alternatives --install /usr/bin/java java/JDK安装路径/jre/bin/java 300
#切换默认jdk
sudo update-alternatives -- config java
sudo update-alternatives -- config javac
#查看是否切换成功
java -version
#已经切换为oracle jdk
tomcat安装
- 下载tomcat包,并通过xfp上传服务器指定目录,我的目录为/home/tomcat,官方下载链接:https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
- 解压tomcat包(目前安装已经完成,修改对应的配置在后面的章节) :
tar -xzvf apache-tomcat-9.0.22.tar.gz
maven安装
- 下载maven包,并上传至服务器指定目录,我的目录为/home/tomcat,官网下载地址: http://maven.apache.org/download.cgi
- 解压maven包: tar -xzvf apache-maven-3.5.0-bin.tar.gz
- 修改maven的环境,执行以下命令:
#编辑profile文件
vim /etc/profile
#执行后,点击i,进入编辑状态
#在文件的最后加上
EXPORT MAVEN_HOME=/安装路径
EXPORT PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#编辑完成后输入:wq,退出vim编辑页面
#刷新profile配置文件
source /etc/profile
#检查是否安装成功
mvn -v
#安装成功后,需要修改maven的settings.xml文件,将仓库镜像地址修改为内网私服地址!!!
git安装
- 下载git-2.9.3.tar.gz,并上传至服务器指定路径,我的路径为/home/git,官网链接:https://www.kernel.org/pub/software/scm/git/
- 下载依赖的rpm安装包,网上说的在指定的RPM路径上下载比较不靠谱,主要是linux内核容易不兼容以及包依赖缺失的问题,下载链接:链接:https://pan.baidu.com/s/1f_hJvwNvGGpl4RZkfcvGxw 提取码:htry
- 下载后将需要安装rpm放在同一目录下(方便批量安装),进入包含rpm包的目录下,执行:rpm -Uvh --force --nodeps *rpm。截至这一步,git需要的依赖包就安装好了
- 开始正式安装git,进入git安装目录,执行:./configure --prefix=/usr/local/git
#编译安装
make prefix=/usr/local/git all
make prefix=/usr/local/git install
#修改环境变量
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
#刷新环境变量
source /etc/bashrc
#验证是否安装成功
git --version
Jenkins安装
- 下载Jenkins的war包,链接:https://pan.baidu.com/s/1_rqCTvn2r8_zxYlv9sTJWQ ,提取码:lq5q
- Jenkins是同步部署在tomcat下运行的,所以需要将Jenkins的war包放置于tomcat的webapps目录下
- 修改tomcat的配置,添加tomcat用户角色、用户信息(这一步不能省略,否则Jenkins后续配置会出现报错)修改tomcat conf目录下的tomcat-users.xml文件,我的路径是/home/tomcat/conf/tomcat-users.xml,在<tomcat-user>标签内添加以下内容:<role rolename="manager-gui"/><role rolename="manager-script"/><role rolename="manager-jmx"/><role rolename="manager-status"/><user username="tomcat" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status" />
- 进入tomcat的bin目录下,执行 ./startup,输入ip:port/jenkins,就可以进入Jenkins页面了,不过进入之后需要进行一个初始化,jenkins会自动检查网络状态为离线状态,只要选择不安装任何插件,后续自己手动安装即可进入jenkins验证界面
- 进入Jenkins验证界面,密码从页面上的指定路径获取即可,即初步完成Jenkins安装
注:我的Jenkins是使用root用户安装的,可以避免不少权限上的问题,也可以用其他的用户,不过过程中会出现一些报错,要先排除权限问题
Jenkins插件安装
- Jenkins如果要实现自动化构建,需要maven、git等插件,比较快速的方法就是找一台可以连接外网的电脑,使用Jenkins下载需要的插件,然后在Jenkins的工作目录下拷贝出来,粘贴至内网记得Jenkins工作目录中,我的Jenkins安装插件目录为/root/.jenkins/plugins,全部拷贝扔到内网机就行;
- 过程挺简单,就是安装的过程中可能会出现网络问题,需要重复多次下载,这里我把常用到的插件都分享出来了,方便大家下载。
插件下载链接:https://pan.baidu.com/s/1JkjnYnFMmPslclSWjlcung 提取码:4isj
Jenkins系统配置(核心内容)
1. 进入系统管理-》全局工具配置,配置jdk、maven地址
2.配置git,注意不要用linux自带的git,自己下一个新版本的git。需要注意的是此处的git路径不是git的安装路径,而是whereis git 命令打印出来的路径,要选用带有 /bin/git的路径
3.进入系统设置,配置openssh:
- 首先需要为Jenkins服务器生成ssh密钥,因为我的Jenkins服务器和应用部署服务器属于同一个,所以只需要直接进入/root/.ssh目录内,输入ssh-keygen -t rsa ,然后按三次空格,再输入 cat id_rsa.pub >> authorized_keys, 就完成密钥生成了。
- Path to key中输入服务器私钥地址,passphrase为空,ssh servers中name名字用于标识当前连接名称,随便取就行;hostname为目标服务器ip地址,username为用户名
- 配置后点击test configuration按钮,显示成功就证明配置没问题啦,点击保存按钮。
4. 开始构建项目了:
- 点击 new item,选择 -构建一个maven项目,输入项目名称后,点击OK;
- 配置general ,discard old builds需要勾上,选择是备份被替换的旧包,选择备份最近的10天,数量为10个
- 配置source code management,选择GIt,repository url输入git地址,credentials选择之前配置好的凭证就可以了(此处可能会报git 连接不上或者是命令不存在的问题,需要检查git的路径配置是否正确以及git的免密连接是否配置正常)
- 配置build triggers 选择 build whenever a SNAPSHOT dependency is built
- 配置build environment,选择add timestamps to the console output
- 配置build,root pom输入 pom.xml,goals and options 输入clean install -Dmaven.test.skip =true
- 配置post steps,选择run only if build succeeds,点击Add post-build step,选择 Send files or execute commands over SSH:构建成功后的操作,通过SSH传输文件,并执行相应脚本或者命令
5. 配置SSH Publishers
- name:选择之前Publish over SSH配置的SSH Servers,Source files:选择源文件所在地址,就是项目打包后的jar包地址(根据实际情况而定) XX/target/xxx.jar
- Remove prefix:XX/target/,去除掉Source files后的xxx.jar即可
- Remote directory:/home/proj-packages/jkproj/ Jar包在应用服务器上的存放地址(自行创建即可)
- Exec command:/home/proj-packages/jkproj/startup.sh 应用服务器对应的执行脚本(也可以写Linux命令,注意这个sh脚本不要放到root目录下,否则构建的时候会出现权限问题,另外此sh脚本需要进行 chmod+x startup.sh 赋权操作)
6. 以上配置完成后就可以再project里面点即build now,享受后续的一键构建时光了