2011-07-13 4 views
1

Я немного ржавый, когда речь заходит о новом способе статического файла, который работает с django 1.3, однако я уверен, что это не может быть django, который виноват здесь.Обслуживание статических файлов из nginx с django + fastcgi debian

Я пытаюсь запустить приложение django с nginx + fastcgi на сервере облаков с установленным debian. На данный момент у нас есть только один сервер (пока мы разрабатываем) и будем искать несколько серверов с балансировщиком нагрузки, чтобы сделать это немного проще, но у меня возникли проблемы с тем, чтобы заставить nginx обслуживать статические файлы.

Я следовал различные обучающие программы для создания nginx.conf обслуживать файлы

server { 
    listen 80; 
    server_name 127.0.0.1; 

    location /static { 
     autoindex on; 
     root /static; 
    } 
} 

выше выдержка из nginx.conf. Теперь, независимо от того, для чего я установил root, nginx выбрасывает ошибку 404, не найденную при попытке доступа к http://127.0.0.1/static/.

Структура файла выглядит следующим образом:

/home/user/site/project 
/home/user/site/static 
/home/user/site/templates 

Джанго settings.py имеет следующие настройки, как STATIC_ROOT и STATIC_URL

STATIC_ROOT = "/home/user/site/static/" 
STATIC_URL = "http://127.0.0.1/static/" 

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

ответ

1

Резолюция найдена, исходя из ответа Джима выше.

root /static 

теперь изменено на:

root /home/user/site/static 

Однако затем проверять журналы, кажется, что путь Nginx пытается найти в http://127.0.0.1/static был/Главная/пользователь/сайт/статический/статический/который очевидно, неверно.

Я не уверен, что это правильный метод, но теперь я указываю все статические файлы в root (удаление необходимости/статические в URL-адресе, поэтому для/static/images теперь я просто указываю на http://127.0.0.1/images/.

3
root /static 

В противном случае это должно быть /home/user/site/static?

+0

Вы бы так подумали, Джим, Однако независимо от того, что у меня было, это было так, как оно не сработало. –

+0

Что говорят файлы журналов? Каковы разрешения для этого каталога и его родительских каталогов? Какой пользователь 'nginx' работает как? – Jim

+0

статический каталог - 0755 Я изменил корневой/статический обратно на/home/user/site/static снова и до сих пор не радует. –

0

Отъезд документация root директивы, в отличие от директивы псевдоним сервера Apache, матч местоположение не упал. так что, когда вы указываете место static папку определить в качестве корня должна содержать папку static. так что это не неправильно, что nginx ищет /home/user/site/static/static Это намеренное поведение.

Я бы предпочел использовать http://host/static/images как ваш URL для обслуживания статических изображений. Таким образом, он следует документации Django Managing static files, в которой предлагается использовать префикс для ваших статических файлов. В противном случае у вас есть несколько папок для различного статического содержимого, загромождающих ваши папки с проектами и приложениями.

1

Проверьте разницу между использованием «root» или «alias». В основном в случае использования «root» путь рядом с «location» (/ static /) добавляется в путь, а в случае «псевдонима» он будет проигнорирован.

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