0
点赞
收藏
分享

微信扫一扫

【Linux】基于 Jenkins 自动打包并部署 Tomcat 环境/docker环境/PHP环境

逸省 2022-10-24 阅读 101

在这里插入图片描述

目录

jenkins的基本配置

1、修改 jenkins 初始密码

1 点击Jenkins的管理
2 进入用户
3 设置修改密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、安装 Jenkins 必要插件

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

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、配置 jenkins 并发执行数量

用于提高提高执行效率
Manage Jenkins >> Configure System >> Maven 项目配置

在这里插入图片描述

并发执行者数量 如果构建任务数量多的时候,我们可以在同一时间内构建多个;
默认是2个

在这里插入图片描述

4、配置邮件地址

在测试完成后,主动发邮件告知测试情况
Manage Jenkins >> Configure System >> Jenkins Location

在这里插入图片描述在这里插入图片描述在这里插入图片描述

基于 Jenkins 自动打包并部署 Tomcat 环境

传统网站部署的流程

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/c9acdc7b28b1472eb27e3ee224475e1e.png

传统代码上线的过程

主流网站部署的流程

在这里插入图片描述

  代码仓库中有Jenkins可直接进行打包和部署不需要开发人员进行打包,只要选择分支上的代码需要上线,会自动打包和构建.部署在内网测试的测试结果也会反馈给开发。

Jenkins工作原理及实验准备

在这里插入图片描述

1、开发人员写代码 将代码往服务器上推送
2、Jenkins负责从Git服务器里面拉取开发人员提交的代码
3、Jenkins拉取代码之后会对代码进行一个构建,服务器上构建后直接部署在web上
4、而我们用户需要做的事情就是访问web,对其进行一个测试

首先准备三台服务器

操作系统IP地址主机名参与角色
CentOS7.7172.16.11.203gitgit服务器
CentOS7.7172.16.11.202jenkinsjenkins服务器
CentOS7.7172.16.11.204tomcattomcat服务器

其次关闭防火墙和沙盒

#关闭防火墙
systemctl stop firewalld
iptables -F
#关闭沙盒
setenforce 0

1、配置 git 主机

安装 git 并配置 git 用户信息

#安装git
[root@git ~]# yum -y install git

#添加git用户
[root@git ~]# useradd git

#git设置密码
[root@git ~]# echo "123456" | passwd --stdin git

创建本地仓库 probe

#切换到git用户
[root@git ~]# su - git
上一次登录:五 1021 15:49:10 CST 2022pts/0 上

#创建probe.git目录
[git@git ~]$ mkdir probe.git

#切换到probe.git目录
[git@git ~]$ cd probe.git

#初始化空的 Git 版本库于 /home/git/probe.git/
[git@git probe.git]$ git --bare init

#退出git用户
[git@git probe.git]$ exit

克隆项目代码同步到自己创建的仓库中

[root@git ~]# git clone https://github.com/psi-probe/psi-probe
[root@git ~]# git clone git@172.16.11.203:/home/git/probe.git
[root@git ~]# cp -rf psi-probe/* probe/
[root@git ~]# cd probe/
[root@git probe]# git add . 

#新安装的git要配置相关信息
[root@git probe]# git config --global user.email "admin@163.com"
[root@git probe]# git config --global user.name "admin"
[root@git probe]# git commit -m "all probe"
[root@git probe]# git push origin master

2、配置 jenkins 主机

① 给Jenkins添加验证凭据
在 Jenkins 的首页中点击“凭据”进入凭据页面;
注:有是版本不一样,位置不一样,根据自己的实际版本来定;

在这里插入图片描述

在凭据页面中,点击“Jenkins”跳转到“系统”页面。点击左侧导航栏中“添加域”,跳转到“添加域”页面。在该页面创建域名为“crushlinux”并点击“ok”完成配置。

在这里插入图片描述
在添加域里面添加的用户名的密码是web服务器的
Jenkins要往web服务器上面去部署,所以Jenkins要有权限去远程连接web服务器

在这里插入图片描述

点击左侧导航栏中的“添加凭据”。

在这里插入图片描述在这里插入图片描述

填写以上数据后,点击“确定”就可以查看到新增的远程 web 主机账号。

在这里插入图片描述
② 添加 Publish Over SSH 远程主机
在主机名为 web 的主机上上创建远程目录。

#目录的作用jenkins就是判断目录是否存在
[root@tomcat ~]# mkdir /data

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

③ 配置 Maven、JDK、Git 环境
Jenkins需要构建任务还要去配置Maven JDK Git 集成的工具

[root@jenkins ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@jenkins ~]# mv jdk1.8.0_191/ /usr/local/java
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins ~]# rm -rf /usr/bin/java
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

在这里插入图片描述在这里插入图片描述

  在“Global Tool Configuration”配置界面中找到 Maven 配置选项,然后点击“新增Maven”并设置别名为“Maven3.5”。

[root@jenkins ~]# tar xf apache-maven-3.5.0-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.5.0 /usr/local/maven-3.5.0

为 maven 更换阿里云镜像站

