本地提交代码 到 git仓库之后 网站 远程自动同步代码 。php
git 的 webhook 正好能 知足 这个需求。git
服务器端:github
服务器端php程序是以www用户来执行,以前设置的ssh密钥是以root用户来设置的,php以www用户执行脚本中的git pull 命令时就没有权限web
//以www用户的身份生成秘钥 sudo -u www ssh-keygen -t rsa -C “jianl@example.com”
将生成的 id_rsa.pub 内容复制到github 的公钥设置里。shell
建立文件放入网站根目录下数据库
<?php $secret = ""; $path = "."; //passowrd 是webhook哪里设置那个密码 if(json_decode($_POST['hook'])->password == 'password'){ echo shell_exec("/usr/local/git/bin/git pull 2>&1"); exit(); } //echo shell_exec("cd {$path} && /usr/bin/git reset --hard origin/master && /usr/bin/git clean -f && /usr/bin/git pull 2>&1"); http_response_code(200); ?>
去github置webhookjson
彻底以上配置 。服务器端自动同步代码的功能就可以实现了。安全
缺点:php有执行shell的权限不安全,在安全模式下没法使用此函数。bash
服务器数据库再开启远程链接,本地链接服务器数据库进行开发十分方便。服务器
相关连接:http://my.oschina.net/dhyana/blog/738028