收款定制开发【Linux】基于 Jenkins 自动打包并部署 Tomcat 环境/docker环境/PHP环境

🍁博主简介
  🏅
  🏅
  🏅
💊交流社区: 收款定制开发欢迎大家的加入!

目录

收款定制开发的基本配置

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 环境

收款定制开发传统网站部署的流程

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


传统代码上线的过程

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

主流网站部署的流程

  目前主流网站部署方法:通过 Hudson/Jenkins 工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins 非常易于安装和配置,简单易用。

  • 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、Git 仓库即可。
  • 运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。
  • 测试人员:可以通过 Jenkins 进行简单的代码及网站测试。

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

Jenkins工作原理及实验准备

  Jenkins 的工作原理是先将源代码从 SVN/Git 版本控制系统中拷贝一份到本地,然后根据设置的脚本调用 Maven 进行 build(构建)。整个系统的关键就是 build 脚本,build脚本告诉 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 firewalldiptables -F#关闭沙盒setenforce 0
  • 1
  • 2
  • 3
  • 4
  • 5

1、配置 git 主机

安装 git 并配置 git 用户信息

#安装git[root@git ~]# yum -y install git#添加git用户[root@git ~]# useradd git#git设置密码[root@git ~]# echo "123456" | passwd --stdin git
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

创建本地仓库 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

[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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、配置 jenkins 主机

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

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


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

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

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


② 添加 Publish Over SSH 远程主机
在主机名为 web 的主机上上创建远程目录。

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

  在 Jenkins 首页中点击“Manage Jenkins”->“Configure System”-“Publish overSSH”->“SSH Servers”->“增加”选项按钮,添加 SSH 远程主机。如图 3.13 所示,输入 Name、Hostname、Username 等必要信息后,点击“高级”选项按钮->勾选“Use Passwordauthentication,or use a different key”选项->输入“远程主机登录密码”->“TestConfiguration”测试远程主机配置。测试远程主机配置成功后点击“保存”按钮即可。


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

  在 Jenkins 首页中点击“Manage Jenkins”->“Global Tool Configuration”->“JDK”->新增“JDK”,设置 JDK 别名为”JDK1.8”。去掉“Install automatically”选项,设置 “JAVA_HOME”为本案例中 JDK 实际安装路径。

[root@jenkins ~]# tar xf jdk-8u191-linux-x64.tar.gz[root@jenkins ~]# mv jdk1.8.0_191/ /usr/local/java[root@jenkins ~]# vim /etc/profileexport JAVA_HOME=/usr/local/java/export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport PATH=$JAVA_HOME/bin:$PATH[root@jenkins ~]# rm -rf /usr/bin/java[root@jenkins ~]# source /etc/profile[root@jenkins ~]# java -versionjava 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

  在“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
  • 1
  • 2

为 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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


Git 配置

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

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

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/profileexport JAVA_HOME=/usr/local/java/export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport PATH=$JAVA_HOME/bin:$PATH[root@tomcat ~]# source /etc/profile[root@tomcat ~]# java -versionjava 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

发布公钥给 jenkins 主机

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

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 jenkinsuid=988(jenkins) gid=982(jenkins)=982(jenkins)[root@jenkins ~]# su -s /bin/bash jenkinsbash-4.2$ ssh-keygenbash-4.2$ ssh-copy-id git@172.16.11.203
  • 1
  • 2
  • 3
  • 4
  • 5

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
  • 1
  • 2
  • 3

将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总用量 20drwxr-x--- 3 root root 66 620 12:12 cssdrwxr-x--- 2 root root 8192 620 12:12 flags-rw-r----- 1 root root 536 620 09:55 index.jspdrwxr-x--- 3 root root 148 620 12:12 jsdrwxr-x--- 3 root root 76 620 12:12 META-INFdrwxr-x--- 6 root root 4096 620 12:12 WEB-INF从以上结果来看,Jenkins 已把打好的 probe war 包拷贝过来了。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

从构建后的执行命令可以看出,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> # 在此行前加入上面三行
  • 1
  • 2
  • 3
  • 4
  • 5
[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
  • 1
  • 2
  • 3
  • 4

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

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

1、安装 docker-ce

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

[root@docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repohttp://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-repohttp://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 versionClient:Version: 18.09.6API version: 1.39Go version: go1.10.8Git commit: 481bc77156Built: Sat May 4 02:34:58 2019OS/Arch: linux/amd64Experimental: falseServer: Docker Engine - CommunityEngine:Version: 18.09.6API version: 1.39 (minimum version 1.12)Go version: go1.10.8Git commit: 481bc77Built: Sat May 4 02:02:43 2019OS/Arch: linux/amd64Experimental: false/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

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:7sha256:58584b57ef9c5545816baaf39dd089d04c671c9faa1414e85fa245b167416603[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATEDSIZEcentos 7 58584b57ef9c 11 seconds ago589MB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、构建 tomcat 基础镜像

[root@docker ~]# mkdir docker-tomcat[root@docker ~]# cd docker-tomcat[root@docker docker-tomcat]# lsapache-tomcat-8.5.16.tar.gz jdk-8u191-linux-x64.tar.gz[root@docker docker-tomcat]# cat DockerfileFROM centos:7MAINTAINER from crushlinux <crushlinux@163.com>#copy jdk and tomcat into imageADD ./apache-tomcat-8.5.16.tar.gz /usr/local/ADD ./jdk-8u191-linux-x64.tar.gz /usr/local#set variableENV JAVA_HOME /usr/local/jdk1.8.0_191ENV PATH $JAVA_HOME/bin:$PATH#container starts upENTRYPOINT /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 imagesREPOSITORY TAG IMAGE ID CREATEDSIZEtomcat v1 1f25cb55c54b 23 seconds ago999MBcentos 7 58584b57ef9c 8 minutes ago589MB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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
  • 1
  • 2

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

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

[root@tomcat ~]# ls /data/probe probe.war[root@tomcat ~]# docker psCONTAINER ID IMAGE COMMAND CREATEDSTATUS PORTSNAMESac8fefaac75f tomcat:v1 "/bin/sh -c '/usr/lo…" 39seconds ago Up 37 seconds 0.0.0.0:8090->8080/tcp tomcat-test
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

基于 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登出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上传代码到仓库

[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<?phpphpinfo();?>EOF[root@git php]# git add . [root@git php]# git commit -m "all"[master(根提交) 4ec0ba3] all1 file changed, 3 insertions(+)create mode 100644 index.php[root@git php]# git push origin mastergit@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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

部署 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
  • 1
  • 2
  • 3

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

[root@jenkins ~]# su -s /bin/bash jenkinsbash-4.2$ ssh-keygenbash-4.2$ ssh-copy-id root@172.16.11.204
  • 1
  • 2
  • 3

基于 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<?phpphpinfo();?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

基于 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
  • 1
  • 2
  • 3
  • 4
  • 5

修改 jenkins 运行用户

[root@jenkins ~]# vim /etc/sysconfig/jenkinsJENKINS_USER="root"[root@jenkins ~]# /etc/init.d/jenkins restartRestarting jenkins (via systemctl): [ 确定 ]
  • 1
  • 2
  • 3
  • 4

添加 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
  • 1
  • 2
  • 3

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

[root@web ~]# cat /var/www/html/php-ansible/index.php<?phpphpinfo();?>
  • 1
  • 2
  • 3
  • 4

至此所有就完成了;

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发