环境, 阿里云服务器
1. 本地创建项目, push到github服务器上面
2. 生成www用户的密钥
sudo -u www ssh-keygen -t rsa -C "[email protected]"
3. 将密钥添加到github帐号的SSH_KEYS里面
3. 用www用户执行克隆, 源使用ssh的克隆方式, 不要用https
sudo -u www git clone [email protected]:xxx/xxx.git
4. 创建更新的php脚本,放到网站的根目录, 外网可以正常访问到这个脚本即可
cat update_hook.php
<?php $www_folder = "/alidata/www/default/movie"; //在这里获取到了用户提交的内容, 以及提交者等等, 可以记录到数据库中供以后使用 $raw_json = file_get_contents('php://input'); print_r(json_decode($raw_json, true)); echo shell_exec(" cd $www_folder ; git pull 2>&1");
5. 将脚本地址填写到项目的webhooks
http://x.x.x.x/update_hook.php
提示:
注意不要在服务器上用root用户git pull, 这样一些文件的权限会变为root, 就混乱了, 下次 www用户push后就无法通过webhook部署了
sudo -u www git push
服务器上面配置全局的用户和邮箱
git config --global user.name “xxx” git config --global user.email “[email protected]"
将项目根目录权限设置为www用户
chown -R www:www /alidata/www/default/movie