Статические файлы Django с Nginx и Unicorn
Вопрос
Я пытаюсь развернуть приложение Django на мой VPS. Поэтому я последовал за несколькими учебниками и единственным вопросом, у меня есть, это то, что я не могу получить свои статические файлы для появления. Поэтому ниже вы можете найти структуру моих файлов на VPS.
- .
- Виртуальная завивка: / opt / myApps /
- Django Project: / opt / myApps / Uniprogress /
- Статические файлы: / opt / myApps / Uniprogress / Static /
nginx config: / etc / nginx / fitsies / ustate / uniprogress
server {
server_name 188.xxx.xxx.93;
access_log off;
location /static/ {
alias /opt/myapps/uniprogress/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
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"';
}
}
.
и, наконец, в моих django settings.py:
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Template Dirs
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_ROOT = '/opt/myapps/uniprogress/static/'
STATIC_URL = '/static/'
.
Я также использовал: python manage.py collectstatic
, но все же мои статические файлы не будут отображаться.
<Сильное> Обновление Учебник, который я использовал, можно найти на Цифровой океан .
Я дважды проверил, что файлы существуют на сервере.
Также я могу получить доступ к статическим файлам, как: http://188.xxx. XXX.93 / Static / CSS / Bootstrap.csss .
Но в моем исходном коде http://188.xxx.xxx .93: 8001 / , это связывает статические файлы с помощью порта.
Это означает: <link href="/static/css/bootstrap.css" rel="stylesheet">
Так пытается найти bootstrap.css atttp://188.xxx.xxx.93" rel="nofollow"> http://188.xxx.xxx.93 : 8001 /static/bootstrap.css и файл не существует (приходится удалять сообщение, чтобы сделать его работать).
Решение
Для обслуживания статических файлов сделайте это в уровне Nginx, как
server {
server_name 188.xxx.xxx.93;
access_log off;
location ~ ^/(static)/ {
# root:- you static files path
# alias /opt/myapps/uniprogress/static/;
root /opt/myapps/uniprogress/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
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"';
}
}
.
Теперь все статические файлы будут служить из вашей Nginx.
Другие советы
Ваш Static_root собирает статические файлы по адресу:
/ opt / myApps / Uniprogress / opt / myApps / Uniprogress / Static /
Это не соответствует конфигурации вашего сервера, какие точки на:
opt / myApps / Uniprogress / Static /
Static_root - это просто папка, которая содержит все ваши статические файлы (изображения, CSS, все) в одном месте для развертывания, поэтому установите его на что-то вроде «/ Collected_Static /» и исправить конфигурацию сервера.
Проверьте это дела
1 Если статическое статическое доступно на Nginx, я имею в виду разрешение папки.
2 или сделайте это
Заменить это:
STATIC_ROOT = '/opt/myapps/uniprogress/static/'
.
с этим
STATIC_ROOT = ''
.
и добавьте это в настройки
STATICFILES_DIRS = (
'/opt/myapps/uniprogress/static/',
)
.
Надеюсь, это работает.