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

news2025/1/18 17:12:07

第四阶段提升

时  间: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”。说明刚修改的代码已发布成功!

 

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

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

相关文章

【PHP】echo 输出数组报Array to string conversion解决办法

代码&#xff1a; <?PHP echo "Hello World!";$demoName array("kexuexiong","xiong");echo "<pre>";var_dump($demoName);echo $demoName; print_r($demoName);echo "</pre>"; ?>输出结果&#xff1…

【点云分割】points3d框架学习01 —— 安装和配置

安装 $ pip install torch1.12.1cu113 torchvision0.13.1cu113 torchaudio0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 $ pip install torch-points3d $ pip install ipython $ pip install trame $ pip install h5py $ pip install gdown案例 from to…

自动化测试 —— Pytest fixture及conftest详解

前言 fixture是在测试函数运行前后&#xff0c;由pytest执行的外壳函数。fixture中的代码可以定制&#xff0c;满足多变的测试需求&#xff0c;包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在&#xff0c;类似u…

AD(第三部分---PCB封装库的创建方法及现有封装调用)

封装库可以理解成实物图 PCB封装是我们电子设计图和实物图之间的映射体&#xff0c;具有精准数据的要求。 16.常见CHIP封装的创建(电阻 容SOT二极管) 下文做的是1N589W二极管的封装库 首先要找到产品规格书&#xff0c;重要部分(三视图尺寸&#xff0c;分别是顶视图&#xf…

php插件Workerman聊天室示例

chat.php内容如下 <?php//使用workerman&#xff0c;只需引入这个文件require_once "workerman-4.0/Autoloader.php";//创建服务器&#xff0c;监听3000端口$wsServernew \Workerman\Worker("websocket://127.0.0.1:3000");$wsServer->onConnectfu…

Android Studio开发之路 (五)导入OpenCV以及报错解决

一、步骤 官网下载opencv包&#xff08;我下的是4.7.0&#xff09;并解压&#xff0c;openvc官网 先创建一个空项目&#xff0c;简单跑一下能正常输出helloworld 点击file->new->Import Module选择解压之后的opencv-android-sdk文件夹中的SDk文件夹&#xff0c; modu…

城市管理革命,AI药方解决城市病烦恼!

引言&#xff1a;现代中文语境的“城市”是中国近代逐渐与世界接轨的舶来词语&#xff0c;根据“city”翻译而来&#xff0c;由“城”与“市”组合而成&#xff0c;其中“城”是由军事防御产生的&#xff0c;属于行政地域概念&#xff0c;“市”是由商品交换&#xff08;市场&a…

[系统] 电脑突然变卡 / 电脑突然** / 各种突发情况解决思路

今天来公司办公&#xff0c;开机之后发现电脑出现各种问题&#xff0c;死机、卡顿、点什么都加载&#xff0c;甚至开一个文件夹要1分钟才能打开&#xff0c;花了2个小时才解决&#xff0c;走了很多弯路&#xff0c;其实早点想通&#xff0c;5分钟就能解决问题&#xff0c;所以打…

无人机甚高频无线电中继通讯U-ATC118

简介 甚高频无线电中继通讯系统使用经过适航认证的机载电台连接数字网络传输模块&#xff0c;通过网络远程控制无缝实现无人机操作员与塔台直接语音通话。无人机操作员可以从地面控制站远程操作机载电台进行频率切换、静噪开关、PTT按钮&#xff0c;电台虚拟面板与真实面板布局…

肺功能指标 fev1 frc 肺指标 呼吸参数 fev1 pre-bd

肺功能报告不会看&#xff1f;手把手教你识别各种参数&#xff01; - 丁香园 (dxy.cn) pred是predict的缩写&#xff0c;中文的解释意思为预计&#xff0c;fev1&#xff05;pred是患者做肺功能检查时体现出来。患者行肺功能检查时做最大吸气至肺总量后&#xff0c;开始做用力呼…

