3

私は次の設定をしています:

2 人のユーザー: example と git

内部/home/git/repositories/project.git/hooks/post-receiveにはチェックアウトがあります/home/example/public_html/dev

したがって、すべての git プッシュで、プロジェクト ファイルはhttp://dev.example.comに公開されます。

問題は、チェックアウトが git ユーザーから実行されるため、dev ディレクトリ内のすべてのファイルが git:git によって所有され、パーミッションが 600 であることです。

そのため、 http://dev.example.comにアクセスしてもページは表示されません。ユーザーapacheにはアクセスできないためです。

post-receive フック内で chown を実行することを提案した人がいます。さて、ユーザー git は sudo である必要があります。そこで、ユーザー git を sudoer として追加しました。次の問題は「すみません、sudo を実行するには tty が必要です」だったので、#Default requiretty をコメントアウトしましたが、次の問題に遭遇しました。

ユーザー git を sudoer にすることは私が望んでいたことではない (安全ではない) ため、すべてを通常の状態に戻しました。

他に試すより安全なオプションはありますか?

おそらく、受信後フックが dev フォルダー内の php ファイルをトリガーすると、この php ファイルがチェックアウトを実行しますか?

または、dev フォルダーを /home/git 内のフォルダーにシンボリック リンクして、apache kan がブラウザーに表示するようにできますか?

4

2 に答える 2

-2

常に裸のリポジトリにプッシュする必要があるため、許可の問題はありません。

DocumentRoot に「ssh (公開鍵)」して git pull を実行する更新後のフックを作成できます。そうすれば、プッシュはウェブサーバーですぐに利用できます。

この手法は機能しますが、DocumentRoot に即座にプルするのは良い考えではないかもしれませんが、Web サーバーのキャッシュを予測できない間隔で更新する必要がないように、cron で行うことをお勧めします。

于 2013-07-20T01:28:32.957 に答える