Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nginx+django+uwsgi static files 403 Forbidden

Hi~ I'm deploying a website in CentOS 6.5. The framework is django1.7. I use nginx and uwsgi.

The website is now available except 403 Forbidden for all static files.

I have googled a few hours, and have changed the whole site folder as chmod 777. The owner of folder is kltc, and user in nginx.conf is also kltc.

I have no idea why the problem is still Permission denied.

nginx.conf

user  kltc;
worker_processes  1;

kuaileticao.miyayx.me

 server {
        # the port your site will be served on
        listen 80;
        # the domain name it will serve for
        server_name kuaileticao.miyayx.me; # substitute your machine's IP address or FQDN
        charset utf-8;
        access_log /srv/www/nginx/kuaileticao.miyayx.me/access.log;
        error_log /srv/www/nginx/kuaileticao.miyayx.me/error.log;

        location /static {
            autoindex  on;
            alias /home/kltc/Project/sunny_sports/sunny_sports/static; 
        }

        # Finally, send all non-media requests to the Django server.
        location / {
        uwsgi_pass 127.0.0.1:8001; 
        include uwsgi_params; # the uwsgi_params file you installed
        }
    }

uwsgi.ini

[uwsgi]
# the base directory (full path)
chdir=/home/kltc/Project/sunny_sports
# Django's wsgi file
module=sunny_sports.wsgi:application
master=true
# maximum number of worker processes
processes=10
# the socket (use the full path to be safe
socket=127.0.0.1:8001
chmod-socket=664
chown-socket=kltc:kltc
pidfile=/tmp/project-master.pid
# clear environment on exit
vacuum=true
max-requests=5000
daemonize=sunny_sports.uwsgi.log

error.log

[error] 34335#0: *73 open() "/home/kltc/Project/sunny_sports/sunny_sports/static/css/font-awesome.min.css" failed (13: Permission denied), client: 157.7.154.194, server: kuaileticao.miyayx.me, request: "GET /static/css/font-awesome.min.css HTTP/1.1", host: "kuaileticao.miyayx.me", referrer: "http://kuaileticao.miyayx.me/"
[kltc@localhost static]$ pwd
/home/kltc/Project/sunny_sports/sunny_sports/static
[kltc@localhost static]$ ls -l
total 32
4 drwxrwxrwx.  2 kltc kltc 4096 Feb 25 18:51 avatars
4 drwxrwxrwx.  7 kltc kltc 4096 Feb 25 18:51 css
4 drwxrwxrwx.  2 kltc kltc 4096 Feb 25 18:51 custom
4 drwxrwxrwx.  2 kltc kltc 4096 Feb 25 18:51 font
4 drwxrwxrwx.  2 kltc kltc 4096 Feb 25 18:51 fonts
4 drwxrwxrwx.  3 kltc kltc 4096 Feb 25 18:51 images
4 drwxrwxrwx.  2 kltc kltc 4096 Feb 25 18:51 img
4 drwxrwxrwx. 10 kltc kltc 4096 Feb 26 08:18 js

>

[kltc@localhost static]$ ps -aux | grep nginx
root     37444  0.0  0.0 110008  2048 ?        Ss   09:02   0:00 nginx: master process /usr/sbin/nginx
kltc     37445  0.0  0.0 112548  3700 ?        S    09:02   0:00 nginx: worker process

I have tried several methods. Such as, change the nginx.conf user to root. But none of them worked.

Hope for your help. Thank you!

like image 203
user2147650 Avatar asked Feb 26 '15 00:02

user2147650


2 Answers

Make sure that you chown parent directory of your project (/home) to be readable by the nginx worker.

chown -R kltc:kltc /home 
chmod -R ug+r /home
like image 152
supermario Avatar answered Sep 23 '22 02:09

supermario


Make sure that you have the STATIC_ROOT declared in your settings file.

Also, try running python manage.py collectstatic --noinputbefore running the server.

Hope that works!

like image 44
Animesh Sharma Avatar answered Sep 24 '22 02:09

Animesh Sharma