[email protected]也提供了web hook的功能,可以用来自动部署代码了。
具体的代码不提供了,网上一搜一大堆,下面只是列举几个坑,有更好的解决办法,但是我只是写出了最适合我的。
1、需要输入密码
这里可以在git clone的时候加上账号密码 git clone http://账号:密码@地址,当账号中出现@的时候 用%40代替即可
2、exec、shell_exec这类函数没办法使用
在lnmp的环境包中这个函数被禁用了,在php.ini的displays_function中去掉即可
3、手动在目录执行git pull可以更新代码,但是通过hook的就是不会更新
首先试试php depoy.php会不会更新代码,如果可以那就是权限问题,如果不可以,那就是代码写的有问题,代码问题自行解决,权限问题给一下参考
1)apache/nginx用户是否有git命令的执行权限
2)apache/nginx在当前目录的可写权限
3)当前目录下.git目录下的文件的可写权限
我就是调试了好久发现的第三种情况,之前执行的时候在命令行下,.git里面文件都是root的,无法写入,而在当前目录执行chown www:www -R .的时候不会包含隐藏目录,导致这里一直没权限,自动更新失败。改了后就可以正常更新了