我正在嘗試爲使用PHP構建的組大學項目設置git開發工作流程。同步大學組項目從GitHub回購更改到個人服務器
在過去一週中,我一直在幫助團隊中的每個成員配置他們的機器,以便我們能夠將代碼協作到主存儲庫。每個開發人員現在能夠成功同步他們的機器並託管在GitHub上的遠程存儲庫之間的代碼,無論他們使用何種操作系統:
設置我們的工作流程的下一個部分是讓一個Apache服務器來從GitHub存儲庫中提取我們的更改。這是所以大家(甚至在球隊的非編碼器)可以看到直播時間的變化,並測試我們的系統:
我發現了GitHub上提供了一個很酷的功能叫做git hooks。這應該很容易讓我們將這樣的功能集成到我們的工作流程中。我繼續在服務器上安裝git,使用GitHub設置SSH密鑰並創建一個新的鉤子。
我加入這個PHP代碼到文件鉤電話:
<?php
$output = shell_exec('git pull origin master 2>&1');
echo "<pre>$output</pre>";
?>
現在,如果我把從SSH終端會話此代碼php git_pull_post_hook.php
,任何在開發中的最新變化(團隊)將成功同步。但是,無論何時GitHub鉤子或其他人通過HTTP訪問php文件,都不會發生任何事情。
經過數小時的谷歌搜索,每個問題都會導致另一個問題。我已經改變了文件所有者的權限,其他線程建議,但現在這是我從腳本輸出得到(通過HTTP)錯誤:
Could not create directory '/var/www/.ssh'.
Host key verification failed.
fatal: The remote end hung up unexpectedly
我猜www-data
沒有足夠的權限在我們的服務器的根文件夾中訪問SSH密鑰,所以這就是導致所有這些錯誤的原因......但是/var/www/.ssh
目錄確實存在於服務器上,所以我不明白這裏出了什麼問題。
可悲的是,組中沒有人知道這類事情的任何內容,也沒有任何好的指導來設置它。任何幫助/指針將不勝感激!
更新:
是VonC發佈的指南似乎是什麼,我們需要做一個合適的解決方案。我試圖刪除文件夾的.ssh,準確地跟隨每一個步驟,因爲它是指南中說,但現在我們得到以下錯誤,說明有權限錯誤:
No directory, logging in with HOME=/
[email protected]:~# mkdir /var/www/.ssh
[email protected]:~# chmod 0700 /var/www/.ssh
[email protected]:~# chown -R www-data:www-data /var/www/.ssh
[email protected]:~# su - www-data -c "ssh-keygen -t rsa"
No directory, logging in with HOME=/
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/.ssh/id_rsa):
Could not stat /var/www/.ssh: Permission denied
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
open /var/www/.ssh/id_rsa failed: Permission denied.
Saving the key failed: /var/www/.ssh/id_rsa.
[email protected]:~# chmod 0600 /var/www/.ssh/id_rsa
chmod: cannot access `/var/www/.ssh/id_rsa': No such file or directory
[email protected]:~# chmod 0600 /var/www/.ssh/id_rsa.pub
chmod: cannot access `/var/www/.ssh/id_rsa.pub': No such file or directory
嗨VonC一個簡單的版本,感謝您的回答。本指南確實對我們有所幫助。但是,在執行指南中的命令時,我們仍然面臨許可錯誤。我已經用更多的信息更新了我的問題。如果您能夠進一步提供幫助,我們將不勝感激,因爲您確實知道自己的東西。謝謝。 –