2013-06-28 100 views
21

我想將所有我的網站移到GitHub以獲得所有顯而易見的好處。我不是命令行的忠實粉絲,所以我喜歡GitHub,因爲它允許我避免觸及所有這些。在GitHub上建立一個存儲庫,然後與我的電腦同步很容易。我需要能夠從GitHub自動推送到網絡服務器,儘管如此,當我在本地更新某個主分支時,將其與GitHub同步,它會在網站上實時顯示。從谷歌搜索這個主題看來,大多數技術似乎需要命令行或看起來相當複雜。我想用大約15-20個站點(其中許多託管在來自不同客戶端的不同服務器上)執行此操作。我想找到一個在我的技能範圍內的選項,並且每個站點不需要2-3小時。任何人都知道設置這個最好的,最簡單的方法嗎?從GitHub推送到Web服務器

+5

第一步是學習如何使用命令行。你正在走向一些相當詳細的模式,並且不使用命令行,你不會走得太遠。另外,要小心,可能有一些文件不會放在github中(圖像和文檔可能不需要源代碼控制)以及要部署的數據庫,並且它不會像魔術一樣完成......我認爲你應該尋找是一個部署工具 –

+0

無論是使用OSX,你都可以考慮這個基於GUI的相當方便的工作流程(我也用這個爲一些WordPress的東西):http://eppz.eu/blog/push-git-to-ftp/ – Geri

+0

您可能需要使用像https://www.heroku.com/這樣的PAAS進行研究,該支持通過簡單的push即git push heroku master來支持部署 –

回答

8

這是複雜的部分是webhook on GitHub

每個GitHub的倉庫有每當庫推送到Web服務器通信的選項。

這意味着您的網站必須有一個進程監聽GitHub在收到提交時發送的JSON消息。

你可以看到那些聽衆的多個實例,這樣webhook-deployer,與auto.php(一個PHP服務器):

<?php 

// Prevent accidental XSS 
header("Content-type: text/plain"); 

// Run the script 
if ($_POST['payload']) { 
    shell_exec("./pull.sh"); 
} 

這GitHub的項目建議,沒有密碼的SSH密鑰,這點我同意開頭(測試它)。
但是,特別是對於私人項目,最好運行ssh-agent並管理受保護的ssh密鑰密碼。
作爲亞諾什comments

  • 如果GitHub的庫是公共的,那麼他甚至不需要一個。
  • 如果回購是私人的,那麼他需要它,但這不應該這麼輕率。如果可能的話,他應該使用關鍵代理。
    如果這太複雜了,那麼他可以使用專用的SSH密鑰而不用僅用於此部署的密碼,並且該密鑰永遠不應該離開部署PC。
+1

您爲什麼鼓勵沒有密碼的SSH密鑰?如果GitHub存儲庫是公共的,那麼他甚至不需要一個。如果回購是私人的,那麼他需要它,但這不應該這麼輕率。如果可能的話,他應該使用關鍵代理。如果這太複雜了,那麼他可以使用專用的SSH密鑰,而不用爲此部署使用密碼,並且該密鑰絕不應該離開部署PC。 – janos

+0

@janos非常好的一點。我已經修改了答案,並在其中加入了你的觀點,以獲得更多的知名度。 – VonC

5

我知道這票是舊的,但對於那些誰找到這個不知何故,結賬dploy.io。這是一個託管服務,專門用於將您的repo從GitHub/Bitbucket部署到您的服務器。它支持SFTP/FTP/S3/Heroku/SSH命令等等。

聲明:我對dploy.io

2

的工作,你可能想看看這個PHP腳本:
https://github.com/JohannesHoppe/easy-git-deploy
(它做一個git克隆git的拉動,混帳推你)

幾年來,我用這個腳本管理我所有的wordpress安裝。

提示:如果您使用的是共享主機環境,那麼腳本限制可能會破壞首次執行。在這種情況下,通過SSH登錄並手動執行第一個克隆:

git clone 'https://user:[email protected]//github.com/user/repo.git' 

此處您還可以手動確認SSH密鑰指紋。

第二提示:您應該使用.htaccess/.htpasswd文件保護該目錄。