Django не может обслуживать статический файл в ec2? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытался развернуть проект django на экземпляре ec2, используя nginx и uwsgi. Проект отлично работает в режиме разработки на локальном компьютере и может легко обслуживать статические файлы на локальном компьютере. Но проблема в том, что после развертывания на экземпляре ec2 он не может загружать статические файлы (css).

Структура моего проекта:

enter image description here

Файлы настроек находятся в каталоге настроек:

Некоторая часть содержимого настроек:

BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",                                                                                              "django.contrib.staticfiles",
    "control",
] 
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = '/static/'
STATICFILES_DIRS = (
      os.path.join(BASE_DIR, "static"),
)

содержимое nginx:

upstream url_shortener {
    server 127.0.0.1:8000;
}


server {
        listen 80;
    server_name mahbubcseju.com ;
    charset     utf-8;
    location = /favicon.ico {access_log off; log_not_found off; }

    location = /static/ {
        autoindex on;
        alias  /home/ubuntu/projects/url_shortener/static/;
    }

    location / {
        include        /etc/nginx/uwsgi_params;
        uwsgi_pass     url_shortener;
    }
}

содержимое uwsgi:

[uwsgi]
project = url_shortener
uid = ubuntu
base = /home/%(uid)

home = %(base)/projects
chdir = %(home)/%(project)
module = %(project).wsgi:application

master = true
processes = 5

chown-socket = %(uid):www-data
chmod-socket = 666
socket  = 127.0.0.1:8000
vacuum = true

plugins = python3,http

Я запустил python manage.py runserver collectstatic перед запуском сервера nginx.

Если я пытаюсь получить доступ к файлу CSS из браузера, это выдает следующую ошибку:

Запрос:
http://mahbubcseju.com/static/css/home.css
Ответ:

Не найдено Запрошенный ресурс не найден на этом сервере.

Разрешение статического каталога для пользователя ubuntu:

drwxrwxrwx 4 ubuntu ubuntu 4096 7 ноября 07:50 статический

1 Ответ

1 голос
/ 08 ноября 2019

Снимите = с вашего блока местоположения в конфигурации nginx, и это должно работать, если в каталогах установлены правильные разрешения, разрешающие доступ пользователя nginx:

    location /static/ {
        # autoindex on;
        alias  /home/ubuntu/projects/url_shortener/static/;
    }
...