系统ubuntu 16.04,搜索出来的参考文章比较乱,应对问题的方法很多不适用,最后还是通过stackoverflow上的回答解决的,在这整理下。
在coding(码市)上已经创建好项目,并git clone到服务器上,我的目的是 本地每次push代码都能触发服务器自动pull。
A: 创建update.php, 核心是利用PHP shell_exec函数 执行shell命令。
B: 在码市 项目设置/webhook 里添加update.php的访问路径。代码参考 http://www.jianshu.com/p/92adf0c8361c。
C: nginx的user 为www-data。git pull命令会验证当前用户的ssh key,而www-data用户的根目录在/var/www。所以创建www-data的ssh key:
c1 mkdir /var/www/.ssh
c2 ssh-keygen 回车 /var/www/.ssh (指定生成目录)
c3 chown www-data:www-data .ssh/*
c4 chmod o-r id_rsa,私钥只能www-data有读取权限
D: echo >/var/www/.ssh/known_hosts
ssh-keyscan -t rsa coding.net>> /var/www/.ssh/known_hosts
git.coding.net 并且码市过来的ip都分别加下,应对host key verification failed问题
E: tail -f hooks.log监听更新日志, 在码市webhook里点击测试按钮,能看到如下信息,则说明自动更新成功了
参考文章: