我一直將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用戶所有。
我剛剛以錯誤的方式接近整個事情嗎?我覺得我完全錯過了解決整體問題的第三個更優雅的解決方案。還是應該堅持我上面介紹的方法之一?
謝謝!這一定會有所幫助。但是,我原來的問題仍然存在一個問題:我應該將我的存儲庫集中在服務器上的一個位置嗎?或者是否有意義爲每個單獨的存儲庫登錄到單獨的帳戶? – peterjmag 2010-09-15 00:23:41
@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