本番Webサーバーでファイルを自動的に更新するように "git Push Remote Master"を設定する方法は?

本番Webサーバーでファイルを自動的に更新するように "git Push Remote Master"を設定する方法は?

私のウェブサイトは、Gunicorn / nginxがインストールされているリモートサーバーで実行されています。 nginxは/var/wwwディレクトリで実行され、所有者はroot:www-dataです。

drwxrwxr-x  5 root      www-data  4096 Apr  8 17:32 www

また、以下のように/var/gitrepoにデフォルトのgitリポジトリがあります。

drwxrwxr-x  7 django django 4096 Apr  8 23:20 gitrepo

djangoユーザーはsudoグループのメンバーですが、www-dataグループではありません。サーバーの他のユーザーにはログインシェルはありません。

次に、以下のように/var/gitrepo/hooks/post-receiveにポスト受信gitフックがあります。

#!/bin/sh
git --work-tree=/var/www --git-dir=/var/gitrepo checkout -f

アイデアは、git push ssh://django@<site_IP>:/var/gitrepo master私のラップトップで実行すると、リポジトリがgitrepoディレクトリにプッシュされ、次に/ var / wwwが受信後にフックを介して更新されたファイルを受信することです。

上記のpost-receiveフックは、djangoユーザーに/ var / wwwディレクトリにターゲットディレクトリを作成する権限がないため、自然に失敗します。私が考えることができる1つの解決策は、djangoユーザーを:www-dataグループに追加することです。これはセキュリティにどのような影響を与えますか?また、djangoを/varおよび/var/wwwの所有者として設定することもできます。しかし、これはdjangoユーザーにはあまりにも多くの権限である可能性があります。

編集:djangoユーザーをwww-dataグループに追加すると、新しいgit repoファイルが/ var / wwwディレクトリに正しくコピーされ、Webサイトが正しく機能します。これがセキュリティ問題を引き起こすかどうかはわかりません。

どうすればいいですか?ありがとう

関連情報