基于Jenkins+Git+Ansible 发布PHP 项目-------从小白到大神之路之学习运维第88天

第四阶段提升

时  间:2023年8月25日

参加人:全班人员

内  容:

基于Jenkins+Git+Ansible 发布PHP 项目

目录

基于Jenkins+Git+Ansible 发布PHP 项目

一、部署PHP 运行环境

二、主机环境配置

三、Tomcat主机操作:

四、Jenkins主机web操作:

五、实验测试:


   本文基础环境在《从小白到大神之路之学习运维第87天》基础之上加以延伸,jenkins版本为2.401,jdk为17,git为2.22版本,详情请借阅上篇文章

基于Jenkins+Git+Ansible 发布PHP 项目

一、部署PHP 运行环境

        PHP 是一个动态程序,负责解析PHP-FPM 服务,而这个服务不支持静态页面处理,一般结合Nginx 解决这个问题。Nginx 本身是一个静态Web 服务器,并不支持解析PHP 程序,但它支持了FastCGI 接口来调用动态服务来解析PHP 程序。

        当客户端请求PHP 页面时,Nginx 通过fastcgi 接口转发给本地9000 端口的PHP-FPM子进程处理,处理完成后返回Nginx。

二、主机环境配置

IP地址

主机名

角色

192.168.100.131

git

Git

192.168.100.132

jenkins

Jenkins

192.168.100.133

tomcat

Nginx,php

[root@localhost ~]# setenforce 0

[root@localhost ~]# iptables -F

[root@localhost ~]# systemctl stop firewalld

Git:

 

Jenkins:

 

Tomcat:

 

三、Tomcat主机操作:

1、安装Nginx

1)配置Nginx 网络源

[root@tomcat ~]# vim /etc/yum.repos.d/nginx.repo

 

2)安装并启动

[root@tomcat ~]# yum -y install nginx

[root@tomcat ~]# systemctl start nginx

 

2、安装PHP

1)安装php 依赖的第三方库,命令如下:

[root@tomcat ~]# yum -y install gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel gcc openssl-*

 

2)编译安装php

[root@tomcat ~]# tar xf php-5.6.39.tar.gz -C /usr/src/

[root@tomcat ~]# cd /usr/src/php-5.6.39/

[root@tomcat php-5.6.39]# ./configure --prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-mysql --with-mysqli --with-openssl --with-zlib \

--with-curl --with-gd --with-jpeg-dir --with-png-dir \

--with-iconv --enable-fpm --enable-zip --enable-mbstring && make -j 2 && make install

 

3)配置php-fpm,命令如下:

[root@tomcat php-5.6.39]# cp php.ini-production /usr/local/php/etc/php.ini

[root@tomcat php-5.6.39]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@tomcat php-5.6.39]# vim /usr/local/php/etc/php-fpm.conf

[root@tomcat php-5.6.39]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root@tomcat php-5.6.39]# chmod +x /etc/rc.d/init.d/php-fpm

[root@tomcat php-5.6.39]# service php-fpm start

 

3、Nginx 代理PHP

添加虚拟主机配置如下:

[root@tomcat ~]# vim /etc/nginx/conf.d/default.conf

[root@tomcat ~]# systemctl restart nginx

 

四、Jenkins主机web操作:

1、安装Ansible 插件

主页面-> manage jenkins->plugins-->安装Ansible 插件

 

2、在Jenkins 主机上安装ansible:

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

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

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

 

        其中: [web]表示Web 主机分组名称,该分组下可以写多个主机,也可以写多个分组区分不同角色服务器。

3、上传PHP 项目代码到Git仓库git主机操作

1)在Git 服务器创建wordpress 版本仓库

[root@git ~]# su - git

[git@git ~]$ mkdir wordpress.git

[git@git ~]$ cd wordpress.git

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

 

2)下载开源PHP 博客系统wordpress

[root@jenkins ~]# wget https://wordpress.org/latest.tar.gz

[root@jenkins ~]# tar xf latest.tar.gz

[root@jenkins ~]# cd wordpress/

 

3)提交到Git 仓库

[root@jenkins ~]# git init

[root@jenkins ~]# git remote add origin git@192.168.200.111:/home/git/wordpress.git

[root@jenkins ~]# git add .

[root@jenkins ~]# git commit -m "wp"

[root@jenkins wordpress]# git tag 1.0.0

[root@jenkins wordpress]# git push origin 1.0.0

 