在进行打包的时候Maven会下载很多的jar包默认的下载的地址是apache官网地址 会下载很慢更改Maven的下载地址

[root@jenkins ~]# vim /usr/local/maven-3.5.0/conf/settings.xml
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>

之后可能会报错,可以使用先使用apache官网下载地质下载jar包

在这里插入图片描述
Git 配置

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

在这里插入图片描述

以上全局基本配置完毕后,点击保存即可完成。

3、配置 web 主机

部署web 部署一个Java的项目所以要部署tomcat

[root@tomcat ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@tomcat ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@tomcat ~]# mv jdk1.8.0_191/ /usr/local/java
[root@tomcat ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
[root@tomcat ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@tomcat ~]# source /etc/profile
[root@tomcat ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

发布公钥给 jenkins 主机

[root@tomcat ~]# ssh-keygen
[root@tomcat ~]# ssh-copy-id 172.16.11.202

web主机将公钥发送给Jenkins

4、新建 Maven 项目

  在以上配置完成后,回到 Jenkins 首页,选择“新建任务”,然后输入一个任务名称“probe”,并选中“Maven project”点击当前页面下方的“确定”按钮。

在这里插入图片描述在这里插入图片描述

在点击“确定”按钮后,选择“源码管理”选中“Git”,配置“RepositoriesURL”为git@172.16.11.203:/home/git/probe.g

在这里插入图片描述

主机 Jenkins 默认用 jenkins 用户去连接 git,所以用 jenkins 用户生成密钥对,并发送给 git。

[root@jenkins ~]# id jenkins
uid=988(jenkins) gid=982(jenkins)=982(jenkins)
[root@jenkins ~]# su -s /bin/bash jenkins
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id git@172.16.11.203

Jenkins将公钥文件发送给git用户;我们要注意的是Jenkins运行是一个程序用户,无法登录的我们要-s 指定/bin/bash 将秘钥对发送给指定的git 用户;

在这里插入图片描述在这里插入图片描述

选择“构建后操作“中的“send build artfacts over SSH” “Exec command”中执行命令的含义是:在自动部署前先杀掉 Tomcat 进程,然后删除 war 包,用 scp 远程拷贝命令将Jenkins 自动打包好的项目 war 包拷贝到当前 Tomcat 应用目录。 然后重启 Tomcat 。

scp 172.16.11.202:/var/lib/jenkins/workspace/probe/psi-probe-web/target/probe.war
/usr/local/tomcat/webapps/
/usr/local/tomcat/bin/startup.sh

将Jenkins的war包推送到tomcat的webapps目录下自动解压

在这里插入图片描述

  以上全部配置完成后,点击保存即可。然后点击刚才创建的“probe”->“Build Now”直至项目构建完成。构建过程可以在“控制台输出”中查看到。

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

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

在 web 主机上查看 probe 目录是否被拷贝到/usr/local/tomcat/webapps 目录下

[root@tomcat ~]# ls /usr/local/tomcat/webapps/
docs examples host-manager manager probe probe.war ROOT
[root@tomcat ~]# ls /usr/local/tomcat/webapps/probe -l
总用量 20
drwxr-x--- 3 root root 66 620 12:12 css
drwxr-x--- 2 root root 8192 620 12:12 flags
-rw-r----- 1 root root 536 620 09:55 index.jsp
drwxr-x--- 3 root root 148 620 12:12 js
drwxr-x--- 3 root root 76 620 12:12 META-INF
drwxr-x--- 6 root root 4096 620 12:12 WEB-INF
从以上结果来看,Jenkins 已把打好的 probe war 包拷贝过来了。

从构建后的执行命令可以看出,Tomcat 已经重新启动,通过浏览器访问测试 probe 监控系统。http://172.16.11.204:8080/probe。

在这里插入图片描述

[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users> # 在此行前加入上面三行
[root@tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

在这里插入图片描述

至此,Jenkins 自动打包部署完毕。

基于 Jenkins 自动打包并部署 docker 环境

1、安装 docker-ce

在 172.16.11.204机器上,构建 tomcat 基础镜像。在构建基础镜像之前需要先安装 Docker与 JDK。

[root@docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]# ls /etc/yum.repos.d/
backup CentOS-Base.repo CentOS-Media.repo docker-ce.repo

[root@docker ~]# yum -y install docker-ce
[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl enable docker
[root@docker ~]# docker version
Client:
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77156
Built: Sat May 4 02:34:58 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.6
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:02:43 2019
OS/Arch: linux/amd64
Experimental: false/

2、阿里云镜像加速器

[root@docker ~]# cat << END > /etc/docker/daemon.json
{ "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
[root@docker ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7
sha256:58584b57ef9c5545816baaf39dd089d04c671c9faa1414e85fa245b167416603
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
centos 7 58584b57ef9c 11 seconds ago
589MB

3、构建 tomcat 基础镜像

[root@docker ~]# mkdir docker-tomcat
[root@docker ~]# cd docker-tomcat
[root@docker docker-tomcat]# ls
apache-tomcat-8.5.16.tar.gz jdk-8u191-linux-x64.tar.gz
[root@docker docker-tomcat]# cat Dockerfile
FROM centos:7
MAINTAINER from crushlinux <crushlinux@163.com>
#copy jdk and tomcat into image
ADD ./apache-tomcat-8.5.16.tar.gz /usr/local/
ADD ./jdk-8u191-linux-x64.tar.gz /usr/local
#set variable
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV PATH $JAVA_HOME/bin:$PATH
#container starts up
ENTRYPOINT /usr/local/apache-tomcat-8.5.16/bin/startup.sh && tail -F
/usr/local/apache-tomcat-8.5.16/logs/catalina.out
[root@docker docker-tomcat]# docker build -t tomcat:v1 . [root@docker docker-tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
tomcat v1 1f25cb55c54b 23 seconds ago
999MB
centos 7 58584b57ef9c 8 minutes ago
589MB

4、构建一个 Maven 项目

在以上配置完成后,回到 Jenkins 首页,选择“新建任务”,然后输入一个任务名称“probe-docker”,并选择“Maven project”配置项,点击当前页面下方的“确定”按钮。

在这里插入图片描述

在点击“确定”按钮,选择“源码管理”并选中“Git”,设置“Repository URL”地址。

在这里插入图片描述

选择“Build”-> clean package -Dmaven.test.skip=true

在这里插入图片描述

在上一步后面选择“构建后操作”中的“Send build artfacts over SSH”选项并进行。

scp 172.16.11.202: /var/lib/jenkins/workspace/probe/psi-probe-web/target/probe.war /data/
docker run -itd --name tomcat-test -p 8090:8080 -v /data:/usr/local/apache-tomcat-8.5.16/webapps tomcat:v1

在这里插入图片描述

  以上全部配置完成后,点击保存即可。然后点击刚才创建的工程任务“probe-docker “->” Build new”直至任务构建完成。开始构建过程中可以点击进度条查看

在这里插入图片描述

  可以看到此工程任务已构建成功,并且在构建后,创建用于 docker 项目的 Docker Web环境命令也执行成功。

[root@tomcat ~]# ls /data/
probe probe.war
[root@tomcat ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS
NAMESac8fefaac75f tomcat:v1 "/bin/sh -c '/usr/lo…" 39
seconds ago Up 37 seconds 0.0.0.0:8090->808
0/tcp tomcat-test

在这里插入图片描述

基于 Jenkins 自动化部署 PHP 环境

准备 git 仓库

[root@git ~]# su - git
上一次登录:五 1021 11:40:59 CST 2022pts/0 上
[git@git ~]$ mkdir php.git
[git@git ~]$ cd php.git
[git@git php.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/php.git/
[git@git php.git]$ exit
登出

上传代码到仓库

[root@git ~]# git clone git@172.16.11.203:/home/git/php.git
正克隆到 'php'... git@172.16.11.203's password:
warning: 您似乎克隆了一个空版本库。
[root@git ~]# cd php/
[root@git php]# cat << EOF > index.php
<?php
phpinfo();
?>
EOF
[root@git php]# git add . [root@git php]# git commit -m "all"
[master(根提交) 4ec0ba3] all
1 file changed, 3 insertions(+)
create mode 100644 index.php
[root@git php]# git push origin master
git@192.168.200.111's password:
Counting objects: 3, done. Writing objects: 100% (3/3), 218 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0)
To git@172.16.11.203:/home/git/php.git * [new branch] master -> master

部署 web 主机环境

[root@web ~]# yum install -y httpd mariadb-server mariadb mariadb-devel php php-mysql
[root@web ~]# systemctl start httpd
[root@web ~]# systemctl start mariadb

在这里插入图片描述

Jenkins 主机将密钥发布到 web 主机

[root@jenkins ~]# su -s /bin/bash jenkins
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id root@172.16.11.204

基于 rsync 部署

创建一个 Freestyle project

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述在这里插入图片描述

[root@web ~]# ls /var/www/html/
index.php
[root@web ~]# cat /var/www/html/index.php
<?php
phpinfo();
?>

在这里插入图片描述

基于 ansible 部署

[root@jenkins ~]# rpm -ivh epel-release-latest-7.noarch.rpm
[root@jenkins ~]# yum -y install ansible
[root@jenkins ~]# vim /etc/ansible/hosts
[webserver]
172.16.11.204

修改 jenkins 运行用户

[root@jenkins ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
[root@jenkins ~]# /etc/init.d/jenkins restart
Restarting jenkins (via systemctl): [ 确定 ]

添加 Ansible 插件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id git@172.16.11.203
[root@jenkins ~]# ssh-copy-id root@172.16.11.204

在这里插入图片描述

src=${WORKSPACE} dest=/var/www/html rsync_opts=–exclude=.git

在这里插入图片描述

在这里插入图片描述

[root@web ~]# cat /var/www/html/php-ansible/index.php
<?php
phpinfo();
?>

在这里插入图片描述

至此所有就完成了;

举报

相关推荐

0 条评论