2015-06-14 80 views
0

當我推到GitHub的項目從任何地方的計算機,我希望我的遠程服務器自動拉(它是一個PHP的網站項目)Github上<>遠程服務器,自動部署,網絡掛接不工作

我已經搜索谷歌和YouTube,但花了整整一天,我沒有找到如何做到這一點。

在我http://xxx.xxx.xxx.xxx/website/,還有.git文件夾和文件github.php部署

github.php

<?php 
`git pull origin master`; 
`touch test.txt`; 

如果我從終端執行./github.php, 「腳本」 效果很好。拉動也起作用。

如果我從瀏覽器中輸入網址http://xxx.xxx.xxx.xxx/website/github.php,拉不起作用,但創建了test.txt

如果我從任何本地計算機推送提交,則遠程服務器不會自動取消並且不會創建test.txt文件;

以我遠程服務器,該權限是:

  • 爲.git目錄:drwxrwxrwx 8冬治冬治4096年06月14 13點31分(-R)

  • 爲github.php: - rwxrwxrwx 1東寺東寺51年06月14日13:28

在我github上的帳戶,我添加了一個網絡掛接服務: 有效載荷網址是:http://xxx.xxx.xxx.xxx/website/github.php

請幫我確定我的問題的由來。

回答

0

我不認爲你的PHP是有效的,因爲你需要使用類似exec()的東西在PHP中使用git ...我幾天前有同樣的問題,發現很少的工具來幫助部署你的代碼Github或Gitlab,所以我創建了Deepl.io來處理Web-Hooks和調用腳本以部署到您自己的服務器上。 這處理從github或gitlab發送的JSON,可用於多個存儲庫和分支等。您可以在收到拉取通知後使用自己的PHP或shell腳本,並在每次部署後向您發送狀態電子郵件... 查看:http://deepl.io

實際執行(由php調用)的shell腳本如下;

#!/bin/sh 

TRAGET="/path/to/target/folder" 
LOG="/path/to/your/log/file.log" 
NOW=$(date +"%Y-%m-%d-%H%M%S") 

# Start Sctipt 
echo " 
SCRIPT START: $NOW" >> $LOG 

cd $TRAGET >> $LOG 

# checkout correct branch 
git checkout master >> $LOG 

# clear untracked files 
git clean -df >> $LOG 

# revert local changes 
git checkout -- . >> $LOG 

# pulling new stuff 
git pull >> $LOG 

echo "SCRIPT END. 
" >> $LOG 
相關問題