php实现 git推送后服务端自动更新

CVS、Subversion 与 Git 版本控制底层原理深度解析 版本控制系统是软件开发的基础设施,其核心在于数据模型设计与协作语义约定。CVS 基于文件级 RCS 补丁链,依赖时间戳与显式加锁,导致无原子提交和分支脆弱;Subversion 引入全局修订号与树状快照,实现原子事务与真分支,但强耦合中心服务器;Git 采用内容寻址的 DAG 对象图,通过 SHA-1 哈希保障状态一致性,支撑分布式、离线操作与历史重写能力。这些差异直接决定冲突解决方式、分支开销、迁移成本及协同可靠性。理解 CVS 的 strict 锁机制与 git 的 staging 区设计,是规避日常 阅读详情

实现思路

1.在仓库管理中,配置监听push 事件,写入推送地址

2.服务器端写服务脚本,验证身份后执行脚本推送端 gitea 服务器端 php

 php脚本如下

$req = json_decode(file_get_contents('php://input'),1);
if($req['secret'] == '123456'){ //验证身份
        $name = $req['repository']['name'];
        $branch = explode('/',$req['ref'])[2];
        if($name && $branch){
                $CD = 'cd /www/'.$name;
                $branchAll = shell_exec($CD.' && git branch');
                if(strpos($branchAll,$branch) === FALSE){
                        //todo 完成 fetch后再次查找 branch
                        echo 'no branch';exit;
                }
                $PULL = $CD.' && sudo git checkout '.$branch.' && sudo git pull && sudo git checkout -';
                $flag = shell_exec($PULL);
                if($flag !== NULL){
                        echo 'success';
                        echo "\r\n message:$flag";
                        exit;
                }
        }
}
echo 'error';

 遇到的问题

web访问无权执行 git pull

解决 

1.修改php-fpm运行用户          php-fpm.conf 

2.修改nginx运行用户 www        nginx.conf

#加用户及用户组
groupadd www
useradd www -g www
#给www目录权限
chown -R www:www /你的项目目录

3.重启 php-fpm && nginx

修改 /etc/sudoers


#改权限
chmod u+w /etc/sudoers
#写入不验证密码
vim /etc/sudoers
#root ALL=(ALL)  NOPASSWD: ALL 下加入

php-fpm运行用户 ALL=(ALL)  NOPASSWD:/usr/bin/git

CentOS 8 LEMP 部署实战:模块化仓库、SELinux 权限与认证协议兼容 LEMP 栈是 Linux Web 服务的基础技术组合,其核心在于 Nginx、PHP、MySQL(或 MariaDB)及 Linux 系统的深度协同。在 CentOS 8 中,传统安装方式失效的根本原因在于模块化仓库(DNF Modules)取代了静态包管理,导致 PHP 流(stream)、Nginx 模块版本、数据库认证协议等需显式决策;同时 SELinux 类型强制机制对进程间通信(如 PHP-FPM 与 Nginx 的 socket 访问)施加细粒度权限控制。技术价值体现在可维护性、安全可控性与生 阅读详情

相关推荐

Linux终端AI编程助手:Codex/Gemini/Claude CLI实战部署指南

CLI(命令行接口)是Linux系统最基础、最高效的人机交互方式,其核心价值在于文本流驱动、单一职责与最小权限原则。现代AI编程工具如Codex、Gemini和Claude已深度适配Shell环境,通过stdin/stdout接入文件系统上下文,实现无需GUI、不离终端的智能协作。这类工具依托本地运行时(Node.js/Python/Rust)、安全密钥管理(GPG加密)、显式项目根路径声明及系统命令白名单机制,在保障安全性的同时提供代码生成、日志诊断、依赖分析等工程级能力。本文聚焦于Ubuntu/Debi

weixin_34026276的博客 509

windows下 php+git简单实现git自动化部署项目代码功能

linux下自动化部署看这里:https://blog.youkuaiyun.com/u011477914/article/details/88350491 近期公司有许多项目都部署在同一台测试服务器上,每次大家修改代码后,都需要登录服务器拉取一下代码才能更新到测试站点上面,项目人员越来越后,就会造成平分登录服务器拉取代码,就会互相把对方给从服务器上挤掉,所有就想到了设置GIT自动化部署功能。 一、...

