PHP使用WebHook自动更新Git仓库部署
【PHP使用WebHook自动更新Git仓库部署】最近在使用免费git仓库,每次 push 了代码之后还要去手动 pull,很麻烦就准备配置下webhook。
我们的开发语言是 PHP,所以就使用PHP 的 shell_exec 来执行 shell 脚本,下面就简单说下配置流程。
修改 www 用户执行权限
因为 nginx + php 都是 www 用户来执行的,而且 www 一般都配置为不允许 ssh 登录的。那么就需要更改下 www 的执行权限了,这个配置是在 /etc/sudoers
配置文件中设置,找到 root ALL=(ALL) ALL
,在这个下面添加如下配置,对于这个权限的设置如果不明白就要咨询下运维的童鞋了,我这里只是简单的演示配置:
rootALL=(ALL)ALL
wwwALL=(ALL)NOPASSWD:ALL
编写 webhook.php webhook 这个可以根据使用的不同的 git 仓库(Gitee、Github、coding、阿里云code...)配置,大致内容就是校验IP、校验签名、校验hook事件类型等,我这里只配置了推送事件才会触发 hook,所以就没有对事件进行校验
编写 webhook.sh
#!/bin/bash
WEB_PATH='/www/gitproject'
WEB_USER='www'
WEB_USERGROUP='www'
echo "Start ..."
cd $WEB_PATH
echo "pulling source code..."
sudo /usr/bin/git fetch --all
sudo /usr/bin/git reset --hard origin/master
sudo /usr/bin/git clean -f
sudo /usr/bin/git pull
echo "changing permissions..."
sudo chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH
sudo chmod -R 0755 $WEB_PATH
echo "Finished."
刚在在
/etc/sudoers
中配置了 www,所以这里使用 sudo上面设置完毕就可以去测试下了,我测试的是成功的,如果你没有成功就使用定时器的方式吧
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- thinkphp|thinkphp 3.2 如何调用第三方类库
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 使用composer自动加载类文件