本地提交代碼 到 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