jenkins nginx自动化部署 php项目
在当今快速发展的IT领域,自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署(CI/CD)的佼佼者,结合Docker容器技术和PHP编程语言,以及Ansible自动化工具,可以实现高效、可靠的自动化部署。
1、安装Jenkins
前面已经讲过使用docker安装Jenkins ,可以参考前面的文章 : Vagrant + docker搭建Jenkins 部署环境-CSDN博客
2、安装php环境,由于是在宿主机上运行的,所以需要先安装php运行环境,redis环境


3、安装nginx ,这是是需要在宿主机上面安装,因为我的jenkins和服务器不在一台机器上。
接下来我们先把nginx配置好,代码目录在 /htdocs/workspace下面:
nginx配置的文件内容如下:
server {listen 80;index index.php index.html;server_name hg.shop.com;root /htdocs/gitwork/shop/public;location / {# try_files $uri /index.php$is_args$args;if (!-e $request_filename){rewrite ^(.*)$ /index.php?s=$1 last; break;}}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;error_log off;access_log /dev/null;}location ~ .*\.(js|css)?${expires 12h;error_log off;access_log /dev/null; }location /notice {proxy_pass http://192.168.33.10:20004; proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-real-ip $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;}location /msg {proxy_pass http://192.168.33.10:20005/; proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-real-ip $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;}location ~ \.php$ {fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}
}
4.配置php项目的打包编译的自动化配置。
php项目如下:


5 。接着来配置jenkins自动化构建设置。
前面已经接扫了,就不说了,可以参考前面
6.创建一个自由分格的前端项目,点击保存:
参考前面的步骤,这里不在细说。



在项目里面设置第三方访问的webhook ,把前面jenkins生成的api token和地址填入下面的位置后保存。

点击测试,看是否正常:
设置构建shell 脚本:
rm -rf shop.tar.gz
#把当前目录的所有文件打包成shop.tar.gz
tar zcvf shop.tar.gz shop
exit 0
配置完成后,提交代码:

打开jenkins已经开始自动化构建了:


打开页面,可以看到成功了。
当然可以采用docker容器化部署的方式来构建,其实本质都是一样的。
相关文章:
jenkins nginx自动化部署 php项目
在当今快速发展的IT领域,自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署(CI/CD)的佼佼者,结合Docker容器技术和PHP编程语言,以及Ansible自动化工具,可以实现高效、可靠的自动…...
海外代理IP哪个可靠?如何测试代理的稳定性?
在数字化时代,互联网已成为我们日常生活的重要组成部分。然而,随着网络活动的增加,我们面临的安全威胁也随之增加。 黑客攻击、数据泄露、网络钓鱼等安全事件频发,严重威胁着我们的个人隐私和网络安全。代理服务器在当今的互联网世…...
MySQL之可扩展性(四)
可扩展性 向外扩展 分片?还是不分片? 这是一个问题,对吧?答案很简单:如非必要,尽量不分片。首先看是否能通过性能调优或者更好的应用或数据库设计来推迟分片。如果能足够长时间地推迟分片,也许可以直接购买更大地服…...
JupyterLab使用指南(三):JupyterLab的Cell详细介绍
JupyterLab Cell 使用教程 JupyterLab 的 cell 是一种强大的工具,提供了编写、执行、展示和记录的全方位支持,使得复杂的计算任务变得简单直观。通过熟练掌握 cell 的各种操作和快捷键,用户可以显著提高工作效率,专注于解决实际问…...
solidity智能合约如何实现跨合约调用函数
背景 比如现在有一个需求、我需要通过外部合约获取BRC20 token的总交易量。那么我需要在brc20的转账函数里面做一些调整,主要是两个函数内统计转移量。然后再提供外部获取函数。 /*** dev Sets amount as the allowance of spender over the callers tokens.** Ret…...
关于Vue2的生命周期会问到哪些面试题?
在Vue2的面试中,关于生命周期的问题通常会涉及以下几个方面: 一、Vue2的生命周期概述 Vue2的生命周期是什么? Vue2的生命周期是指从Vue实例的创建、初始化数据、编译模板、挂载Dom、渲染、更新、卸载等一系列过程。 二、生命周期钩子函数 …...
尚品汇-(七)
(1)在网关中实现跨域 全局配置类实现 包名:com.atguigu.gmall.gateway.config 创建CorsConfig类 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsWebFilter(){// cors跨域配置对象CorsConfiguration configuration…...
【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
文章目录 前言一、datetime模块简介二、常用类和方法三、date类四、time类五、datetime类六、timedelta类七、常用的函数和属性八、代码及其演示 前言 Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和…...
keepalived 服务高可用(简约版)
本文基于centos 7记述如何使用keepalived 背景 为生产环境准备一台备机是极其必要的,防止主机宕掉无服务可用的情况出现。但是同一局域网内每台主机都分配了一个唯一IP,这些IP既然相互不同,那么服务请求的时候岂不是要切换IP地址?…...
【前端】Vue项目和微信小程序生成二维码和条形码
前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享Vue项目和微信小程序如何生成二维码和条形码,介绍了JsBarcode、wxbarcode等插件,并提供具体代码帮助大家深入理解,彻底掌握!…...
同时使用接口文档swagger和knife4j
项目场景: springboot项目中同时使用接口文档swagger和knife4j 问题描述 在实体类中设置了字段必填的属性,在访问接口文档时出现异常 实体类关键代码片段 /*** 部门表 sys_dept*/ public class SysDept extends BaseEntity {private static final lo…...
Compose - 权限申请
官方介绍 一、概念 二、使用 Accompanist Permissions 官方介绍 不同版本中,权限状态(如PermissionState)中获取属性的方法不同,例如在“0.23.1”中,通过 PermissionState.hasPermission 属性拿到是否通过的 Boole…...
第十九条:要么为继承而设计并提供文档说明,要么就禁止继承
在前面一条中,我们已经知道了David写了A类被Tom拿去继承了,导致了A类的封装性遭到了破坏,那么有没有可能做点事情避免此事发生呢?第十九条孕育而生!David在创建A类的时候写上文档说明,说Al类不允许任何类来…...
Node.js全栈指南:浏览器显示一个网页
上一章,我们了解到,如何通过第二章的极简 Web 的例子来演示如何查看官方文档。为什么要把查阅官方文档放在前面的章节说明呢?因为查看文档是一个很重要的能力,就跟查字典一样。 回想一下,我们读小学,初中的…...
Linux远程桌面(Ubuntu/Deepin)——安装和使用 VNC 及通过 noVNC 实现浏览器实现远程桌面访问教程
在 Linux 上安装和使用 VNC 及通过 noVNC 实现浏览器远程访问教程 Windows上通常会自带xrdp远程桌面,但是当我们使用 Deepin 或 Ubuntu 系统作为开发机器且需要图形化界面的时候,就需要安装和配置 VNC(Virtual Network Computing)…...
2024年最新通信安全员考试题库
61.架设架空光缆,可使用吊板作业的情况是()。 A.在2.2/7规格的电杆与墙壁之间的吊线上,吊线高度5m B.在2.2/7规格的墙壁与墙壁之间的吊线上,吊线高度6m C.在2.2/7规格的电杆与电杆之间的吊线上,吊线高度…...
SpringMVC系列八: 手动实现SpringMVC底层机制-下
手动实现SpringMVC底层机制-下 实现任务阶段五🍍完成Spring容器对象的自动装配-Autowired 实现任务阶段六🍍完成控制器方法获取参数-RequestParam1.🥦将 方法的 HttpServletRequest 和 HttpServletResponse 参数封装到数组, 进行反射调用2.&a…...
【昇思初学入门】第八天打卡-模型保存与加载
模型保存与加载 学习心得 保存 CheckPoint 格式文件,在模型训练过程中,可以添加检查点(CheckPoint)用于保存模型的参数,以便进行推理及再训练使用。如果想继续在不同硬件平台上做推理,可通过网络和CheckPoint格式文件生成对应的…...
喜报!极限科技新获得一项国家发明专利授权:“搜索数据库的正排索引处理方法、装置、介质和设备”
近日,极限数据(北京)科技有限公司(简称:极限科技)新获得一项国家发明专利授权,专利名为 “搜索数据库的正排索引处理方法、装置、介质和设备”,专利号:ZL 2024 1 0479400…...
深入探讨:UART与USART在单片机中串口的实际应用与实现技巧
单片机(Microcontroller Unit, MCU)是一种集成了处理器、存储器和输入输出接口的微型计算机。它广泛应用于嵌入式系统中,用于控制各类电子设备。UART和USART是单片机中常见的通信接口,负责串行数据传输。下面我们详细介绍它们在单…...
C++的std--ranges中的检测引用悬垂
C的std::ranges中的检测引用悬垂:安全迭代的守护者 在现代C编程中,std::ranges库为序列操作提供了更简洁、更安全的抽象。迭代器与范围的使用常伴随一个隐蔽风险:引用悬垂(Dangling References)。当迭代器指向的底层数…...
3.28 学习笔记
3.28 学习笔记web金融项目实战1.对于需求分析仔细研读需求规格说明书,以及相关文档,理解项目的目标和流程2.对于编写测试点(1)进行界面检查(2)从正确的业务流程编写,执行,查看对应功…...
如何高效管理Magpie窗口缩放插件:从安装到优化的完整指南
如何高效管理Magpie窗口缩放插件:从安装到优化的完整指南 【免费下载链接】Magpie An all-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie Magpie作为一款强大的Windows窗口缩放工具,其插件系…...
Ubuntu 22.04/20.04 RTX 3050显卡驱动安装避坑指南:从黑屏/dev/***到成功点亮
1. 为什么你的RTX 3050在Ubuntu上会黑屏? 刚给Ubuntu装上RTX 3050显卡,重启后屏幕一片漆黑,只显示/dev/***: clean之类的信息?这场景我太熟悉了——去年给工作室六台Ubuntu工作站装RTX 30系显卡时,每台都经历过这个&qu…...
YOLO X Layout模型测试:基于Pytest的自动化测试框架
YOLO X Layout模型测试:基于Pytest的自动化测试框架 当你辛辛苦苦训练或部署了一个YOLO X Layout模型,准备用它来解析合同、发票或者学术论文时,最怕遇到什么?不是模型本身不够强大,而是某次代码更新后,它…...
C++的std--ranges内存效率
C的std::ranges内存效率探析 在现代C编程中,std::ranges作为C20引入的重要特性,不仅简化了范围操作,还在内存效率方面展现出显著优势。对于需要高性能和低资源消耗的应用场景,理解std::ranges如何优化内存使用至关重要。本文将深…...
C 语言从 0 入门(一)|VS2022 完整环境搭建 + 第一个 C 语言程序详解
大家好,我是网域小星球。前面的 Wireshark 抓包实战系列已经全部完结,从本文开始,正式开启一个全新的学习板块:C 语言从 0 到实战入门。 作为网络工程、计算机相关专业的核心基础语言,C 语言贴近计算机底层࿰…...
DAMO-YOLO手机检测一文详解:tinynas主干网络轻量化设计优势
DAMO-YOLO手机检测一文详解:tinynas主干网络轻量化设计优势 1. 引言:为什么我们需要一个又快又准的手机检测器? 想象一下,你正在开发一个智能会议室管理系统,需要实时统计参会人数和他们的行为。其中一个关键功能是检…...
别再混着用了!Matplotlib的两种画图接口(plt.plot vs. ax.plot)到底怎么选?
Matplotlib接口选择指南:何时用plt.plot,何时用ax.plot? 在数据可视化领域,Matplotlib无疑是Python生态中最强大的工具之一。但许多用户在使用过程中常常困惑:为什么有的代码用plt.plot(),有的却用ax.plot(…...
AI原生应用开发:边缘设备上的实时目标检测实现
AI原生应用开发:边缘设备上的实时目标检测实现关键词:AI原生应用开发、边缘设备、实时目标检测、计算机视觉、深度学习摘要:本文聚焦于AI原生应用开发中在边缘设备上实现实时目标检测这一重要课题。详细介绍了边缘设备实时目标检测的核心概念…...