IT小学生 2038

Ubuntu 22.04 LEMP部署WordPress完整实操指南

LEMP栈是现代动态网站的核心技术架构,指Linux操作系统、Nginx Web服务器、MySQL数据库与PHP应用环境的协同组合。其本质是基于事件驱动模型的高性能Web服务方案,相比传统LAMP(Apache)在高并发下具备更低内存占用与更强稳定性。Ubuntu 22.04因PHP 8.1原生支持、Nginx配置兼容性高及长期安全更新保障,成为WordPress生产部署的黄金版本。实际部署中需关注Nginx server block手动配置、MySQL严格权限控制、PHP关键扩展(如mysqli、curl

weixin_34185512的博客 411

PHP执行git命令更新代码

背景: 开发中我们想推送代码到git仓库的时候,在测试环境立马就能看到是什么样的,我们可以通过git仓库的webhook钩子配置的,在推送代码到git仓库的时候,仓库收到代码,然后可以访问一个url,然后你在这个url写段代码执行更新代码的命令。 php 代码 <?php exec("cd /usr/local/nginx/html/yafcms && sudo g...

或非与博客 2368

Hugo静态博客云服务器全自动部署指南

静态博客生成器是一种将Markdown等源文件编译为纯HTML/CSS/JS的静态站点生成技术,其核心原理是预构建而非运行时渲染,从而获得极致性能与安全性。相比动态框架,它无需数据库、不依赖服务端执行环境,天然适配CDN与对象存储。Hugo作为Go语言实现的代表工具,以毫秒级编译速度、零Node.js依赖和极简配置体系,在技术博客、文档站等轻量场景中展现出独特价值。结合云服务器(如腾讯云轻量应用服务器)与Git Hook自动化部署,可构建高可控、低成本、强稳定的内容发布系统,完美支撑个人知识管理、开源项目文

weixin_34262482的博客 437

GitHub Pages 静态网站部署:零成本全球托管实战指南

静态网站是指不依赖服务器端执行、仅由 HTML/CSS/JS 构成的前端资源集合,其核心价值在于确定性高、加载极快、运维归零。GitHub Pages 作为 GitHub 原生集成的静态托管服务,通过 Git 提交自动触发构建与全球 CDN 分发,天然支持 HTTPS、CNAME 绑定与透明日志,完美匹配静态内容交付本质。相比自建服务器的证书续期焦虑、第三方平台的黑盒构建与配额限制,GitHub Pages 以极简设计实现‘写即所见、推即上线’的工程闭环。它广泛应用于个人作品集、开源文档、技术博客、产品落地

weixin_33694620的博客 374

Jenkins 发版(把代码从giee分支中更新到服务器)代码远程更新,php、java等等都可以

一、搭建自己的Jenkins服务(可以理解一个网站) 可以绑定域名或直接IP访问 例子:http://100.100.100.100:8081/ 二、创建任务 1.1创建 选择自由风格的,因为我只用到更新远程代码 ,同时选择这个任务是更新测试环境的还是生产环境的 php-prd=生产;php-test=测试。 1.2 配置 1.2.1描述 1.2.2源码管理 1.2.3源码管理 ...

php菜鸟技术天地 1602

项目文档自动化生成全方案:注释_接口_架构_变更日志一键落地(企业级CI集成)

摘要:本文提出一套企业级项目文档自动化生成全方案,覆盖代码注释、接口文档、架构文档和变更日志四大场景。方案采用代码驱动、增量更新、CI/CD集成的设计理念,通过多语言适配解析引擎和模板渲染引擎,实现文档的自动生成与更新。核心模块包含代码注释解析(支持Java/Python/Go等主流语言)、接口文档自动生成(SpringBoot/Node.js等框架适配)、架构文档动态更新和变更日志自动整理。方案提供完整代码实现,可无缝集成到GitLab CI、GitHub Actions等流水线,解决传统文档编写滞后、版

网络工程师|十多年企业级运维实战|精通 ‌BGP、OSPF、VLAN、SDN、MPLS、ACL、NetFlow、SNMP、 93

PHP实现拉取Git代码

ssh-keygen -t rsa -C "xxxx@126.com" //生成时全部默认。git clone git@gitee.com:项目地址 本地文件夹名。1.确认服务器运营php-fpm的用户和用户组。5.后续就可以在php-fpm拉取代码。4.在php-fpm用户下拉取代码。2.切换到php-fpm的用户。3.创建ssh免登秘钥。

u012345172的博客 760

VSCode 1.65.0 32位zip版绿色部署与配置实战指南

Visual Studio Code 作为跨平台代码编辑器,凭借丰富的插件体系和高度可定制性成为开发者的主流选择。其发行版本包含 Installer 与绿色 zip 包,而 win32-ia32 则对应 32 位 Windows 环境。理解版本差异是正确选型的前提,zip 版免安装、不写注册表,通过重定向用户数据目录即可实现完全便携化。在此基础上,合理的 settings.json 配置能解决编码、终端乱码及自动更新干扰等常见问题。插件体系进一步扩展了编辑器能力,例如通过 C/C++ 与 Code Runn

weixin_34175509的博客 347

AI算力网络与通信领域流量分析:优化策略探讨_副本

今天的AI就像一个"超级吃货",每天要"吃"掉海量数据、“消耗"巨量算力——训练一个千亿参数的大模型,可能需要上万块GPU同时工作数周,其间产生的数据传输量足以填满数百万个1TB硬盘。这些GPU和计算节点通过网络连接形成"AI算力网络”,而数据在节点间的流动就是"通信流量"。如果把算力比作AI的"肌肉",那流量就是"血液"——血液不通畅,肌肉再强也使不上劲。

AI天才研究院 1198

码云webhook自动部署

配置php的www可执行Linux shell 脚本; 参考:php执行Linux shell 脚本 配置码云的webhook 码云以post方式,通知web服务器 代码参考: &lt;?php //file_put_contents("git-webhook_log.txt", 'test-webhooks', FILE_APPEND);//写入日志到log文件中 //exit(...

FollowHeart 3094

自动驾驶仿真基础:使用Veristand自定义CAN报文的Checksum和Counter

文章目录前言一、关于Checksum的组成形式二、自定义的Checksum方法一1、实现的主要流程图如下:2、方法一的主要算法参考三、自定义的Checksum方法二1、软件及插件下载;2、Custom device的使用;4、Veristand调用Custom Device;5、Veristand发送信号值;6、部署到实时机; 前言 1、现在很多的车厂对于车辆的安全机制非常重视,车厂通过对发送的CAN数据进行加密而形成一种保护机制,而Checksum和Counter是其中的一种保护介质,当CAN报文数据的

zataji的博客 1万+

【低代码开发进阶指南】:构建可自动更新PHP组件的4种模式

掌握低代码PHP组件的更新机制,提升开发效率与系统可维护性。本文详解4种自动化更新模式,涵盖热更新、版本比对、远程拉取与回滚策略,适用于SaaS平台、企业级应用等场景,实现组件无缝升级。方法实用高效,值得收藏。

ProceGlow的博客 789

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

kali2020.2安装出现的问题并附详细解决办法

kali2020.2的安装

weixin_48776804的博客 3049

低代码PHP插件版本控制完全指南(从入门到高阶实践)

掌握低代码PHP插件版本管理,提升开发效率与协作稳定性。本文详解适用场景、Git分支策略、语义化版本控制及自动化部署流程,覆盖从入门到高阶的完整实践方案,帮助团队高效迭代。值得收藏的实战指南,点击了解。

VarPerch的博客 1055

高光谱知识(1)-高光谱成像技术的理解

系列文章目录 高光谱技术可以获得待观测目标或场景的连续单色光谱图像,并通过空间维(x, y)数据和光谱维(λ)数据共同组成三维观测数据立方体,从而为研究人员提供探测目标或场景中的每一个点的空间和光谱特征细节。这种兼具相机的高分辨成像能力和光谱仪的高光谱分辨能力使得高光谱被广泛应用于测绘遥感、目标识别、环境监测与评估、临床影像诊断、过程监控等任务中,并在地理、空间、海洋、气候、大气、农业、植被、生态、医药、安防、制造与色度等多个领域中发挥巨大作用。 文章目录系列文章目录前言一、按获取数据的过程划分二、按照光

Echo_Code的博客 1万+

【低代码PHP组件更新机制揭秘】:掌握高效迭代的5大核心策略

掌握低代码PHP组件更新机制,提升开发效率与系统稳定性。本文详解自动化检测、版本回滚、热更新等5大核心策略,适用于快速迭代的Web应用与企业级项目。实现高效维护与无缝升级,值得收藏。

LearnFlow的博客 960

GeoScene Pro教程(002):GeoScenePro基础操作

GeoScenePro基础操作介绍。

WwLK123的博客 2461

Qt代码-无人机地面站系统

无人机地面站系统是无人机与操作员交互的核心枢纽,需实现**无人机状态监控**(位置、姿态、电池等)、**实时通信**(基于MAVLink协议)、**任务规划**(航点编辑、航线生成)、**地图显示**(无人机位置与航迹)、**参数配置**(传感器校准、飞行模式设置)等核心功能。地面站作为`MAV_COMP_ID_GCS`(地面控制站组件ID=255),无人机通常为`MAV_COMP_ID_AUTOPILOT1`(组件ID=1)。// 航点/盘旋指令。// 北京坐标(示例)

寒寒豆豆软件公司的博客 321

PowerWiki:基于 Git 的知识管理系统

PowerWiki是一个基于Git的开源知识管理系统,用Markdown文件存储内容,解决了传统博客平台的四大痛点:1)数据迁移困难,所有内容存储在Git仓库实现零成本迁移;2)备份恢复复杂,Git自带完整版本历史和多平台备份能力;3)内容管理不便,支持Git工作流实现版本控制、批量操作和协作编辑;4)系统臃肿,采用轻量级Node.js架构实现自动同步和简单部署。其核心设计理念是"文章即代码",通过Git管理内容获得版本控制、分支管理和协作优势,同时保持Markdown的通用性和可编程性

