這幾天嘗試了利用github的webhook,當代碼更新到github,咱們的測試服務器自動更新最新的gitbub倉庫代碼。php
先列幾個大概步驟,有時間再補充詳細nginx
1 . 服務器生成ssh key,通常在我的的家目錄下,root用戶在 /root/.ssh/id_rsa.pub。配置到githubgit
2 . php.ini配置開啓 shell_exec 函數(能夠在php中執行shell腳本)github
3. 查看php的運行用戶,下一步要用。在nginx配置文件中查看。通常是www或者nginxweb
4.在咱們部署代碼的服務器寫一個php接口 ,配置到github的webhook。shell
<?php
dump(shell_exec('sudo /home/wwwroot/deploy.sh'));
?>
5.寫一個git更新代碼的腳本(deploy.sh)。注意,git要寫絕對路徑。能夠用 which git 命令查看。bash
#!/bin/bash WEB_PATH='/home/wwwroot/PHPMailer/' WEB_USER='www' WEB_USERGROUP='www' echo "Start deployment" cd $WEB_PATH echo "pulling source code..." /usr/local/git/bin/git reset --hard origin/master /usr/local/git/bin/git clean -f /usr/local/git/bin/git pull /usr/local/git/bin/git checkout master echo "changing permissions..." chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH echo "Finished."
6.最後一步,由於咱們是php腳本調用shell腳本。php是php運行的,php的執行用戶通常缺乏一些權限,直接運行shell腳本可能會權限不夠。能夠經過修改 /etc/sudoers,服務器
使普通用戶能夠經過 sudo + 命令 ,臨時獲取root權限。具體設置請百度ssh