C++学习|CUDA编程入门

CUDA编程入门 GPU介绍CUDA 介绍NVCC——CUDA编译器cu/cuh文件——CUDA文件核函数——操作GPU线程模型——CUDA逻辑结构CUDA程序运行流程CUDA内存管理 GPU介绍 GPU&#xff08;Graphics Processing Unit&#xff0c;图形处理器&#xff0c;显卡&#xff09;&#xff1a;最早主要…

第三方电容笔支持随手写吗?开学季平价好用电容笔

作为一个苹果的忠实粉丝&#xff0c;我知道很多关于数码产品的事情。而电容笔&#xff0c;也是iPad平板的一个重要配件之一&#xff0c;许多人购买iPad后&#xff0c;都希望拥有一支好用的电容笔&#xff0c;但又不知道如何选择。本人用过30余款电容笔&#xff0c;为方便各位朋…

C++信息学奥赛1142:单词的长度

#include <iostream> #include <string> using namespace std; int main() {string str1;// 输入一行字符串getline(cin,str1);int n0;for(int i0;i<str1.length();i){if(str1[i] ){while (str1[i1] ){i; // 跳过连续的空格}cout<<n<<","…

js传参没有反应

js反应如果传的参是字符串, 则不能直接传, 需要加上双引号 下面这种是传数值的形式:

【java】【idea2023版】Springboot模块没有.iml文件的问题

目录 方法一&#xff1a; 1、首先鼠标选中对应的对应的模块 &#xff0c;按两下Ctrl键 2、project中选择对应的模块 3、运行mvn idea:module 命令​编辑 方法二&#xff1a; 1、可以右键点击open Terminal 2、然后在打开的Terminal里输入 方法一&#xff1a; 1、首先鼠…

基于HarmonyOS ArkUI实现音乐列表功能

本节将演示如何在基于HarmonyOS ArkUI的List组件来实现音乐列表功能。 本文涉及的所有源码&#xff0c;均可以在文末链接中找到。 活动主页 华为开发者论坛 规则要求具体要求如下&#xff1a; 第1步&#xff1a;观看<HarmonyOS第一课>“营”在暑期•系列直播&#x…

冠达管理股票分析:数据资产入表规定落地 算力产业化加速在即

8月22日&#xff0c;算力龙头股鸿博股份股价强势涨停。方针面上&#xff0c;财政部日前拟定印发了《企业数据资源相关管帐处理暂行规则》。业内人士表明&#xff0c;数据财物入表规则落地将极大推进数据运营变现。这能改进和优化企业的财物负债表和损益表&#xff0c;更有利于促…

Android 使用模拟器模拟Linux操作系统

1. 简介 在Android手机上使用模拟器模拟ubuntu等操作系统&#xff0c;便于测试 2. 软件准备 Termux&#xff1a;是一款 Android 终端模拟器和 Linux 环境应用程序&#xff0c;无需 root 或设置即可直接运行。虽然酷安和谷歌菜市场都能下载&#xff0c;但这些渠道都很久没更新…

YOLOv5屏蔽区域检测(选择区域检测)

YOLOv5屏蔽区域检测以及选择区域检测 前期准备labelme选择mask区域 代码改动 前期准备 思路就是通过一个mask掩膜&#xff0c;对我们想要屏蔽或者选择的区域进行遮挡处理&#xff0c;在推理的时候&#xff0c;将有mask掩膜的图像输入&#xff0c;将最后的结果显示在原始图像上…

Spring学习之【DefaultListableBeanFactory】

介绍 BeanFactory是个Factory&#xff0c;也就是IOC容器或对象工厂&#xff0c;而DefaultListableBeanFactory是Bean工厂的一个默认实现&#xff0c;DefaultListableBeanFactory提供了原始的BeanFactory的功能&#xff0c;如&#xff1a;对外提供getbean()方法&#xff0c;维护…