webhook php,CentOS 下利用 webhook 实现自动部署(PHP)

本文介绍了如何在CentOS系统中通过Webhook实现Hexo博客的自动部署。首先,创建Apache部署公钥并将其部署到远程服务器,然后赋予Apache对项目目录的操作权限。接着,编写了一个PHP钩子脚本来执行git pull命令。最后,配置Coding仓库的Webhook URL,完成自动化部署设置。这样,每次在Coding上push新文章后,服务器会自动拉取更新。
摘要由CSDN通过智能技术生成

大家好,我是shelter,今天为大家带来centOS下 利用 webhook 来实现项目自动部署。win server 版本

ffbbd45b2df0495f442f7d9f8644a051.png

场景:在coding上有一个hexo_blog的远程git仓库。

每次push新的文章上去后,还要登陆远程服务器去pull代码,感觉非常不方便。这里用webhook来解决这个问题。

1.创建apache 部署公钥

cd /usr/share

sudo chown apache httpd/ #修改httpd目录的所有者

sudo -Hu apache ssh-keygen -t rsa # 一直回车下去

sudo cat /usr/share/httpd/.ssh/id_rsa.pub # 查看生成的密钥内容,复制全部

2.将公钥部署到远程服务器上(coding为例子)

32d07e4e11b7426274da558a8c6a89cc.png

3.给予apache操作项目目录的权限

直接给目录777权限。。简单粗暴

sudo chmod 777 /var/www/hexo_blog/ -R

(或者也可以新建个用户组,把ftp和apache添加到该分组,给予该组权限)

4. 编写钩子(hook)

这里我为了达到hook的统一管理,我直接在www下建立了一个webhooks文件。

创建钩子 hexo_blog.php

error_reporting(1);

//需要自动部署的项目目录

$dir = '/var/www/hexo_blog';

//coding填写的令牌(在第六点配置,防止别人恶作剧)

$token = 'shelter';

//验证令牌

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

if (empty($json['token']) || $json['token'] !== $token) {

exit('error request');

}

//这里因为我的git不支持直接git pull,所以带上了远程库名和分支,'2>&1'是让执行管道输出结果。

echo shell_exec("cd $dir && git checkout -f && git pull coding master 2>&1");

编写好钩子后,需要先手动使用apache的身份pull一下。执行

cd /var/www/hexo_blog

sudo -u apache git pull coding master

第一次连接需要输入yes,确认连接(这个坑,会导致令牌错误)。

pull成功!

5.配置钩子URL到远程仓库

fa6d6aa5803799e0ce8e51c04cca42d8.png

6.总结

nice!centOS下,利用webhook实现自动部署成功!

认真,可以让事情变得出乎意料地好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值