2013-02-02 85 views
3

git推送導致500服務器錯誤的問題。根據服務器錯誤顯示爲文件權限問題。每次我從本地機器執行git push時,文件的所有權都會發生更改。Git推送更改文件所有權導致500服務器錯誤

爲了把事情再次合作,我一定要進入的public_html文件夾和chown potter.potter * -R

可能有人幫助我在這裏?我已經展示了下面我如何設定的事情了......

我已成立了一個名爲potter.git我的網站的開發服務器上的/ home /用戶名之內/庫gitrepos

ssh [email protected] 

git config --global user.email "[email protected]" 
git config --global user.name "harry" 

內/家用/波特/ gitrepos

mkdir potter.git 
cd potter.git 
git init --bare 

設置掛鉤,允許部署

cd hooks 
pico post-receive 

確認E d以下成後收到鉤,以便部署

#!/bin/bash 
# 
docroot="/home/potter/public_html" 
while read oldrev newrev ref 
do 
branch=`echo $ref | cut -d/ -f3` 

if [ "master" == "$branch" ]; then 
git --work-tree=$docroot checkout -f $branch 
fi 

done 

發後接收可執行

chmod 755 post-receive 

集.bash矚目的工作目錄

# GIT 
export GIT_DIR=/home/potter/potter.git 
export GIT_WORK_TREE=~/public_html 

現在我的本地機器上,我建立遠程連接如下:

git remote add website ssh://[email protected]/home/potter/potter.git 

和推動,我這樣做:

git push website master 

回答

0

文件所有者是一個誰做結帳,所以這將是你連接到用戶。而且,由於您連接到root用戶,所有文件都由root用戶擁有。

首先我不會使用root作爲git用戶。我會爲該任務創建一個新用戶。

其次,我將禁用通過ssh進行root登錄。如果你想扮演上帝,請使用susudo。第三,如果您希望以不同的用戶身份運行腳本(例如結帳腳本),您可以在本地主機上使用正確用戶的SSH連接([email protected]),並使用公鑰驗證登錄,而不需要密碼。您可以指定一個在登錄後應該立即執行ssh的命令。因此,在你的homedir的某個地方,你可以創建一個腳本,改變到正確的目錄並運行git checkout。

+0

感謝您的意見。我創建了一個新用戶'git',並將gitrepos文件夾的名稱改爲'git'而不是root。現在...當我使用'git @ potter .....'進行混帳推送時,我不會再有500個服務器錯誤嗎? – Gravy

+0

當您按照我的第三條建議進行操作時,由於權限不正確,您不應該再有內部服務器錯誤(500)。 – Arjan