基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天

news2025/1/11 21:48:12

第四阶段提升

时  间:2023年8月23日

参加人:全班人员

内  容:

基于Jenkins部署docker、PHP环境

目录

一、环境部署

(一)实验环境,服务器设置

(二)所有主机关闭防火墙和selinux,修改主机名

(三)配置git主机

(四)配置jenkins主机

(五)Jenkins配置

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

Tomcat主机操作:

结果验证:

三、基于Jenkins自动化部署PHP环境

(一)Git服务器操作:

(二)Tomcat端操作:

(三)Jenkins操作:

网页访问测试:

四、基于ansible部署php环境

Jenkins操作:

结果测试:


一、环境部署

(一)实验环境,服务器设置

IP地址

主机名

角色

192.168.100.131

git

git服务器

192.168.100.132

Jenkins git客户端

Ansible

jenkins服务器

192.168.100.133

tomcat,docker,httpd

web服务器

(二)所有主机关闭防火墙和selinux,修改主机名

git主机

Jenkins主机

web主机

(三)配置git主机

1、# rpm安装安装依赖关系:1和2都安

[root@gitclient ~]# yum -y install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel

2、# 编译安装—服务端和客户端,访问https://mirrors.edge.kernel.org/pub/software/scm/git/下载所需要的版本

[root@gitclient ~]# tar xf git-2.22.0.tar.gz -C /usr/src/

[root@gitclient ~]# cd /usr/src/git-2.22.0/

[root@git git-2.22.0]# make configure

[root@git git-2.22.0]# ./configure --prefix=/usr/local/git && make && make install

        Ps备注:如上图,出现了/bin/sh: autoconf: 未找到命令make: *** [configure] 错误 127,怎么办?

根据提示安装autoconf

[root@git git-2.22.0]# yum -y install autoconf

再重新配置编译安装!

[root@git git-2.22.0]# ln -sf /usr/local/git/bin/git /usr/bin/

[root@git git-2.22.0]# git --version

3、#在git服务端配置用户

[root@git ~]# useradd git

[root@git ~]# echo "123456" | passwd --stdin git

4、创建本地仓库probe

[root@git ~]# su - git

[git@git ~]$ mkdir probe.git

[git@git ~]$ cd probe.git

[git@git probe.git]$ git --bare init

[git@git probe.git]$ exit

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

[root@git ~]# rz  #上传psi-probe.tar.gz

[root@git ~]# tar xf psi-probe.tar.gz

[root@git ~]# git clone git@192.168.100.131:/home/git/probe.git

[root@git ~]# cp -rf psi-probe/* probe/

[root@git ~]# cd probe/

[root@git probe]# git add .

[root@git probe]# git config --global user.email "13363571949@163.com"

[root@git probe]# git config --global user.name "huyang"

[root@git probe]# git config --list

[root@git probe]# git commit -m "all probe"

[root@git probe]# git push origin master

(四)配置jenkins主机

1、源码安装jenkins

[root@jenkins ~]#rm -rf /usr/bin/java

[root@jenkins ~]#tar xf jdk-17_linux-x64_bin.tar.gz

[root@jenkins ~]#mv jdk-17.0.8 /usr/local/java

[root@jenkins ~]#vim /etc/profile

[root@jenkins ~]#source /etc/profile

[root@jenkins ~]#java -version

[root@jenkins ~]# rpm -ivh jenkins-2.401-1.1.noarch.rpm

2、启动jenkins

[root@jenkins ~]# jenkins start (保持打开状态)

密码如图:

[root@jenkins ~]# netstat -lnpt | grep :8080

3、web配置

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

输入秘钥:

解锁Jenkins,密码从命令行中获取

 输入授权密码,然后点击下一步

选择安装推荐的插件

自动下载插件(状态全绿下一步)

状态有红色,重头再安装

状态有红色,重启后也可进,但是有插件安装错误,会影响

全绿之后操作:

创建管理员用户,选择使用admin账户继续!

实例配置,保存并完成!

点击开始使用

可以使用了!

(五)Jenkins配置

1、安装 Jenkins 必要插件

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

查看:

页面最下方:

2、添加验证凭据

凭证这里添不添加都可以,这个试验不牵扯到凭证

如图操作:

如图操作:

如图操作:

如图操作:

如图操作:

在凭据页面中,点击“system”跳转到“系统”页面。点击左侧导航栏中“添加域”,

跳转到“添加域”页面。在该页面创建域名为“web”并点击“ok”完成配置。

“添加凭据”

点击“+Add Credentials”

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

