第一次接触jenkins自动部署 maven项目,从度娘谷哥搜刮N多资料,经过一个多星期的(部署+删除)✖️N 过程,终于成功部署完成,现将整合过的部署过程傻瓜式列出(真的挺傻瓜的了[捂脸]),分享给大家参考(嗯,也是备份怕忘了 - -||)。
1. 准备系统 centos7
a. 建议使用mini系统
b. 查询本机ssh远程连接是否开启
执行命令:service sshd status
结果显示Active: active (running),说明已启动,请跳到下一步
结果显示Active: inactive (dead),说明未启动,执行命令:service sshd start
如果提示command not found,说明尚未安装netstat,执行命令:yum install net-tools,安装netstat工具,安装完成后,再次执行命令:service sshd status,根据返回结果进行处理
c. 查看本机ip地址,记录ip地址
执行命令:ip addr
d. ssh远程连接centos服务器(mac为例,windows请百度Linux Bash使用教程,或者找个客户端也行)
打开终端,执行命令:ssh 用户名@ip地址(例:ssh root@47.221.90.11) ,输入密码回车;
因为最终的生产环境是要部署服务器的,即使当前是本机的虚拟机centos7系统,也建议使用本机的远程工具连接虚拟机centos7来进行操作,提前熟悉ssh远程操作服务器
e. 更换yum的源,系统默认的 yum源 服务器在国外,速度慢,建议修改yum源为国内源。
i. 备份镜像源
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.backup
ii. 替换镜像源(网易163源,也可以自行百度用阿里等其他的源,看个人喜好)
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
iii. 清理,更新yum缓存
yum clean all
yum makecache
yum -y update
f. 安装tab键shell补全增强:
执行命令:yum -y install bash-completion bash-completion-extras
g. 安装vim
执行命令:yum -y install vim
h. 安装zip工具:
执行命令:yum -y install zip
执行命令:yum -y install unzip
2. 安装java:
首先,到jdk官网上下载你想要的jdk版本,下载完成之后将需要安装的jdk安装包放到Linux系统指定的文件夹下,并且命令进入该文件夹下:
[root@localhost software]# ll
total 252664
-rw-r--r--. 1 root root 11830603 Jun 9 06:43 alibaba-rocketmq-3.2.6.tar.gz
-rw-r--r--. 1 root root 43399561 Jun 9 06:42 apache-activemq-5.11.1-bin.tar.gz
-rwxrw-rw-. 1 root root 185540433 Apr 21 09:06 jdk-8u131-linux-x64.tar.gz
-rw-r--r--. 1 root root 1547695 Jun 9 06:44 redis-3.2.9.tar.gz
-rw-r--r--. 1 root root 16402010 Jun 9 06:40 zookeeper-3.4.5.tar.gz
解压 jdk-8u131-linux-x64.tar.gz安装包
[root@localhost software]# mkdir -p /usr/lib/jvm
[root@localhost software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm
这里不建议用wget在linux中直接下载,Oracle官网jdk下载之前需要同意Oracle的安装协议,不然不能下载,但是用wget的方式,默认是不同意oracle安装协议, 下载下来的文件会有问题,在Linux上解压会提示失败,虽然可以通过修改文件后缀名的方式强制解压,但还是推荐走正常路线,先下载到自己本地电脑,然后用scp命令上传到服务器,再解压。
例如:scp /Users/00_centos/jdk-8u181-linux-x64.tar.gz root@服务器ip:/usr/lib/jvm/jdk-8u181-linux-x64.tar.gz
其次,设置环境变量
[root@localhost software]# vim /etc/profile
在最后面添加(这个不强制要求位置,放到最前面也可以):
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
再次,执行profile文件
[root@localhost software]# source /etc/profile
这样可以使配置不用重启即可立即生效
3. 安装jenkins
a. 打开http://www.jenkins.io,点击Download按钮,进入下载资源列表
b. 找到《Red Hat/Fedora/CentOS》,点击进入,最开始就是安装命令(3条)
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins (命令执行过程中有[y/d/N]提醒,输入y回车即可)
如果是linux系统是root用户登录,命令开始位置可以不用写 sudo
c. 依次执行三条命令,jenkins安装第一步完成,yum安装默认路径在 /usr/lib/jenkins 目录
执行命令:cd /usr/lib/jenkins 跳转到该目录;
执行命令:java -jar jenkins.war --httpPort=10010 启动jenkins
启动命令参数说明:java -jar 是执行war文件,--httpPort是修改启动端口,jenkins的默认端口是8080,如果不修改端口,只执行 java -jar jenkins.war 也是可以的;
最后结果显示Jenkins is fully up and running 表示jenkins启动成功,另外,结果中有被两串******间隔起来的的密码,及密码所在的文件路径,这个是jenkins的初始化验证密码
d. 在自己电脑打开浏览器,输入 http://ip:10010 打开jenkins的初始化界面
i. 如果提示无法连接到服务器,终端输入命令:firewall-cmd --list-ports 查看10010端口是否开放,如果没有,则执行命令:firewall-cmd --zone=public --add-port=10010/tcp --permanent 添加10010端口开放,然后执行命令:firewall-cmd --reload 重启防火墙使端口设置生效
ii. 如果不是正式服务器,也可以直接关闭防火墙,执行命令:systemctl stop firewalld.service 停止防火墙,执行命令:systemctl disable firewalld.service 禁止防火墙开机启动
iii. 如果是云服务器部署,除了系统防火墙之外,需要检查ecs的安全组设置,配置10010端口
e. 在浏览器的jenkins初始化界面输入验证密码(密码位置界面有提醒,到centos服务器中找);
下一步选择左边,安装推荐的插件(基本都是需要装的),如果有安装失败的插件,就在右下角点重新安装,直到所有插件安装成功,自动跳转到下一步用户注册;
填写系统信息,用户名、密码、全名、邮箱(eg:admin),点击保存并完成,点击开始使用jenkins;OK jenkins安装完成。
f. 安装额外的jenkins插件
系统管理>插件管理,点击“可选插件”选项卡,在右上角过滤中输入 Rebuilder 找到Rebuilder并勾选,再输入 Safe 找到Safe Restart 并勾选,然后点击左下角立即安装,等待安装完成。
g. 配置jenkins用户
i. 系统管理>管理用户>新建用户,创建一个普通用户(eg:buyer)
ii. 系统管理>全局安全配置,找到“授权策略”,将默认的“登录用户可以做任何事”改选为“安全矩阵”
iii. 在添加用户/组位置,输入 系统用户 (admin),点击添加,勾选所有权限;输入 新建的普通用户(buyer),勾选除了管理员权限(Administer Read)之外的其他权限;
iv. 配置完成后,点击左下角保存按钮,保存配置
h. 配置凭据(git用)
凭据>系统,点击右侧“全局凭据”,点击左侧“添加凭据”,输入git的账号密码
i. 配置jdk
系统管理>全局工具配置,右侧点击【JDK安装】按钮,输入别名(jdk8u181),输入JAVA_HOME值(/usr/lib/jvm/jdk1.8.0_181),点击 【Save】按钮保存更改
4. 安装tomcat
a. 执行命令:cd /usr/local 进入用户目录;
b. 执行命令:mkdir tomcat 创建tomcat文件夹;
c. 执行命令:cd tomcat 进入文件夹
d. 执行命令: wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.zip 下载tomcat(这里是tomcat9的下载地址,其他版本可以到tomcat官网,找到对应版本,找Core下的zip下载地址并复制)
e. 执行命令:unzip apache-tomcat-9.0.10.zip (unzip是解压命令,将下载的tomcat压缩包解压到当前目录)
f. 执行命令:cd /usr/local/tomcat/apache-tomcat-9.0.10 进入tomcat目录
g. 执行命令:chmod 755 -R bin 更改tomcat的bin目录内文件权限
h. 执行命令:cd /usr/local/tomcat/apache-tomcat-9.0.10/bin 进入tomcat的bin目录
i. 执行命令:./startup.sh 启动tomcat
5. 安装maven
a. 执行命令:cd /usr/local 进入用户目录;
b. 执行命令:mkdir maven 创建maven文件夹;
c. 执行命令:cd maven 进入文件夹
d. 执行命令: wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip 下载maven(下载地址请到官网复制:http://maven.apache.org/download.cgi)
e. 执行命令:unzip apache-maven-3.5.4-bin.zip (unzip是解压命令,解压到当前目录)
f. 执行命令:vim /etc/profile 打开系统环境配置文件,在文件末尾,增加环境变量:
MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
g. 执行命令:source /etc/profile 使修改的系统环境配置文件生效
6. 安装git
a. 执行命令:yum -y install git
b. 配置git的昵称和邮箱账户
git config --global user.name "feng"
git config --global user.email "feng@abc.com"
github还需要配置ssh,这里我用的是bitbucket,用的https ,没有用ssh,就不做ssh配置了,如有需要请自行百度
7. jenkins新建任务,配置git
a. 进入jenkins首页,点击创建新任务
b. 输入任务名称 buyer(建议用项目名字),选择“构建一个自由风格的软件项目”,点击“确定”
c. 源码管理选择git
i. Repository URL 输入https://root@bitbucket.org/team/buyer_java.git(bitbucket项目的HTTPS地址);
ii. Credentials 选择之前已经配置好的 bitbucket凭据(github也是类似的操作);
iii. Additional Behaviours,点击Add,选择“Check out to a sub-directory”,填写从bitbucket拉取的项目文件要存放的子目录地址 buyer
d. 增加构建步骤,选择执行shell,在输入框中输入要执行的shell命令,如下:
#任务执行完成后,不关闭jenkins服务
BUILD_ID=DONTKILLME
source /etc/profile
#配置运行参数
export PROJ_PATH=`pwd`
export TOMCAT_APP_PATH=/usr/local/tomcat/apache-tomcat-9.0.10
#运行部署脚本(这个是存放在项目中的脚本文件)
sh $PROJ_PATH/项目根目录名称/deploy.sh
8. 编写自动化任务(shell语句),即 项目根目录/deploy.sh ,shell命令不强制,仅做参考,可以根据自己需要编写,文件样例内容如下:
#!/usr/bin/env bash
#编译+部署springboot站点
#需要配置如下参数
# 项目路径,再Execute Shell 中配置项目路径,pwd可以获得该项目路径
# export PROJ_PATH=这个jenkins任务在部署机器上的路径
# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径
### base 函数
killTomcat()
{
pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
echo "tomcat Id list :$pid"
if [ "$pid"="" ]
then
echo "no tomcat pid alive"
else
kill -9 $pid
fi
}
cd $PROJ_PATH/buyer
mvn clean install
# 停止tomcat
killTomcat
# 备份原有工程
TS=`date +%Y%m%d%H%M%S`
BAKDIR=/usr/local/buyer_bak/$TS/
mkdir -p $BAKDIR
cp $TOMCAT_APP_PATH/webapps/ROOT $BAKDIR
cp $TOMCAT_APP_PATH/webapps/ROOT.war $BAKDIR
# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
# 复制新工程
cp $PROJ_PATH/buyer/target/buyer-0.0.1-SNAPSHOT.war $TOMCAT_APP_PATH/webapps/
# 重命名执行文件
cd $TOMCAT_APP_PATH/webapps/
mv buyer-0.0.1-SNAPSHOT.war ROOT.war
# 启动tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
9. 安装已全部完成,接下来可以执行自动化任务进行测试了。