2012-06-21 55 views
0

所以,我創建了一個系統,管理所有在特定文件夾(新網站可以在此文件夾中創建)的drupal網站。製作萬維網數據推送到本地git回購

下一步是創建一種方法,允許用戶將網站恢復到以前的版本。

我的解決方案?創建一個本地的「git服務器」,併爲我的系統上採取的每一個行動(例如:更新/安裝模塊,升級核心等),我創建該網站的新版本。

我創建了一個「git」用戶,負責在/~/gitrepos/上創建存儲庫。並且對於每個新網站,我使用apache用戶(www-data)中的sudo -u git來運行mkdirgit init --bare。我目前能夠創建新文件夾並初始化這些文件夾。

但是當我嘗試將網站更改推送到這些存儲庫時,我得到「權限被拒絕」。

當檢測到一個新的網站,我做到以下幾點:[使用WWW的數據和sudo -u git]

  1. 創建存儲庫
    • mkdirgit init
  2. 初始化的git資料庫(.git文件夾)在網站目錄[使用www-data]
    • git init
  3. ,將文件添加到提交隊列[使用www數據]
    • git add *
  4. 提交的變化來填充新創建的存儲庫[使用www數據]
    • git commit -m 'msg'
  5. 添加的存儲庫的遠程地址[使用WWW的數據]
  6. 推變化[使用WWW的數據]
    • git push -u origin master

現在我卡在了th是一步,因爲我總是得到「權限被拒絕」。

我有什麼辦法可以將更改推送到本地「git服務器」而無需進行身份驗證?

或者,我應該創建哪些ssh密鑰來啓用www-data來將更改推送到本地「git服務器」?

我真的失去了這裏,如果有人有一個一步一步的方式來建立一個本地「混帳服務器」,其中www數據用戶可以推到,這將是巨大

注:主目錄www數據是/var/www/,所以它不是存儲在這個目錄中的SSH密鑰是一個好主意


是的,我已經花了至少4小時試圖弄清楚這在問這裏之前。

一些資源我試圖按照:


我之所以引用「混帳服務器」,是因爲沒有這樣的東西作爲一個git 服務器。從http://blogs.gurulabs.com/aaron/2008/11/setup-a-git-repository.html

報價:

換句話說,有沒有這樣的事,作爲一個「混帳服務器」和「混帳客戶端」。 Git是由文件系統開發人員在考慮文件系統屬性的情況下開發的。所以,相反,我們有一個遠程Git倉庫,我們稱之爲「origin」和一個本地Git倉庫(...)

回答

1

解決方法:

假設:

  • www-data主目錄是/var/www/
  • 那將處理所有的git命令的用戶是gituser

個步驟:

爲了使www-data用戶推送更改混帳回購協議,而無需輸入密碼,只要:

  • 創建爲www數據用戶
      新的SSH密鑰
    • www-data:~$ ssh-keygen -t rsa
    • enter對每一個問題(密碼留空)
  • 添加新創建的SSH密鑰到/home/gituser/.ssh/authorized_keys
    • gituser:~$ touch ~/.ssh/authorized_keys
    • gituser:~$ chmod 0600 ~/.ssh/authorized_keys
    • gituser:~$ cat /var/www/.ssh/id_rsa.pub >> /home/gituser/.ssh/authorized_keys

背後的想法是,是www-data的SSH密鑰來gituser'加s 「可信」密鑰。之後,www-data將能夠通過ssh連接到服務器,並以gituser進行身份驗證,而無需鍵入密碼。

請記住,git需要ssh訪問服務器(至少在我所在的環境中)。

這可能有所幫助:http://www.linuxproblem.org/art_9.html