簡體   English   中英

使www-data推送到本地git repo

[英]Making www-data push to local git repo

因此,我正在創建一個系統,該系統管理位於特定文件夾中的所有drupal網站(可以在此文件夾中創建新網站)。

下一步是創建一種方法,允許用戶將網站還原為以前的版本。

我的解決方案? 創建一個本地“ git服務器”,並針對我的系統上執行的每個操作(例如:更新/安裝模塊,升級核心等),創建該站點的新版本。

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

但是,當我嘗試將網站更改推送到那些存儲庫時,出現“權限被拒絕”。

當檢測到新站點時,我將執行以下操作:

  1. 創建存儲庫[使用www-data和sudo -u git ]
    • mkdirgit init
  2. 初始化網站目錄上的git倉庫(.git文件夾)[使用www-data]
    • git init
  3. 將文件添加到提交隊列中(使用www-data)
    • git add *
  4. 提交更改以填充新創建的存儲庫(使用www-data)
    • git commit -m 'msg'
  5. 添加存儲庫的遠程地址(使用www-data)
    • git remote add origin ssh://git@localhost/path/to/repo/
  6. 推送更改(使用www-data)
    • git push -u origin master

現在,我一直處於此步驟,因為我總是收到“權限被拒絕”。

有什么方法可以將更改推送到本地“ git服務器”而無需進行身份驗證?

或者,我應該創建哪些ssh鍵來使www-data將更改推送到本地“ git服務器”?

如果有人可以通過逐步的方式來設置本地“ git服務器”(www數據用戶可以將其推送到其中)的話,那我真是迷失了, 那就太好了

注意:www-data的主目錄是/var/www/ ,因此在此目錄中存儲ssh-keys不是一個好主意


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

我嘗試遵循的一些資源:


我引用“ git server”的原因是因為沒有git server這樣的東西。

引用http://blogs.gurulabs.com/aaron/2008/11/setup-a-git-repository.html的內容

換句話說,沒有“ git服務器”和“ git客戶端”之類的東西。 Git由文件系統開發人員在開發時考慮到文件系統屬性。 因此,相反,我們有一個稱為“來源”的遠程Git存儲庫和一個本地Git存儲庫(...)

解:

假設:

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

腳步:

要使www-data用戶無需輸入密碼即可將更改推送到git repo,只需:

  • 為www-data用戶創建一個新的ssh-key
    • www-data:~$ ssh-keygen -t rsa
    • 對每個問題按enter鍵(將密碼保留為空白)
  • 將新創建的ssh-key添加到/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-key添加到gituser的“可信”鍵中。 之后, www-data將能夠通過ssh連接到服務器並以gituser身份驗證,而無需鍵入密碼。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM