CentOS+Git+码云,WEB自动同步部署方案

宝塔利用git+ webhooks 实现git更新远程同步阿里云Linux服务器 目的:希望web程序push到gitee上后,自动pull到阿里云服务器,实现本地与服务器的数据同步更新 借鉴宝塔论坛的方法:https://www.bt.cn/bbs/thread-5348-1-1.html 服务器环境:centos7.3,Nginx 项目目录: /www/wwwroot/www(www变量,自定义) 远程git版本库: 码云 步骤: 1. 准备工作 宝塔自带 ... 阅读详情

环境:centos7

Git安装

yum install -y git
git --version #版本
rpm -qal |grep git #路径/usr/bin/git
  • 1
  • 2
  • 3

生成公钥

生成公钥的目的,是为了更安全更方便的SSH拉取方式,同时让git命令语句更简洁。

sudo -u www ssh-keygen -t rsa -C "xxx@xx.com" 
  • 1

注意:www表示有权限执行PHP的用户 
邮箱可以不同于码云帐号,三次回车即可生成 ssh key 
记下生成公钥的目录:Your public key has been saved in /home/www/.ssh/id_rsa.pub.

cat /home/www/.ssh/id_rsa.pub
  • 1

得到你的 public key,添加到码云, SSH key添加地址: 你的项目地址/deploy_keys (注意这里用的项目部署公钥,只读的,你也可以申请个人公钥,可写) 
然后按如下命令验证是否生效:

sudo -u www ssh -T git@gitee.com
  • 1

若返回

Welcome to Gitee.com, Anonymous!
  • 1

—-哇咔咔,添加成功!!—–

如果遇到 Host Key Verification Failed,就执行:

sudo -u www ssh-keyscan -t rsa gitee.com >> /home/www/.ssh/known_hosts
sudo -u www ssh-keyscan -t rsa 120.55.226.24 >> /home/www/.ssh/known_hosts
  • 1
  • 2

Clone克隆代码

初次使用,先克隆一次代码到网站目录。 
由于刚才是针对www生成的公钥和私钥,所以在命令行界面也要用www用户权限执行git。

sudo -u www git clone 码云仓库SSH地址  /网站根目录
  • 1

Pull拉取代码

reset只影响被track过的文件, 所以需要clean来删除没有track过的文件

sudo -u www git reset --hard && git clean -f && git pull 2>&1
  • 1

码云WebHook通知服务器拉取代码:

关键函数:shell_exec

注意:开放shell_exec这个php函数是非常危险的,因此切记不要在生产环境开放这个函数,更加不能用root权限去执行php。 
建议将以下代码放到一个单独配置的测试用网站环境,除log日志文件以外,此环境下所有文件禁止www用户的写入和修改。

<?php

/**
 * GETEE HOOK 测试服务器端代码
 *
 * @author   hb1707 <hb1707@live.cn>
 */


$git = "git"; //默认是用git全局变量,有的环境可能要指明具体安装路径
$branch = ""; //指定pull分支,为空就是默认分支
$logName = "git_data"; //本地日志名称,与当前php文件在同一目录
$savePath = "/home/wwwroot/web/"; //网站根目录,初次克隆确保目录为空
$gitSSHPath  = "git@gitee.com:xxx/xxx.git";//代码仓库SSH地址
$password = "password"; //在GITEE设置的密码
$is_test = false;//测试模式,无需密码:true打开,平时false关闭
$isCloned = true;//设置是否已经Clone到本地,true:已经clone,直接pull,false:先clone.

//如果已经clone过,则直接拉去代码
if ($isCloned) {
    $requestBody = file_get_contents("php://input");
    if (empty($requestBody) && empty($is_test)) {
        die('send fail');
    }

    //解析码云发过来的JSON信息
    $content = json_decode($requestBody, true);
    //若是主分支且提交数大于0
    //密码要正确
    if($content['password'] == $password || !empty($is_test)){
        if($content['total_commits_count']>0 || !empty($is_test)) {
            if ($content['ref'] == "refs/heads/$branch" || !$branch || !empty($is_test)) {
                $cmd = "cd $savePath && $git reset --hard && $git clean -f && $git pull $branch 2>&1";
                $result = shell_exec($cmd); //关键命令,拉取代码,2>&1后台执行
                $res_log = "[ PULL START ]" . PHP_EOL;
                if(!empty($is_test)){
                    $res_log .= date('Y-m-d H:i:s') . '执行测试!'. PHP_EOL;
                }else{
                    $res_log .= date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push了' . $content['total_commits_count'] . '个commit:'. PHP_EOL;
                }
                $res_log .= $cmd. PHP_EOL;
                $res_log .= $result. PHP_EOL;
                $res_log .= "[ PULL END ]" . PHP_EOL;
                $res_log .= PHP_EOL . PHP_EOL;
                file_put_contents($logName.".log", $res_log, FILE_APPEND);//写入日志
                echo $result;
            }
        }
    } else {
        file_put_contents($logName.".log", '密码错误!', FILE_APPEND);
        echo '密码错误!';
    }

}else {
    $res = "[ CLONE START ]".PHP_EOL;
    $res .= shell_exec("$git clone $gitSSHPath $savePath").PHP_EOL;
    $res .= "[ CLONE END ]".PHP_EOL;
    file_put_contents($logName.".log", $res, FILE_APPEND);//写入日志
}

