Git github webhook 自動更新/部署代碼 php自動更新腳本

這幾天嘗試了利用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

相關文章
相關標籤/搜索