2015-05-12 2 views
0

Недавно я использовал команду django runserver, чтобы запустить мой сервер, когда я его разрабатывал, и я получил его, чтобы служить статическим файлам хорошо и хорошо, когда я это делал. Я решил, что хочу использовать Gunicorn и Nginx вместо команды runserver. Итак, я отредактировал мой /etc/nginx/sites-available/mysite файл выглядеть следующим образом:Таблицы стилей и изображения не подаются, но другие статические файлы:

server { 
    listen 80; 
    server_name xxx.xxx.xxx.133; 

    access_log off; 

    location /static/ { 
     alias /opt/myenv/pysauce/static; 
    } 

    location/{ 
      proxy_pass http://127.0.0.1:8000; 
      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_URL в mysite/settings.py к тому же является в location /static/ в моем файле Nginx sites-available. Затем я начал стрельбу с gunicorn mysite.wsgi:application, и я смог зайти на сайт. Я знаю, что Gunicorn не может обслуживать статические файлы, но я знаю, что Nginx может.

Когда я пошел на свой сайт, действительно странная часть заключалась в том, что моя таблица стилей не была подана, но пользовательские шрифты, которые также находятся в статическом каталоге со списком стилей, были. Я смог подтвердить это, введя в свою адресную строку /static/css/foundation.css, и это привело к ошибке 404. Однако, когда я ввел адрес, /static/fonts/UbuntuMono-B.ttf, он запросил загрузку. Почему не используются таблицы стилей, но есть и другие статические файлы?

+0

В каком порту вы запустили пулемётчик и на каком порту вы попытались открыть проект в браузере? –

ответ

1

Первое, что я рекомендую вам сделать, это сохранить файл журнала. Поместите следующие строки в конфигурационный файл:

access_log /dir/to/your/access.log 
error_log /dir/to/your/error.log 

Затем откройте свой журнал, чтобы узнать, почему nginx не может получить доступ к этому файлу. Если вы видите

[Errno 13] Permission denied 

Тогда это проблема разрешения, используйте следующую команду для предоставления права доступа:

chmod -R a+x static 
+0

По какой-то причине у меня никогда не было отказано в разрешении, как вы сказали, но, тем не менее, я установил файлы журнала в своем домашнем каталоге. Как только я это сделал, все мои статические файлы были поданы. Кроме того, мой файл error.log полностью пуст. –

+1

@DorianDore, поэтому все работает после добавления файлов журнала? это странно, но рад помочь :) – Cheng

+1

На самом деле, моя проблема была в определении location/static /. Я установил его в 'alias/opt/myenv/pysauce/static', когда правильной настройкой будет' root/opt/myenv/pysauce'. –

1

использование вашего браузера/статический/css/Может ли он работать? Если не удается получить доступ, проверьте разрешение на доступ к серверной папке.

2

Там должен быть проблема с разрешениями статических файлов. попробуйте эти две команды

sudo chmod -R 777 /opt/myenv/pysauce/static 

sudo chown -R 777 /opt/myenv/pysauce/static 

Таким образом вы дадите пользователям доступ к вашим статическим файлам через свои браузеры.

Смежные вопросы