php-webhook利用php脚本自动化部署git项目

遇到权限的问题弄了好久,整理一下步骤简单的写一下
在阅读这篇文章的时候默认你的服务器上安装了web服务器和git

step1

写一个简单的脚本查看你的服务器运行的账户,和是否能够运行相关函数

1
2
$test=shell_exec("whoami");
var_dump($test);//我的返回的是 www-data

如果这里返回null的话,不妨检查一下shell_exec函数是否被禁用了

step2

建立ssh公钥,以我的www-data账户为例子

1.先建立一个.ssh目录并给予www-data用户权限

1
2
sudo mkdir /var/www/.ssh
sudo chown -R www-data:www-data /var/www/.ssh/

2.生成webhook部署公钥

1
sudo -Hu www-data ssh-keygen -t rsa //一直回车即可

如果你和我一样,遇到了-su: sudo: command not found,可以先安装sudo命令,apt-get install sudo,如果你和我还一样遇到了一些问题,不妨先试试apt-get update

3.将webhook部署公钥上传到托管网站

测试用的Coding,其他还在测试当中

先查看公钥

1
sudo cat /var/www/.ssh/id_rsa.pub

然后复制上面的内容到托管网站,项目的webhook上面

step3

webhook文件

step4

先在服务器上git clone

1
2
sudo chown -R www-data:www-data {代码地址}
sudo -Hu www-data git clone {你的项目ssh地址} {代码地址} --depth=1

注意,这里初始化clone必须要用www-data用户

step5

在托管网站上添加webhook地址,然后提交一次测试

感谢

参考了以下代码
https://gist.github.com/overtrue/0bf1cd704bf804de2e2c