3、添加 Publish Over SSH 远程主机

在Jenkins 首页中点击“Manage Jenkins”->“Configure System”->“Publish over SSH”->“SSH Servers”->“增加”选项按钮,添加 SSH 远程主机:

如图所示,输入 Name、Hostname、Username 等必要信息后,点击“高级”选项按钮->勾选“Use Password authentication,or use a different key”选项->输入“远程主机登录密码”->“Test Configuration”测试远程主机配置。测试远程主机配置成功后点击“保存”按钮即可。

4、配置 Maven、JDK、Git 环境

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

/usr/local/java

5、在Jenkins安装maven

[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

6、为maven更换阿里云镜像站

[root@jenkins ~]# vim /usr/local/maven-3.5.0/conf/settings.xml

#删除两个<mirrors>中的所有东西,大概12行,把下面的阿里云镜像站添加到两个<mirrors>中

    <mirror>

        <id>nexus-aliyun</id>

        <mirrorOf>central</mirrorOf>

        <name>Nexus aliyun</name>

<url>http://maven.aliyun.com/nexus/content/groups/public</url>

</mirror>

最后达到的效果

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

7、Git 配置

[root@jenkins ~]# which git

/usr/bin/git

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

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

Tomcat主机操作:

1、安装docker-ce

[root@tomcat ~]# mkdir /data

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

[root@tomcat ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@tomcat ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

[root@tomcat ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@tomcat ~]# ls /etc/yum.repos.d/

[root@tomcat ~]# yum -y install docker-ce

[root@tomcat ~]# systemctl start docker

[root@tomcat ~]# systemctl enable docker

[root@tomcat ~]# docker version

2、阿里云镜像加速器

[root@tomcat ~]# cat << END > /etc/docker/daemon.json

{

        "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

}

END

[root@tomcat ~]# systemctl daemon-reload

[root@tomcat ~]# systemctl restart docker

下载centos:7镜像

[root@tomcat ~]# docker pull centos7

[root@tomcat ~]# docker images

3、构建tomcat 基础镜像 

[root@tomcat ~]# mkdir docker-tomcat

[root@tomcat ~]# cd docker-tomcat

[root@tomcat docker-tomcat]# ls

[root@tomcat docker-tomcat]# cat Dockerfile

[root@tomcat docker-tomcat]# docker build -t tomcat:v1  .

[root@tomcat docker-tomcat]# docker images

4、构建一个Maven项目

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

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

git@192.168.100.131:/home/git/probe.git

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

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

而后输入下列内容:

name:web

Exec command

scp 192.168.100.132:/root/.jenkins/workspace/probe-docker/psi-probe-web/target/probe.war /data/

docker run -itd --name tomcat-test -p 8090:8080 -v /data:/usr/local/apache-tomcat-8.5.40/webapps tomcat:v1

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

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

结果验证:

[root@tomcat ~]# ls /data/

[root@tomcat ~]# docker ps -a

网页访问测试:

http://192.168.100.133:8090/probe/

三、基于Jenkins自动化部署PHP环境

(一)Git服务器操作:

1、准备git:

[root@git ~]# su - git

[git@git ~]$ mkdir php.git

[git@git ~]$ cd php.git

[git@git php.git]$ git --bare init

[git@git php.git]$ exit

2、上传代码到仓库

[root@git ~]# git clone git@192.168.200.111:/home/git/php.git

3、配置测试页

[root@git ~]# cd php/

[root@git php]# cat << EOF > index.php

<?php

phpinfo();

?>

EOF

4、提交本地和远端仓库

[root@git php]# git add .

[root@git php]# git commit -m "all"

[root@git php]# git push origin master

git@192.168.200.111's password:

(二)Tomcat端操作:

1、部署web主机环境

[root@tomcat ~]# yum install -y 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@web ~]# systemctl start httpd

[root@web ~]# systemctl start mariadb

访问测试:

192.168.100.133:80

(三)Jenkins操作:

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

[root@jenkins ~]# su -s /bin/bash jenkins

bash-4.2$ ssh-keygen

bash-4.2$ ssh-copy-id root@192.168.100.133

2、基于rsync部署

创建一个Freestyle project

选择:git-->输入Repository URL

git@192.168.100.131:/home/git/php.git

在build steps输入下列内容,然后点击确定!

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

点击build now,而后查看控制台输出

查看控制台输出

结果验证:

[root@web ~]# ls /var/www/html/

[root@web ~]# cat /var/www/html/index.php

网页访问测试:

http://192.168.100.133

四、基于ansible部署php环境

Jenkins操作:

1、下载ansible软件

[root@jenkins ~]# rpm -ivh epel-release-latest-7.noarch.rpm

[root@jenkins ~]# yum -y install ansible

[root@jenkins ~]# vim /etc/ansible/hosts

2、修改jenkins运行用户

[root@jenkins ~]# vim /etc/sysconfig/jenkins

[root@jenkins ~]# killall -9 java

[root@jenkins ~]# jenkins start

3、添加Ansible插件

选择manage jenkins-->plugins

搜索安装ansible plugin

4、新建一个任务,选择item-->freestyle project

命名为php-ansible

5、向git仓库和web端发送密钥

[root@jenkins ~]# ssh-keygen

[root@jenkins ~]# ssh-copy-id git@192.168.100.131

[root@jenkins ~]# ssh-copy-id root@192.168.100.133

选择:git-->输入Repository URL

git@192.168.100.131:/home/git/php.git

输入内容:

Host patten:web

Inventory选择file or host list

输入:/etc/ansible/hosts

Modulesynchronize

Module arguments or command to execute
    src=${WORKSPACE} dest=/var/www/html rsync_opts=--exclude=.git

最后,点击“保存”

点击build now,而后查看控制台输出

查看控制台输出

结果测试:

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

[root@tomcat ~]# ls /var/www/html/php-ansible/

[root@tomcat ~]#

cat    /var/www/html/php-ansible/index.php

网页访问测试:

http://192.168.100.133/php-ansible/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/917752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker容器与虚拟化技术:Gitlab账户注册

目录 一、实验 1.gitlab 一、实验 1.gitlab (1) 概念 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 &#xff08;2&#xff09;官网 The DevSecOps Platform | GitLab &#xff08;3&#…

nginx 一个端口配置前后端分离项目访问

nginx 一个端口配置前后端分离项目访问 nginx配置 server {listen 8888;server_name _;location ~ .*\.(gif|jpg|jpeg|png|pdf|txt|zip|rar|7z|doc|docx|xls|xlsx|ppt|pptx|mp3|mp4)$ {root D:/platform/tomcat/apache-tomcat-9.0.31/webapps/resources;}location /api/…

智慧灌区闸控一体化解决方案

智慧灌区闸控一体化解决方案是指将灌溉系统中的闸门控制与水文监测、远程通信和数据管理等功能相集成&#xff0c;实现对灌区水资源的智能化管理和控制的方案。以下是智慧灌区闸控一体化解决方案的主要组成部分&#xff1a; ■闸门控制系统&#xff1a;包括闸门、闸门执行器和控…

计算机视觉入门 4)滑动窗口

系列文章目录 计算机视觉入门 1&#xff09;卷积分类器计算机视觉入门 2&#xff09;卷积和ReLU计算机视觉入门 3&#xff09;最大池化计算机视觉入门 4&#xff09;滑动窗口计算机视觉入门 5&#xff09;自定义卷积网络计算机视觉入门 6&#xff09; 数据集增强&#xff08;D…

WoShop跨境电商系统开发:打造全球畅销产品

随着全球贸易的发展&#xff0c;跨境电商成为了许多企业拓展市场、增加盈利的重要途径。而要在跨境电商领域取得成功&#xff0c;开发一个高效、稳定的跨境电商系统是至关重要的。本文将为您详细介绍跨境电商系统开发&#xff0c;以及打造全球畅销产品的关键要素和方法。 一、…

H5页面跳转到公众号关注页面

效果展示&#xff1a; 未关注展示关注&#xff1b;已关注展示发消息 实现步骤&#xff1a; 登录微信公众平台 &#xff1a; https://mp.weixin.qq.com/鼠标右键选择查看网页源代码&#xff0c;找到uin_base64值如果没有uin_base64&#xff0c;那就找到uin进行base64编码编码地…

在使用springer模板的时候,引用书 book时候,末尾的引文地方出现问号???

文章目录 背景解决办法 背景 其实springer有很多模板的&#xff0c;比如nature系列有一个模板&#xff0c;计算机系列有一个模板&#xff0c;计算机系列的模板引用参考文献时好像不会出现标题的问题&#xff0c;我是使用nature系列模板出现这个问题的&#xff0c;如下&#xf…

Linux网络服务 七:iptables防火墙工具

文章目录 1.防火墙简介1.1 什么是防火墙1.2 Netfilter1.3 firewalld和iptables 2. iptables工具简述2.1 iptables的定义2.2 三种报文流向2.3iptables的表和链2.3.1**四表** ----规则表2.3.2**五链** ----规则链 3.iptables配置及操做3.1 基本语法3.1.1 控制类型项 (要大写!!!)3…

AR地图微信小程序:数字化时代下地图应用的新突破

随着数字化时代的到来&#xff0c;地图应用成为人们日常生活中不可或缺的工具。而随着增强现实&#xff08;AR&#xff09;技术的快速发展&#xff0c;AR地图微信小程序应运而生&#xff0c;为用户提供了一种全新的地图导航体验。本文将深入探讨AR地图微信小程序的专业性和思考…

LoRA继任者ReLoRA登场,通过叠加多个低秩更新矩阵实现更高效大模型训练效果

论文链接&#xff1a; https://arxiv.org/abs/2307.05695 代码仓库&#xff1a; https://github.com/guitaricet/peft_pretraining 一段时间以来&#xff0c;大模型&#xff08;LLMs&#xff09;社区的研究人员开始关注于如何降低训练、微调和推理LLMs所需要的庞大算力&#xf…

【洁洁送书第五期】为什么我们要了解可观测性工程

导读 可观测性已成为一个热门话题&#xff0c;并广受关注。随着它的普及&#xff0c;“可观测性”不幸被误作“监控”或“系统遥测”的同义词。可观测性是软件系统的一个特征。而且&#xff0c;只有当团队采用新的实践进行持续开发时&#xff0c;才能在生产软件系统中有效利用这…

22款美规奔驰S500升级原厂香氛负离子系统,清香宜人,久闻不腻

奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶&#xff0c;可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出&#xff0c;并且在关闭后能够立刻散去。车内气味不会永久改变&#xff0c;香氛…

怎么维护自己的电脑

文章目录 我的电脑日常维护措施维护技巧键盘&屏幕清洁清理磁盘空间控制温度 电脑换电池 无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff0…

什么是算法评价指标

在我们建立一个学习算法时&#xff0c;或者说训练一个模型时&#xff0c;我们总是希望最大化某一个给定的评价指标&#xff08;比如说准确度Acc&#xff09;&#xff0c;但算法在学习过程中又会尝试优化某一个损失函数&#xff08;比如说均方差MSE或者交叉熵Cross-entropy&…

如何甄选一款优异的“恶意代码辅助检测系统”

恶意代码辅助检测系统是一款保密资质认证、涉密资质认证、保密条件备案认证、军工资质认证、涉密信息系统集成资质认证、保密室建设中必配的安全保密产品之一&#xff0c;但是如何甄选一款优异的“恶意代码辅助检测系统”&#xff1f;却往往是摆在客户面前的难题。日前&#xf…

Redis多机实现

Background 为啥要有多机--------------1.容错 2.从服务器分担读压力。 主从结构一大难题------------如何保障一致性&#xff0c;对这个一致性要求不是很高&#xff0c;因为redis是用来做缓存的 同时我们要自动化进行故障转移-------哨兵机制&#xff0c;同时哨兵也可能cra…

多城市求职招聘小程序开发搭建功能演示

专门针对微信生态开发的一款求职招聘系统&#xff0c;目前提供了企业入驻、发布职位、在线求职、职位匹配、简历填写、兼职板块、附近职位、招聘会等服务。可以帮助求职者快速高效的找到适合自己的工作。 想做招聘类小程序的可以看看这款小程序&#xff0c;丰富的功能场景可以…

实证论文必备-DID丨原理+操作+论文复刻+前沿

DID&#xff1a;双重差分法&#xff0c;常用在政策效果评估中&#xff0c;无论是在毕业论文还是期刊发表中都比较常见&#xff0c;与传统回归统计类似&#xff0c;其研究对象为面板数据&#xff0c;相比于传统回归估计&#xff0c;双重差分法针对政策的估计具有更好的适用性和精…

Linux下两个必学的查找命令find grep

查找文件名,使用 find命令: 例如:我想在 根目录/ 下查找 名为 libmy.a 的文件 sudo find / -name "libmy.a" 详细示例: 1、搜索当前目录下所有文件名中包含 "test" 的文件:find . -name "test"2、搜索当前目录下所有文件名以 ".tx…

国密算法介绍

一、简述 商用密码 商用密码是中华人民共和国政府用于非国家机密信息保护所采用的一系列密码技术和密码产品的总称&#xff0c;其相关技术为国家秘密。商用密码的研发及使用由国家密码管理局统一管理。 国密算法 国密算法是指中国自主设计和使用的密码算法标准&#xff0c;其…