2010-09-13 52 views
1

我一直將http://toroid.org/ams/git-website-howto作爲運行在託管VPS上的生產Web服務器的起點。 VPS運行cPanel和WHM,並且最終將託管多個客戶端網站,每個客戶端網站都有自己的cPanel帳戶(因此每個客戶端都有自己的Linux用戶和從其站點提供服務的主目錄)。每個客戶的網站都是一個單獨的Git存儲庫。構建一箇中央Git遠程服務器來生產Apache站點

目前,我正在通過SSH將每個存儲庫推送到客戶端主文件夾中的裸回購,例如, /home/username/git/repository.git/。根據上面的教程,每個回購已被配置爲通過post-receive鉤子簽出到另一個目錄。在這種情況下,每個回購會檢查自己的/home/username/public_html(新cPanel帳戶的默認DocumentRoot),然後由Apache提供這些文件。雖然這個工作,它要求我設置(在我的本地開發環境)我的遙控器是這樣的:

url = ssh://[email protected]/home/username/git/repository.git/ 

這也要求我輸入用戶的密碼,每次我推到它的時候,它是不太理想。

爲了將我的所有存儲庫集中到一個文件夾中,我還嘗試以root身份推送到/root/git/repository.git,然後從那裏檢出適當的主目錄。然而,這會導致所有已簽出的文件,以root用戶,從而防止阿帕奇從服務的網站,用這樣的錯誤

[error] [client xx.xx.xx.xx] SoftException in Application.cpp:357: UID of script "/home/username/public_html/index.php" is smaller than min_uid 

(這是一個文件的所有權/權限問題,據我可以擁有告訴)

我可以解決問題與chown和chgrp命令在每個回購的後接收掛鉤 - 但是,這也引發了我腦海中的「不太正確」的標誌。我也考慮過gitosis(將我的所有回購集中在/home/git/中),但我認爲我會遇到相同的文件所有權問題,因爲簽出的文件將歸git用戶所有。

我剛剛以錯誤的方式接近整個事情嗎?我覺得我完全錯過了解決整體問題的第三個更優雅的解決方案。還是應該堅持我上面介紹的方法之一?

回答

1

這也要求我輸入用戶的密碼,每次我推到它的時候,它是不太理想

,如果你發佈你的公共SSH密鑰的destintion帳戶應該沒有必要「.ssh/authorized_keys」文件。例如

另請參閱locking down ssh authorized keys
但也是官方參考Pro Git Book "Setting Up the Server"

+0

謝謝!這一定會有所幫助。但是,我原來的問題仍然存在一個問題:我應該將我的存儲庫集中在服務器上的一個位置嗎?或者是否有意義爲每個單獨的存儲庫登錄到單獨的帳戶? – peterjmag 2010-09-15 00:23:41

+0

@peterjmag:如果您採用gitolite之類的策略,則只需將每個用戶的SSH公鑰發佈到管理Git倉庫的一箇中央帳戶。有關更多詳細信息,請參閱Gitolite文檔:http://github.com/sitaramc/gitolite/blob/pu/doc/2-admin.mkd#_adding_users_and_repos – VonC 2010-09-15 06:01:08