おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

nginx+Django+uwsgiでホームページを作成する。(Permission denied)

タイトル通り、django+nginx+uwsgiを使ってホームページを作成します。この構成は、HTTPサーバーとしてnginxを使用し、pythonのDjnagoをWebフレームワークとして、その中継をuwsgiで行うといった流れになります。最終的にSeLinuxの設定が必要となり、なかなか気付く事が出来なかったので、記事に残しておきます。Selinuxの最後の設定のみ記事にしておきます。

Djnagoも正常に動いている。nginxも問題ないのにhttpでアクセスすると、どうもdjangoが動いていないように見える。そのときに/var/log/nginx/error.logを確認すると、

2015/08/11 14:17:46 [crit] 3273#0: *9 connect() to 127.0.0.1:8889 failed (13: Permission denied) while connecting to upstream, client:

のようなエラーが出ています。これはuwsgiとnginxがポート8889でのパケットの受け渡しにおいて、エラーが出ているようです。これは、SeLinuxが働いているために受け渡しができない状態のようです。回避方法として、

sudo yum install policycoreutils-devel
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
semodule -i mynginx.pp

参考URL
SELinux policy for nginx and GitLab unix socket in Fedora 19
django - (13: Permission denied) while connecting to upstream:[nginx] - Stack Overflow