4

500サーバーエラーを引き起こすgitpushの問題。サーバーエラーによると、ファイルパーミッションの問題のようです。ファイルの所有権は、ローカルマシンからgitpushを実行するたびに変更されます。

作業を再開するには、public_htmlフォルダーに移動してchown potter.potter * -R

誰かがここで私を助けることができますか?私は物事をどのように設定したかを以下に示しました...

/ home / username/gitrepos内の自分のWebサイトの開発サーバーにpotter.gitというリポジトリを設定しました

ssh root@potter.com

git config --global user.email "harry@potter.com"  
git config --global user.name "harry"  

/ home / potter/gitrepos内

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

展開を可能にするフックを設定する

cd hooks  
pico post-receive 

展開を可能にするために、受信後のフックに次のように入力しました

#!/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-profileに作業ディレクトリを設定します

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

これで、ローカルマシンで、リモート接続を次のように設定しました。

git remote add website ssh://root@potter.com/home/potter/potter.git 

そしてプッシュするために、私は次のことをします:

git push website master
4

2 に答える 2

0

ファイルの所有者はチェックアウトを行う人なので、接続先のユーザーになります。また、ルートに接続するため、すべてのファイルはルートによって所有されます。

まず、root を git ユーザーとして使用しません。そのタスク専用の新しいユーザーを作成します。

次に、ssh 経由の root ログインを無効にします。神を演じたい場合はsuorを使用してください。sudo

第 3 に、別のユーザーとしてスクリプトを実行する場合 (チェックアウト スクリプトなど)、localhost で正しいユーザーへの ssh 接続を使用し ( potter@localhost)、公開鍵認証を使用してパスワードなしでログインできます。ログイン直後に ssh が実行するコマンドを指定できます。したがって、ホームディレクトリのどこかに、正しいディレクトリに変更して git checkout を実行するスクリプトを作成できます。

于 2013-02-02T23:05:20.850 に答える