weixin_43958308的博客 1066

每周技巧tc 问题处理技巧Teamcenter

(内部)Dataset和Tool相关之2.1——Tool轮询Contents Type和Type Name-赖良顺.docx。(内部)Dataset和Tool相关之3.2——编写Batch和Perl为客户端自动注册相关内容-赖良顺.docx。(内部)Dataset和Tool相关之1.1——Tools和Datasets参数定义-赖良顺.docx。(内部)Dataset和Tool相关之1.2——相关首选项定义及修改-赖良顺.docx。(内部)Dataset和Tool相关之0——概述-赖良顺.docx。

TC技术专栏 1230

自动化发布-GitLab WEB Hooks 配置

钩子(hooks) Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)。 Git Hooks就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。 gitlab的web hooks跟git hook类似。也是当项目发生提交代码、提交tag等动作会自动去调用url,...

weixin_34191845的博客 481

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

零基础玩转GitHub Pages:把你的项目免费变成在线网站(保姆级教程)

GitHub Pages 快速入门指南 GitHub Pages 是 GitHub 提供的免费静态网站托管服务,可以将你的项目变成公开网站。本文详细介绍了以下内容: GitHub Pages 的核心优势:完全免费、自动部署、支持 HTTPS 和自定义域名 两种站点类型:用户站点(username.github.io)和项目站点 3分钟部署教程:通过网页操作创建仓库、添加HTML文件并开启Pages功能 进阶开发方法:使用Git本地开发并推送更新 项目站点注意事项:注意资源路径问题 自定义域名设置:详细说明D

weixin_45284808的博客 427

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

开源TMS选型与落地指南:7大项目横评与二次开发实战

运输管理系统(TMS)是物流数字化的核心,它通过信息化手段管理运单、调度、跟踪与结算,旨在解决传统物流中信息孤岛、效率低下与成本高昂的痛点。其技术原理在于整合订单、车辆、位置与费用数据流,构建协同工作流。对于成长型企业而言,TMS的价值在于实现流程标准化、运营可视化与决策数据化,从而降本增效。应用场景广泛覆盖电商配送、零担货运、国际货代及供应链协同。本文聚焦于开源TMS这一低成本、高自主性的解决方案,针对微服务架构、API优先设计等热门技术趋势,深度横评了OpenTMS、FreightTMS等7个项目的技术

weixin_30800987的博客 358

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: php7.4 编译安装错误 Error 139
下一篇: Python ConfigParser.read 报错 configparser.MissingSectionHeaderError: File contains no section headers
BookNoteY
博客等级 码龄10年 8粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值