最后一步,到码云的Webhook里面增加以上php代码的访问地址。

CentOS 7 部署 Eclipse Theia 云 IDE 实战指南 Eclipse Theia 是一款轻量级、可容器化的开源云 IDE,基于 VS Code 架构但专为 Web 端远程开发与多租户隔离场景优化。其核心原理是将完整开发环境封装为 Node.js 应用,通过 Docker 实现运行时隔离与插件热加载,天然规避宿主机依赖冲突。技术价值在于低侵入部署、细粒度权限控制及原生 CentOS 7 兼容性,显著优于 VS Code Server(glibc 版本限制)和 Gitpod(K8s 重依赖)。典型应用场景包括等保合规内网开发平台、外包团队安全接入、嵌入式项目远程协 阅读详情

相关推荐

君正T31x metartc集成测试

metartc为国内杨大侠部分开源的一款用于嵌入式领域webrtc库,它与谷歌官方webrtc相比,编译到君正平台的可执行文件仅有5M即可实现webrtc的通信。1. 目前实现的是基于开源版v5.0-b0版本做的简单修改,官方的好几个版本都多少缺点东西,我这里给整理了一下。目前是局域网连接的webrtc,后续尝试走stun和turn试一下NAT穿越的效果。

fsmpeg的博客 3158

centos 6.8安装git_web模式管理git之gogs安装与配置(类Github)

github一样的git管理方式。首页分享一个我做好的样子:http://gits.24di.cn没有gitlab那么复杂,且不需要商业授权。那么gogs怎么安装呢(centos系统):默认已你已经安装好MySQLgogs安装部分1、确保centos装了wget,方便下载安装包,没有可执行命令:yum install wget -y2、确保装了zip,方便解压:yum install unzip ...

weixin_39939993的博客 267

TeraTerm 使用技巧

⏹TeraTerm 使用技巧

菜鸟记录 1万+

码云(Gitee)与Git配置

三次回车之后,在windows系统中,一般会在系统盘的当前用户的目录下有一个.ssh文件,本文配置的前提是已经申请好了码云(gitee)的账号和电脑上已经安装好了git。输入如下命令,邮箱就填自己的邮箱就可以了,然后需要三次回车。将id_rsa.pub文件中的公钥复制到gitee的输入框中。这里的gitee用户名,就是gitee个人主页@后面的那一串。就是将公钥复制到右侧的框中, 并点击确定即可。点击确定,至此gitee的ssh公钥配置完成。在gitee的个人设置里面配置ssh公钥。

拿着核武器的程序员的博客 1052

【FPGA】安路FPGA下载器驱动安装教程

#来自学渣的问候 最近正在参加19年的FPGA创新设计大赛,然后我们选择了安路(全名:上海安路信息科技有限公司)的 FPGA 开发板。安路算是国产FPGA中还不错的一家,和紫光一样,除了自主生产的FPGA,也开始拥有了自己的编译环境。 好了。言归正传,写这篇博客的原因是,前几天在安装 安路 的编译环境和下载器驱动的时候,出了点问题,弄得心烦意乱。所以打算解决之后写篇博客,避开这个神奇的问题。 首先...

Ninquelote的博客 2万+

迪文串口屏开发环境搭建全流程:从DGUS Tool到串口联调

串口屏作为嵌入式人机交互的核心组件,通过串口通信实现主控MCU与显示终端的指令交互。其工作原理基于变量地址映射,主控读写VP地址即可驱动屏上控件,兼具低功耗与高稳定性。在工业控制、医疗设备及智能家居面板等场景中,串口屏能显著降低开发门槛与硬件成本。迪文屏凭借DGUS Tool上位机与自定义串口协议,成为主流选择。掌握DGUS Tool版本匹配、串口驱动安装及VP地址规划,是快速搭建开发环境的关键。