4、Jenkins 创建项目并发布测试

1)主页面-> 新建item-> 创建freestyle project

 

2)动态获取Git 仓库tag,与用户交互选择Tag 发布

 

3)修改*/master 为$Tag。Tag 是上面动态获取的变量名,指定项目Git 仓库地址。

 

4)使用ansible 插件,选择Invoke Ansible Ad-Hoc Command

5)使用synchronize 模块同步数据

Host patternweb

File or host list/etc/ansible/hosts

Module输入:synchronize

Module arguments or command to execute输入:

src=${WORKSPACE} dest=/usr/share/nginx/html rsync_opts=--exclude=.git

 

6)使用raw模块校正项目权限

Module输入:raw

Module arguments or command to execute输入:

chmod 755 -R /usr/share/nginx/html/blog-wordpress/

 

参数说明:

Host pattern:指定刚在/etc/ansible/hosts 中定义的主机分组名称

Inventory:主机清单

Module:模块名

Module arguments or command to execute:模块参数或执行命令

配置jenkins主机与tomcat主机免密登录

[root@jenkins ~]# ssh-keygen

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

 

7)主页面-> 右击blog-wordpress -> Build with Parameters

 

8)构建日志信息会控制台输出

 

 

9)浏览器访问测试

http://192.168.100.133/blog-wordpress/wp-admin/

 

五、实验测试:

模拟实际生产环境提交代码作用是可以清楚看到两次发版代码的不同。

1、新建测试首页信息

[root@jenkins ~]# cd wordpress/

[root@jenkins wordpress]# echo "hello World

" > test.html

 

2、将修改的test.html 提交到Git 仓库

[root@jenkins wordpress]# git add .

[root@jenkins wordpress]# git commit -m "hw"

[root@jenkins wordpress]# git tag 1.0.1

[root@jenkins wordpress]# git push origin 1.0.1

 

3、在Jenkins 执行构建任务

 

访问测试:

发布成功后,访问: http://192.168.100.133/blog-wordpress/test.html,页面显示“hello World”。说明刚修改的代码已发布成功!

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【golang】panic函数、recover函数以及defer语句

从panic被引发到程序终止运行的大致过程是什么? 大致过程: 某个函数中的某行代码有意无意地引发了一个panic。这时,初始的panic详情会被建立起来,并且该程序的控制权会立即从从行代码转移至调用其所属函数的那行代码上&#xff…

CentOS系统环境搭建(十七)——elasticsearch设置密码

centos系统环境搭建专栏🔗点击跳转 elasticsearch设置密码 没有密码是很不安全的一件事😭 文章目录 elasticsearch设置密码1.设置密码2.登录elasticsearch3.登录kibana4.登录elasticsearch-head 1.设置密码 关于Elasticsearch的安装请看CentOS系统环境搭…

SpringBootWeb案例 Part 4

3. 修改员工 需求:修改员工信息 在进行修改员工信息的时候,我们首先先要根据员工的ID查询员工的信息用于页面回显展示,然后用户修改员工数据之后,点击保存按钮,就可以将修改的数据提交到服务端,保存到数据…

【校招VIP】产品思维分析之面试新的功能点设计

考点介绍: 这种题型是面试里出现频度最高,也是难度最大的一种,需要面试者对产品本身的功能、扩展性以及行业都有一定的了解。而且分析时间较短,需要一定的产品能力和回答技巧。 『产品思维分析之面试新的功能点设计』相关题目及解…

java+springboot+vue儿童慈善捐赠管理系统的设计与实现8n9e4

针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,有效地促进了“爱相连”儿童慈善管理的发展。然而,由于用户量和需求量的增加,信息过载等问题暴露出来,为改善传统线下管理中的不足,本文将…

Docker搭建LNMP----(超详细)

目录 ​编辑 一、项目环境 1.1 所有安装包下载: 1.3 服务器环境 1.4任务需求 二、Ngin 2.1、建立工作目录 2.2 编写 Dockerfile 脚本 2.3准备 nginx.conf 配置文件 2.4生成镜像 2.5创建自定义网络 2.6启动镜像容器 2.7验证 nginx、 三、Mysql 3.1建立…

传智教育广州校区又又又举行校内招聘会,多名学员被广东民生在线教育招入麾下

数字经济的高速发展以及经济形势的逐渐回暖,带动了企业对数字人才的用人需求增加,近日,传智教育旗下高端IT教育品牌黑马程序员多个校区接到了企业上门招聘的需求,各分校区通过举行校内招聘会,为用人企业和学员搭建了人…

