设置webhook_如何使用WebHook实现自动部署(Coding)

1 准备工作

好的 不废话直接入题 首先我们要使用一款支持webhook的托管平台(如Github、coding、码云等),要先熟悉git代码操作,当然能想看如何自动部署的 应该都对git有一定了解了。我们还要清楚服务器上是哪个用户要使用git,这个很重要 不然你会因为配置 代码都一样 可是一直失败的尴尬情况 哈哈哈。

2 仓库搭建 代码准备

线上仓库搭建就略过了 都懂的哈。现在是以我的个人网站 及 coding 为例 建议都使用SSH 我比较喜欢这种一次配置终身享用 关键是稳好吧。

然后关键代码来了 在本地将下面代码编写PHP文件(以hook.php为例)放入项目根目录一起 push 到coding仓库<?php

error_reporting(1);

//本地仓库路径

$local = '服务器端仓库的绝对路径';

$json = file_get_contents('php://input');

if (!$json) {

header('HTTP/1.1 400 Bad Request');

die('HTTP HEADER or POST is missing.');

}

$token = '567eXXXXXXXXXXXXXXXXb98dd'; //coding配置的token

// 从请求头中获取签名

$signature = $_SERVER['HTTP_X_CODING_SIGNATURE'];

// 进行签名解析

$sha1 = hash_hmac("sha1",$json,$token);

$calculate_signature = 'sha1='.$sha1;

// 如果启用验证,并且验证失败,返回错误

if ($calculate_signature !== $signature) {

header('HTTP/1.1 403 Permission Denied');

die('Permission denied.');

}

// 如果仓库目录不存在,返回错误

if (!is_dir($local)) {

header('HTTP/1.1 500 Internal Server Error');

die('Local directory is missing');

}

echo shell_exec("cd {$local} && git pull 2>&1");

die("done " . date('Y-m-d H:i:s', time()));

3 服务器端操作

首先要确认的是服务器端要谁操作 当然你也可以指定用户 这边最快的是使用whoami 使用下面代码 web端访问应用 查看是要谁操作<?php

$output = shell_exec('whoami'); //记得要开启shell_exec函数

echo "

$output
";die;

然后知道了是要谁(以www为例)操作就好办了 若www无法登录 需要先配置可登录[root@izwz9gchhrqf6m8bcs57c4z ~]# vim /etc/passwd

找到www用户 将/sbin/nologin 改为 /bin/bash 再进入要访问的路径下(这边以/www/wwwroot/为例)

[root@izwz9gchhrqf6m8bcs57c4z wwwroot]# mkdir craon.cn

创建空文件夹 并且所有者给www用户 切换到 www 用户 这步很重要 如果没有配置公钥的 切换到www用户后要先配置好公钥 并且在coding上也填写。[root@izwz9gchhrqf6m8bcs57c4z wwwroot]# su www

bash-4.2$ git clone ssh:仓库 craon.cn

最后在coding端再填写 webhook 将地址填写为对应的能访问到 hook.php 配置的token要与上面配置的一同。最后ping一下通了的话 再尝试本地提交 若本地提交coding 对应的线上版本有pull 就大功告成了。

4 总结

记得要切换到 www 用户 要先在 www 用户登录下生成git公钥

放置项目的文件夹得有所有权 记得记得记得先开启shell_exec函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值