jenkins自动化集成部署

安装配置Jenkins
基本环境配置
[root@localhost ~]# hostname jenkins
[root@localhost ~]# bash
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# setenforce 0

软件要求(JDK环境)
[root@jenkins ~]# rpm -q java-1.8.0-openjdk
java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
[root@jenkins ~]# java -version
openjdk version “1.8.0_131”
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

Jenkins安装方式一:war包
先安装tomcat将jenkins.war直接放到webapps目录下
通过java -jar jenkins.war --httpPort=8080 命令直接运行

官方仓库 https://pkg.jenkins.io/redhat-stable/
清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
下载相应的数据包即可,这里用的是jenkins-2.181-1.1.noarch.rpm
Jenkins安装方式二:rpm方式(推荐)
[root@jenkins ~]# rpm -ivh jenkins-2.181-1.1.noarch.rpm
[root@jenkins ~]# service jenkins start
[root@jenkins ~]# netstat -anpt |grep 8080
tcp6 0 0 :::8080 ::😗 LISTEN 2680/java

RPM包安装的内容
[root@jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins #启动文件
/etc/logrotate.d/jenkins #日志分割配置文件
/etc/sysconfig/jenkins #jenkins主配置文件
/usr/lib/jenkins #存放war包目录
/usr/lib/jenkins/jenkins.war #war包
/usr/sbin/rcjenkins #命令
/var/cache/jenkins #war包解压目录jenkins网页代码目录
/var/lib/jenkins #jenkins工作目录
/var/log/jenkins #日志

配置文件说明
[root@jenkins ~]# grep “1” /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins" #jenkins工作目录
JENKINS_JAVA_CMD=""
JENKINS_USER=“jenkins” #jenkins启动用户
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT=“8080” #端口
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL=“5”
JENKINS_ENABLE_ACCESS_LOG=“no”
JENKINS_HANDLER_MAX=“100” #最大连接
JENKINS_HANDLER_IDLE=“20”
JENKINS_ARGS=""

浏览器测试访问:http://192.168.100.100:8080

解锁jenkins,初始密码可从上图相应文件中获取
[root@jenkins jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
76ef315e086847eba63aba67c97c7bb9

接下来是安装自定义的相关插件,但是由于网络原因,可能会出现离线导致无法安装,或者由于插件源问题导致下载速度很慢的问题,可用通过如下办法解决:

进入jenkins工作目录:/var/lib/jenkins
[root@localhost ~]# cd /var/lib/jenkins/updates/
[root@localhost updates]# vim default.json
:1,KaTeX parse error: Undefined control sequence: \/ at position 9: s/https:\̲/̲\/updates.jenki…s/http://www.google.com/https://www.baidu.com/g
进入末行模式,进行如上修改

1、重新启动jenkins服务,并重新加载网页
[root@jenkins jenkins]# service jenkins restart

选择安装推荐的插件
开始安装插件

Jenkins配置
1、修改jenkins初始密码

重新登录

2、安装Jenkins必要插件
在Jenkins首页中,点击左侧的Manager Jenkins>>Manager Plugins>>可选插件,在过滤搜索框中输入要安装的Publish Over SSH、Maven Integration插件,并勾选其左侧的复选框,点击“直接安装”即可开始插件安装操作。

3、配置jenkins并发执行数量
用于提高执行效率
Manage Jenkins >> Configure System

基于Jenkins自动打包并部署tomcat环境
传统网站部署的流程
在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析原型设计开发代码提交代码内网部署内网测试确认上线备份数据外网更新外网测试发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码;如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。

传统代码上线的过程
开发人员发起代码上线需求(邮件中包含做好的war包) 运维人员连接线上负载调度器(nginx) 隔离一组服务器(tomcat) 连接服务器(tomcat) 备份旧代码(tar打包) 删除旧代码目录 上传新的war包 外网测试 测试不通过则通过备份回滚代码 测试通过则利用rsync的脚本推送代码到其他服务器统一外网测试 连接调度器恢复隔离机制 隔离另一组服务器实施上线步骤 上线完成

目前主流网站部署的流程
目前主流网站部署方法:通过Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、Git仓库即可。
运维人员:减轻人工干预的错误率,同时解放运维人员的繁杂的上传代码、手动备份、更新等操作。
测试人员:可以通过Jenkins进行简单的代码及网站测试。

Jenkins的工作原理是先将源代码从SVN/git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build(构建)。整个系统的关键就是build脚本,build脚本告诉Jenkins在一次集成中需要执行的任务。

实验环境
操作系统 IP地址 主机名 角色
Centos7.4 192.168.100.100 Jenkins Jenkins服务器
Centos7.4 192.168.100.101 Git Git服务器
Centos7.4 192.168.100.102 Tomcat Web服务器
所有主机关闭防火墙和seliunx
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables –F
1、配置git主机
安装git并配置git用户信息
[root@git yum.repos.d]# yum -y install git
[root@git yum.repos.d]# useradd git
[root@git yum.repos.d]# passwd git
创建本地仓库probe
[root@git ~]# su - git
[git@git ~]$ mkdir probe.git
[git@git ~]$ cd probe.git/
[git@git probe.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/probe.git/
[git@git probe.git]$ exit

克隆项目代码同步到自己创建的仓库中
[root@git ~]# git clone https://github.com/psi-probe/psi-probe
[root@git ~]# git clone git@192.168.100.101:/home/git/probe.git
[root@git ~]# cp -rf psi-probe/* probe/
[root@git ~]# cd probe/
[root@git ~]# git add .
[root@git ~]# git config --global user.email z17600977372@163.com
[root@git ~]# git config --global user.name “zk”
[root@git ~]# git commit -m “all probe”
[root@git ~]# git push origin master

2、配置jenkins主机
添加验证凭据
在jenkins的首页点击“凭据”进入凭据页面

4

添加publish over ssh 远程主机
在主机名为web的主机上创建远程目录
[root@tomcat ~]# mkdir /data
在Jenkins首页中点击“Manager Jenkins”“Configure system”“publish over ssh”“SSH Servers” “增加”选项按钮,添加SSH远程主机。

配置Maven、JDK、Git环境
[root@jenkins ~]# tar -xf jdk-8u60-linux-x64.tar.gz
[root@jenkins ~]# mv jdk1.8.0_60/ /usr/local/java
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH= J A V A H O M E / l i b / t o o l s . j a r : JAVA_HOME/lib/tools.jar: JAVAHOME/lib/tools.jar:JAVA_HOME/lib/dt.jar
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
[root@jenkins ~]# rm -rf /usr/bin/java
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version “1.8.0_60”
Java™ SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot™ 64-Bit Server VM (build 25.60-b23, mixed mode)

配置maven
[root@jenkins ~]# tar -xf apache-maven-3.6.1-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.6.1 /usr/local/maven
[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml

nexus-aliyun
central
Nexus aliyun
https://maven.aliyun.com/repository/central

配置git
[root@jenkins ~]# which git
/usr/bin/git

3、配置web主机
[root@tomcat ~]# tar -xf apache-tomcat-8.5.41.tar.gz
[root@tomcat ~]# tar -xf jdk-8u60-linux-x64.tar.gz
[root@tomcat ~]# mv jdk1.8.0_60/ /usr/local/java
[root@tomcat ~]# mv apache-tomcat-8.5.41 /usr/local/tomcat
[root@tomcat ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH= J A V A H O M E / l i b / t o o l s . j a r : JAVA_HOME/lib/tools.jar: JAVAHOME/lib/tools.jar:JAVA_HOME/lib/dt.jar
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
[root@tomcat ~]# source /etc/profile
[root@tomcat ~]# java -version
java version “1.8.0_60”
Java™ SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot™ 64-Bit Server VM (build 25.60-b23, mixed mode)
发布公钥给jenkins主机
[root@tomcat ~]# ssh-keygen
[root@tomcat ~]# ssh-copy-id 192.168.100.100

4、新建maven项目
在以上任务完成后,回到jenkins首页,选择“新建任务”,然后输入一个任务名称“probe”,并选中“maven project” 点击当前页面下方的“确定按钮”

在点击确定后,选择“源码管理”选中“git”,配置“repositoriesURL”为git@192.168.100.101:/home/git/probe.git

主机jenkins默认用jenkins用户去连接git,所以用jenkins用户生成秘钥对,并发给git
[root@jenkins ~]# su -s /bin/bash Jenkins
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id git@192.168.100.101

选择build

选择“构建后操作”中的“send build artfacts over ssh” “exec command”中执行命令的含义是:在自动部署前先杀掉,Tomcat进程,然后删除war包,用scp远程拷贝命令将Jenkins自动打包好的项目war包拷贝到当前tomcat应用目录。然后重启tomcat
scp 192.168.100.100:/var/lib/jenkins/workspace/probe/psi-probe-web/target/probe.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/startup.sh

以上都完成后点击保存,
点击build Now,开始进行自动化构建。

5、验证jenkins自动打包部署的结果

构建成功
访问tomcat相应网页测试

构建成功
基于Jenkins自动化部署PHP环境
准备git仓库
[git@git ~]$ mkdir php.git
[git@git ~]$ cd php.git/
[git@git php.git]$ git --bare init
[git@git php.git]$ exit

上传代码到仓库
git clone git@192.168.100.101:/home/git/php.git
正克隆到 ‘php’…
git@192.168.100.101’s password:
warning: 您似乎克隆了一个空版本库。
[root@git ~]# cd php/
[root@git php]# cat << EOF> index.php

<?php phpinfo(); ?>

EOF
[root@git php]# ls
index.php
[root@git php]# git add .
[root@git php]# git commit -m “all”
[root@git php]# git push origin master

部署web主机
yum -y install httpd mariadb-server mariadb mariadb-devel php php-mbstring php-mysql php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel ntpdate
[root@tomcat ~]# systemctl start httpd
[root@tomcat ~]# systemctl start mariadb

Jenkins将主机秘钥发送给web主机
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id root@192.168.100.102

基于rsync部署
创建一个Freestyle project

rsync -avz --delete * root@192.168.100.102:/var/www/html

[root@tomcat ~]# ls /var/www/html/
index.php


  1. a-Z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值