2015-02-26 3 views
3

Привет ~ Я развертываю веб-сайт в CentOS 6.5. Основой является django1.7. Я использую nginx и uwsgi.nginx + django + uwsgi static files 403 Forbidden

Веб-сайт теперь доступен, кроме 403 Запрещено для всех статических файлов.

У меня есть googled несколько часов, и я изменил всю папку сайта как chmod 777. Владельцем папки является kltc, а пользователь в nginx.conf также является kltc.

Я понятия не имею, почему проблема все еще разрешена.

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/" 
[[email protected] static]$ pwd 
/home/kltc/Project/sunny_sports/sunny_sports/static 
[[email protected] 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 

>

[[email protected] 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 

Я попробовал несколько методов. Например, измените пользователя nginx.conf на root. Но никто из них не работал.

Надеюсь на вашу помощь. Спасибо!

+1

Что вы получите на 'error.log'? Кроме того, это может помочь, если родительский каталог chow должен читаться рабочим nginx. – supermario

+0

error.log имеет много строк: '2015/02/26 09:02:49 [ошибка] 37445 # 0: * 11 open()"/home/kltc/Project/sunny_sports/sunny_sports/static/js/jquery .hotkeys.min.js "failed (13: Permission denied), client: 101.20.9.33, server: kuaileticao.miyayx.me, request:" GET /static/js/jquery.hotkeys.min.js HTTP/1.1 ", host: "kuaileticao.miyayx.me", referrer: "http://kuaileticao.miyayx.me/" ' – user2147650

+0

Я решил проблему после принятия совета от @supermario. Это потому, что разрешение/home dir. Большое спасибо! – user2147650

ответ

4

Убедитесь, что родительский каталог вашего проекта (/ home) читается рабочим nginx.

chown -R kltc:kltc /home 
chmod -R ug+r /home 
+0

Спасибо. Это решило мою проблему – user2147650

+0

Рад помочь! Поэтому, пожалуйста, подумайте о принятии ответа. – supermario

+0

Решил также мою проблему, в основном все родительские директории должны быть доступны для чтения назначенным пользователем nginx. – spedy

1

Убедитесь, что STATIC_ROOT указан в файле настроек.

Кроме того, попробуйте запустить python manage.py collectstatic --noinput перед запуском сервера.

Надеюсь, что работает!