#python-3.x #django #ubuntu #nginx #gunicorn
#python-3.x #django #ubuntu #nginx #gunicorn
Вопрос:
Я знаю, что об этом спрашивали несколько раз, но ни одно из этих решений, похоже, не работает для меня. Это было мое первое развертывание проекта Django, поэтому для справки я следовал этому руководству: https://linuxhint.com/create_django_app_ubuntu /
По этой причине вполне возможно, что что-то пролетело над моей головой полностью.
конфигурация nginx (я пробовал псевдоним вместо root, с косой чертой и без нее, убедился, что статический файл не принадлежит root и т. Д.):
upstream django {
server 127.0.0.1:8000;
}
server {
listen 80;
location /static/ {
root /home/bryan/Projects/portfolio;
try_files $uri =404;
}
location / {
try_files $uri @send_to_django;
}
location @send_to_django {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://django;
}
}
settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Примечание:
django.contrib.staticfiles
установленpython manage.py collectstatic
похоже, работает- Я действительно считаю, что правильно ссылаюсь на статические файлы в своих шаблонах:
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'home/css/index.css' %}">
Моя файловая структура:
- портфолио (корень проекта django)
- главная страница (приложение django)
- статический (статические файлы проекта)
- home (статические файлы для домашнего приложения)
- css
- home (статические файлы для домашнего приложения)
Кроме статических файлов, сайт работает безупречно с этой настройкой.
Ответ №1:
- Убедитесь, что ваши статические файлы находятся в /home/bryan/Projects/portfolio/static
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Приведенные выше настройки могут привести к тому, что статические файлы будут собираться в /home/bryan/Projects/portfolio/static/ статический каталог
-
Проверьте разрешения статического каталога
-
Используйте «псевдоним» вместо «root» в вашем nginx conf
Комментарии:
1. Спасибо за ответ. 1. Похоже, что это не так. Все файлы существуют, как и предполагалось
/home/bryan/Projects/portfolio/static
. Например, даже тот, на который я ссылаюсь в своем фрагменте HTML, можно найти в файловой системе в разделеhome/bryan/Projects/portfolio/static/home/css/index.css
2. Я только что проверил, и разрешения для статического каталога передаются моему пользователю, а не root. 3. Я пытаюсь это сейчас:location /static/ { alias /home/bryan/Projects/portfolio/static/; try_files $uri =404; }
Но это все равно просто дает мне 4042. @Bryan location /static/ { псевдоним /home/bryan/Projects/portfolio/static/; удалить завершающие косые черты
3. Теперь я их удалил, и, к сожалению, он по-прежнему выдает 404
4. @Bryan что говорит журнал nginx?
5. О, похоже, он выдает 403 для статических файлов. Но почему это происходит только со статическими файлами? Сам фактический шаблон HTML сообщает о 200 и работает просто отлично; все в каталоге /portfolio/ имеет одинаковые разрешения.