一文速学-让神经网络不再神秘,一天速学神经网络基础-激活函数(二)

前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…

实验二 tftp 服务器环境搭建

tftp 服务器环境搭建 tftp(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 【实验目的】 掌握 tftp 环境搭…

【目标检测】“复制-粘贴 copy-paste” 数据增强实现

文章目录 前言1. 效果展示代码说明3. 参考文档4. 不合适点 前言 本文来源论文《Simple Copy-Paste is a Strong Data Augmentation Method for Instance Segmentation》(CVPR2020),对其数据增强方式进行实现。 论文地址:https:/…

MediaPlayer音频与视频的播放介绍

作者:向阳逐梦 Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。 它支持三种不同的媒体来源…

Talk | 上海交通大学官同坤:识别任意文本,隐式注意力与字符间蒸馏在文本识别中的应用

本期为TechBeat人工智能社区第525期线上Talk! 北京时间8月23日(周三)20:00,上海交通大学博士生—官同坤的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “隐式注意力与字符间蒸馏在文本识别中的应用”,分享了识别…

使用docker-maven-plugin插件构建镜像并推送至私服Harbor

前言 如下所示,建议使用 Dockerfile Maven 插件,但该插件也停止维护更新了。因此先暂时使用docker-maven-plugin插件。 一、开启Docker服务器的远程访问 1.1 开启2375远程访问 默认的dokcer是不支持远程访问的,需要加点配置,开…

bh002- Blazor hybrid / Maui 保存设置快速教程

1. 建立工程 bh002_ORM 源码 2. 添加 nuget 包 <PackageReference Include"BootstrapBlazor.WebAPI" Version"7.*" /> <PackageReference Include"FreeSql" Version"*" /> <PackageReference Include"FreeSql.…

MyBatis分页插件PageHelper的使用及特殊字符的处理

目录 一、PageHelper简介 1.什么是分页 2.PageHelper是什么 3.使用PageHelper的优点 二、PageHelper插件的使用 原生limit查询 1. 导入pom依赖 2. Mybatis.cfg.xml 配置拦截器 3. 使用PageHelper进行分页 三、特殊字符的处理 1.SQL注入&#xff1a; 2.XML转义&#…

【Linux】【驱动】第一个相对完整的驱动编写

【Linux】【驱动】第一个相对完整的驱动编写 续1.驱动部分的代码2 app 代码3 操作相关的代码 续 这个章节会讲述去直接控制一个GPIO&#xff0c;高低电平。 因为linux不允许直接去操作寄存器&#xff0c;所以在操作寄存器的时候就需要使用到函数&#xff1a;ioremap 和iounma…

线性代数的学习和整理10:各种特殊类型的矩阵(草稿-----未完成 建设ing)

目录 1 图形化分类 1.1对称矩阵 1.2 梯形矩阵 1.3 三角矩阵 1.3.1 上三角矩阵 1.4 对角线矩阵 2 按各自功能分 2.1 等价矩阵 2.2 增广矩阵 2.3 伴随矩阵 2.4 正交矩阵 2.5 正交矩阵 2.6 相似矩阵 1 图形化分类 1.1对称矩阵 1.2 梯形矩阵 1.3 三角矩阵 1.3.1 上…

【ARM-Linux】项目,语音刷抖音项目

文章目录 所需器材装备操作SU-03T语音模块配置代码&#xff08;没有用wiring库&#xff0c;自己实现串口通信&#xff09;结束 所需器材 可以百度了解以下器材 orangepi-zero2全志开发板 su-03T语音识别模块 USB-TTL模块 一个安卓手机 一根可以传输的数据线 装备操作 安…

windows Etcd的安装与使用

一、简介 etcd是一个分布式一致性键值存储&#xff0c;其主要用于分布式系统的共享配置和服务发现。 etcd由Go语言编写 二、下载并安装 1.下载地址&#xff1a; https://github.com/coreos/etcd/releases 解压后的目录如下&#xff1a;其中etcd.exe是服务端&#xff0c;e…

C语言弯道超车必做好题锦集(编程题)

目录 前言&#xff1a; 1.计算日期到天数转换 2.尼科彻斯定理 3.密码检查 4.图片整理 5.寻找数组的中心下标 6.字符个数统计 7.多数元素 前言&#xff1a; 编程想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#xff01;为此我…