2010-06-29 25 views
3

我是一個狂熱的git用戶;我在開發中使用git;在舞臺上,但不在生產中。在web根目錄下使用git生產

有沒有什麼好理由不在生產環境下的web根目錄(/ var/www /)下使用git?我一直在考慮使用主分支作爲生產分支,或者創建一個生產分支。

推動生產主聽起來很不錯...

回答

4

這麼好......可是錯不知何故。

在生產環境中,你需要去關注:

  • 訪問安全(你怎麼複製/部署交付)
  • 停止你的應用程序
  • 部署一個新版本的正確的過程
  • 開始正確的過程(以正確的順序)
  • 監測
  • 報告

版本控制不是該圖片的一部分:您可能希望在生產環境中安裝任何額外的工具是一個額外的潛在故障點(並且需要自己的管理和監視)。
除非它與您正在部署的應用程序(「直接鏈接」,因爲「您的應用程序無法在沒有額外工具的情況下工作」)的直接鏈接,它不應該在生產平臺上。

從您的主分支中創建一個git archive作爲一個很好的tar歸檔文件,其中包含一個「version.txt」用於標識歸檔已完成的repo/SHA1,然後將sftp/srsynch發送到生產平臺。
從那裏,沒有更多的Git需要。

2

除了明顯的審美原因外,當您在/ var/www中有一個存儲庫時,權限往往會成爲問題。

在我的生產服務器上,我在分支production的私有目錄中有一個裸倉庫,在/ var/www中有一個分離的工作樹(請參閱core.worktree設置)。另外,我有一個post-receive hook來運行git checkout -f,所以我只需從我的本地計算機上執行即可將其推送到production分支,其餘部分會自動處理。

2

如果你想在生產中使用git,你需要確保.git不能通過web服務器訪問。您可以通過將.git放在Web根目錄之外並設置GIT_DIR環境變量,或者相應地配置您的Web服務器來完成此操作。在Apache

一種可能是以下重寫規則:

RewriteRule ^(.*/)?\.git/ - [F,L] 
+0

重寫引擎往往是緩慢的,怎麼樣: <目錄/ websrv/* /混帳> 訂單拒絕,允許 全部拒絕 – Marcin 2010-06-30 12:28:58

相關問題