コンテキスト: Web サイトのロジックと CSS foo が含まれる特定のリポジトリ用の gitolite3 フックを作成しています。
つまり、本質的に何が起こるかというと
下のコンテンツは/var/www/nginx/
次のようになります:
drwxrwxr-x. nginx git system_u:object_r:httpd_sys_content_t:s0 foo
.git
特別です:
drwxrwxr-x. git git system_u:object_r:httpd_sys_content_t:s0 .git
すべてのサブディレクトリに適切なアクセス権があることを確認するために、次を使用しました。
chown nginx:git -Rf ./webfoo
chmod g+rw -Rf ./webfoo
chown git:git -Rf ./webfoo/.git
[これは単なるボーナスなので、スキップできます。]
gitolite3フック
#!/bin/bash
cd /var/www/nginx/webfoo || exit
unset GIT_DIR
echo "where: $(pwd)"
git pull -f origin deploy-me-branch
remote: where: /var/www/nginx/webfoo
remote: From /home/gitolite/repositories/webfoo
remote: c092ee2..07274a6 master -> origin/master
remote: error: unable to unlink old '.gitignore' (Permission denied)
remote: error: unable to unlink old 'templates/fancypost.html' (Permission denied)
remote: error: unable to unlink old 'templates/layout.html' (Permission denied)
/var/log/audit/audit.log
アクセス拒否は含まれていません。
アップデート:ローカルログインもgit
機能しません。これはおそらくSELinux/ファイルセキュリティコンテキストとは無関係。
なぜ期待通りに動作しないのでしょうか?
答え1
うまくいかなかった理由はいくつかあります。
- ユーザー
git
メンバーになるべきグループgit
- 別のユーザーとしてプル/リベースしないでください。
.git/*
所有権が変更される可能性があります。特に、root
より洗練された解決策は、 を使用し、(ユーザー として)monit
下のリポジトリを監視して、実行可能な Web アプリケーション/ファイルが変更された場合に とを再起動できるようにすることです。git
~/repositories
nginx
uwsgi