2011-08-15 142 views
9

兩週以來,我一直試圖在我們的辦公室實施Git。而不是缺乏文檔,它是大量的例子,教程和git的各種用法,使我對Web開發的推薦設置感到困惑。Git:網頁開發的推薦設置

我想我有一個體面的設置,但在深入另一個結構之前,我想檢查一下更有經驗的人。我已經記住以下幾點:

  • 工作站推到本地臨時服務器(A)
  • 局部分期服務器gitolite工作正常分裂作用
  • 鉤自動將任何改變臨時服務器上在生產服務器(B)

這被形象下面: enter image description here

這是否有道理?我們有各種小型PHP網站,沒有什麼非常複雜的。我有的疑問是:

  • 我應該使用什麼樣的「鉤子」(B)?
  • 我是否也應該在生產服務器上運行gitolite?我覺得我不應該這樣做,因爲畢竟它只是一個用戶將事情上傳到服務器(登臺服務器上的鉤子),但我不確定。
  • 我的出發點是:我們擁有生產服務器上的所有網站,但尚未位於登臺服務器和工作站上。在初始設置時,將它們「拉」到舞臺和工作站的便利方式是什麼?

現在,以下幾個問題是一些額外想法不是最大的,此刻很重要,但如果你碰巧知道更多分享您的想法:

  • 爲了簡單起見,我寧願能從工作站運行git push,並更新登臺服務器和生產服務器。但有時候,只有更新登臺服務器並在上線之前先檢查那些東西纔有用。有一個簡單的解決方案嗎?

  • 實際上,我們不僅有一個但有幾個不同的生產服務器。但只有一臺登臺服務器。有沒有辦法配置不同的生產服務器,以便git自動將它們推送到正確的服務器?

在此先感謝您分享您的想法!

+0

推送到生產服務器的標準是什麼?掛鉤是否檢查特定的提交消息? –

回答

3
  • 什麼樣的「鉤」我應該使用(B)的?

您應該使用post-receive or post-update hooks

  • 我應該也運行在生產服務器上gitolite?我覺得我不應該這樣做,因爲畢竟它只是一個用戶將事情上傳到服務器(登臺服務器上的鉤子),但我不確定。

不會強制對您所提到的原因,但由於gitolite是非常簡單的設置也不會傷

  • 我的出發點是:我們對所有網站生產服務器,但尚未位於登臺服務器和工作站上。在初始設置時,將它們「拉」到舞臺和工作站的便利方式是什麼?

對於他們每個人,你可以簡單地執行這些命令

cd /path/of/project 
git init 
# optionally create and edit your .gitignore file before the next step 
git add . 
git commit 

,然後從你的臨時服務器運行git clone命令。

  • 爲了簡單起見,我更喜歡能夠從工作站運行git推,並且都將登臺服務器和生產服務器更新。但有時候,只有更新登臺服務器並在上線之前先檢查那些東西纔有用。有一個簡單的解決方案嗎?

我看不到這個任務簡單的解決辦法,但我不喜歡與自動化生產部署解決方案時,事情就可以走壞,你會打破你的生產現場,所以我更喜歡citizen conn多遠程解決方案。您可以使用gitolite和權限處理來更好地管理事情。每個人都可以推送登臺服務器,但有限的一羣人可以推送到生產服務器。

  • 實際上,我們不僅有一個但有幾個不同的生產服務器。但只有一臺登臺服務器。有沒有辦法配置不同的生產服務器,以便git自動將它們推送到正確的服務器?

你可以存儲你的生產服務器地址在項目的一些文本文件,然後使用該文件的內容在你的混帳掛鉤。

+0

謝謝,聽起來都很不錯!我會試試這個! – user852091

3

您不想在生產Web服務器上運行git服務器。你真的不希望你的生產服務器上的git倉庫文件。我個人喜歡將事情簡單化,不要將我的部署過程與我的SCM過程混淆在一起。

所以我想我不會回答你關於git的問題,但我不使用git我所有的Web項目,這裏是我使用部署的安裝類型:

我通常使用git只爲SCM,並使用內部服務器託管存儲庫(這可能與登臺服務器相同)。

對於部署,我通常使用rake腳本,因爲我喜歡ruby。但是一個bash腳本也可以。 bash的版本是這樣的:被授權發佈到服務器

# deploy_staging.sh 
rsync -va --delete --exclude-from excludes.txt ./ stagingserver:/htdocs/www.mysite.com/ 

# deploy_prod.sh 
rsync -va --delete --exclude-from excludes.txt ./ realserver:/htdocs/www.mysite.com/ 

# deploy_all.sh 
bash deploy_staging.sh || exit $? 
bash deploy_prod.sh 

# excludes.txt 
.git 
deploy_*.sh 
excludes.txt 

開發商紛紛加入到對服務器的機器相應的帳戶的SSH密鑰。

不錯,簡單,易於複製,不會搞亂設置掛鉤,一切都很好地包含在存儲庫中,您可以清楚地控制部署的內容,並且可以檢查它並從任何地方運行部署有正確的網絡訪問權限。

+1

只要你的根目錄沒有上傳到網絡,你就可以擁有.git。 – Kzqai

+0

我會嘗試在分段和生產環境中使用git服務器進行設置,但如果這變得太困難,我認爲您的解決方案將成爲我的退出路線。謝謝。 – user852091

+0

是的,我可能是一個不尋常的案例,因爲我有很多很多的小項目,而不僅僅是一些大項目,所以隨着時間的推移,我開始喜歡在幾分鐘內從頭開始複製的方法。祝你好運服務器設置! – avh

3

我有一個類似的設置,我更喜歡使用多個遙控器。因此,我不會使用掛鉤,而是將「prod」添加爲遠程,並將「uat」添加爲遠程。這樣,如果我要推到生產,我可以這樣做:

git push prod 
git push uat 
+0

我也是這樣做的 – thinkdevcode

+0

我只是拉到我的作品,但它也是它自己的存儲庫是有用的。這是因爲在生產回購時,非基底推動有時很難處理。 – Kzqai

+0

@citizen conn:有道理,謝謝。但有一個問題:你不得不承認你必須承諾加倍 - 無論是爲了生產還是生產?如果你在推動之前做了很多小的提交,它會變得有些b,,或者不是? – user852091