weixin_33937499的博客 607

centos7服务器配置git,并且从码云或者git拉取代码

1、首先安装转git sudo yum install -y git 2、查看git版本 git --version 如果查看没问题,那就是安装成功了 3、Git使用--进入想要把其变成Git可以管理的仓库的目录,初始化仓库 git init 这个命令会生成git的初始化文件 4、然后拉取码云的代码(码云你某个项目仓库代码的url地址) git remote add origin "你的码云或coding项目地址(ssh或https)" 5、然后拉取代码 git pull origin

qq422431474的博客 2089

电容式触摸抗干扰设计:工业环境下的实践方案

针对工业环境中电容式touch器件易受干扰的问题,分享实用的硬件布局与软件滤波方案,提升touch响应稳定性和可靠性。

weixin_35755562的博客 843

码云 git 安装 及 操作

大括号{}内 是你需要添加的变量 小括号()是注释 环境安装 一、安装 二、配置    1)注册(生成公钥和私钥)       git config --global user.name "{你的用户名} "       git config --global user.email "{你注册的邮箱}"    2)将生成的公钥 上传到服务器       ssh-k

wlr56789的博客 2714

C++ Qt6 QtQuick/QML入门进阶与项目实战视频教程

C++ Qt这些年在PC客户端、嵌入式、汽车座舱仪表等领域应用很广泛,例如剪映专业版、微信4.0、亿图脑图、Steam、美图秀秀、腾讯会议、钉钉(部分模块)等都是使用C++ QWidget/QML开发。特别是QML这种声明式UI开发更加快捷,QML的界面开发效率相对于QWidget更快速,界面效果更好,QtQuick/QML在Qt6版本也逐渐完善了,使用QML进行客户端开发是个不错的选择。

琅嬛福地 4488

使用Simulink对液流电池在微电网中的动态响应进行建模与仿真

本文介绍了使用Simulink对液流电池在微电网中的动态响应进行建模与仿真的方法。通过搭建包含液流电池、双向DC-DC变换器、分布式能源和负载的微电网模型,并设计基于SOC的控制器,详细说明了从模型创建到仿真运行的完整流程。重点分析了液流电池在不同负载条件下的动态特性,评估了系统响应速度、充放电效率和稳定性等性能指标。该仿真方法为验证液流电池在微电网中的应用提供有效工具,有助于优化参数设计和提升系统可靠性。

amy_mhd的博客 136

php WEB自动同步部署方案 CentOS+Git+码云

工具 phpstorm git yum install -y git git --version #版本 rpm -qal |grep git #路径 码云 Linux服务器 生成公钥的目的,是为了更安全更方便的SSH拉取方式,同时让git命令语句更简洁。 (1)   sudo -u root ssh-keygen -t rsa -C "asdf@163.com" 注意:roo...

迷失的鱼的博客 447

