djangoでのstaticファイルが読み込まれない闇
こんにちわ。
最近はpythonでdjangoしています。
今回自分のローカル環境でdjangoプロジェクトを開発してサーバに上げたらstaticファイルが読み込まれず、cssが適用されない、という自体に陥りました。
サーバの環境はnginx+gunicornになります。
環境の詳しい説明はggrばたくさん出てくると思いますのでここでは割愛。
そこで今回の問題。
設定ファイルは以下の通り
nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
default.conf
server {
server_name www.zanryu-derby.com;
access_log off;
location /static {
alias /home/naoya/Projects/Zanryu_Derby/static;
#root /static;
}
location / {
proxy_pass http://127.0.0.1:9001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
ちゃんとSTATIC_ROOTに変えたしnginxの設定のstaitc_rootもちゃんと設定したのに読み込まれない…
ログを見てみると
2014/12/05 03:35:32 [error] 25727#0: *10 open() "/home/naoya/Projects/Zanryu_Derby/static/css/reset.min.css" failed (13: Permission denied), client: 133.20.55.189, server: www.zanryu-derby.com, request: "GET /static/css/reset.min.css HTTP/1.1", host: "133.20.55.164"
2014/12/05 03:35:32 [error] 25727#0: *14 open() "/home/naoya/Projects/Zanryu_Derby/static/css/bootstrap.css" failed (13: Permission denied), client: 133.20.55.189, server: www.zanryu-derby.com, request: "GET /static/css/bootstrap.css HTTP/1.1", host: "133.20.55.164"
2014/12/05 03:35:32 [error] 25727#0: *15 open() "/home/naoya/Projects/Zanryu_Derby/static/css/main.css" failed (13: Permission denied), client: 133.20.55.189, server: www.zanryu-derby.com, request: "GET /static/css/main.css HTTP/1.1", host: "133.20.55.164"
アクセス権限がない?と言われている。
ここでググってみて権限を与えたり、所有者をnginxにしたりと、ひと通りの方法を試したがダメだった…
そしてnginx.confの "user nginx" の部分をもともとのファイルの所有者である "user naoya" に変えたところcssが読み込まれた!!!
無事解決できたのだがなぜ "user nginx" に変えた時はダメだったのだろうか…
まぁ解決できて良かった良かった。
すごい雑だが一応メモということで。