[网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了通过Python利用永恒之蓝漏洞加载WannaCry勒索病毒,并实现对Win7文件加密的过程,但过程较为复杂,为什么不直接利用永恒之蓝呢?所以,这篇文章将直接分享MSF利用MS17-010漏洞进行反弹Shell,再上传勒索病毒进行实验复现,并详细讲解WannaCry勒索病毒的原理。基础性文章,希望对您有所帮助。

杨秀璋的专栏 1万+

CentOS7+Git+码云,WebHook自动同步部署

Git安装 yum install -y git git --version #版本 rpm -qal |grep git #路径/usr/bin/git 生成公钥 生成公钥的目的,是为了更安全更方便的SSH拉取方式,同时让git命令语句更简洁。 sudo -u www ssh-keygen -t rsa -C "xxx@xx.com" 注意:www表示有权限执行PHP的...

BlueSky 1256

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux下使用Jenkins+Git+Maven+码云搭建自动化部署,可远程部署jar和war

写在前面:       本教程为2台全新阿里云服务器CentOS 6.8(以下称搭建Jenkins的为第1台服务器,可访问项目工程的为第2台服务器,以免混淆,没有说明的都是在第1台服务器root目录上操作,记得添加端口安全组和关闭防火墙),git仓库使用的是码云。       整个教程包括了jdk、tomcat、Git、Maven、Maven私服、Jenkins、zookeeper等的搭建,全部代...

zhou870498的博客 8252

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CentOS Git+码云+TP 宝塔webhook 实现把码云上的项目自动同步到web服务器(git@gitee.com: Permission denied (publickey).报错解决)

通过宝塔的webhook插件,实现把码云上的项目自动同步到web服务器指定路径下 确保web服务器里安装了git 可通过git –version查看 进入宝塔面板,软件管理-》宝塔插件,搜索wekhook,然后安装即可 添加hook 脚本内容: 脚本代码: #!/bin/bash echo "" #输出当前时间 date --date='0 days ago' "+%Y-%m-%d %H:%M:%S" echo "Start" .

php菜鸟技术天地 1838

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

在centos上搭建git服务器并自动同步代码

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34356310的博客 455

git linux 部署网站,centos 搭建git自动部署web应用

由于经常要搭建一些web服务器应用,而且我用的最熟的就是centos 7 了,但工作又是做开发,所以记录一下操作方法以便后期查阅(不适合linux小白)。一、安装最新版本的git官方地址:https://mirrors.edge.kernel.org/pub/software/scm/git/编译安装:wgethttps://mirrors.edge.kernel.org/pub/softwar...

weixin_42500279的博客 292

码云 gitweb hook

服务器环境:CentOS 8.2.2004 项目目录: /www/wwwroot/www (www变量,自定义) 远程git版本库: 码云 步骤: 1. 准备工作 宝塔自带 git,没有的话可以自行安装 安装命令 yum install git 已安装的可以查看git版本 git --version 添加密钥到码云 ssh-keygen -t rsa 把id_rsa.pub全部字符串复制添加到码云部署项目公钥设置里边 为了避免git pull 输入用户名密码,先把用.

还想做MAD 251

CentOS服务器配置Git Webhook实现代码自动同步

Webhook是一种轻量级的HTTP回调机制,通过事件触发实现系统间自动化通信。其核心原理是服务端在特定事件发生时向预设URL发送HTTP请求,触发接收端执行预定操作。在DevOps实践中,Webhook常用于实现持续集成/持续部署(CI/CD)流程自动化,显著提升开发效率。以Git代码托管平台为例,结合Nginx反向代理和Python Flask框架,可以构建高可用的自动化部署系统。该方案特别适合需要频繁更新的Web项目,通过验证签名、IP白名单等安全措施确保可靠性。实际应用中,这种自动同步技术能减少人工

weixin_30847939的博客 347

宝塔git 自动同步代码 webhooks coding 码云gitee centos服务器自动pull代码

宝塔git 自动同步代码 webhooks coding 码云gitee centos服务器自动pull代码

Pasa吴技术博客 877

配置CentOs的git以及部署SSH公钥

前言在自己的服务器上部署Git服务器,是一件非常重要的事情,当你有项目需要自动部署到服务器上的时候,在服务器上建立仓库,一键push上去,而不是手动打包文件夹复制咱去,这是一个非常便捷的过程,本节内容服务于“如何将Hexo上传到服务器上并实现自动部署”。 服务器环境我使用的是CentOs 7.X版本 64位,6.X版本已经放弃维护,不建议大家使用。 因为CentOs已经...

测试 1621

CentOS7配置Git Hooks代码自动部署

服务器 CentOS Linux release 7.3.1611 (Core) x64 开发机 Windows NT 10.0; WOW64 开发机 下载并安装Git Windows Git下载地址 所有步骤缺省安装即可 安装完成后,在任意路径下右键打开Git Bash 下文的用户名和邮箱地址可以随意设置,但是如果你还要提交到GitHub上面,请使用在Gi...

Aikihny 1392

centOS 7.3 64位服务器,git仓库搭建并自动部署

本文参考连接 https://blog.csdn.net/qq_18358973/article/details/82218823 先感慨下,最近工作不是很忙,自己买了台阿里云服务器,想着自己做个项目放上去玩玩,于是乎,就先开始研究,git 在服务器搭建仓库,并实现代码自动同步部署到web 目录下。然后通过nginx 起个服务,来访问页面。 但是这个看似简单的流程,对于我这种没搞过的人来说,在网...

泥猴桃的博客 715

CentOS上利用Git和Maven自动化部署Java Web

在阿里云CentOS 6.5 java开发集成环境下,利用到Git和Maven进行自动化部署,git换成SVN也类似

Shawn's Blog 1530
上一篇: nodejs 调试命令
下一篇: go语言初识
赢阡
博客等级 码龄10年 6粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赢阡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值