Django Nginx Gunicorn - файлы мультимедиа не отображаются (развертывание DigitalOcean) - PullRequest
1 голос
/ 22 марта 2019

Я развернул проект Django в Ubuntu 16.04 с Nginx и Gunicorn.Я получил все, включая статические файлы, но мои медиа-файлы не будут работать должным образом.

settings.py

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

models.py

resume_upload = models.FileField(blank=False, upload_to='resumes', null=True, validators=[FileExtensionValidator(allowed_extensions=['pdf']), validate_file_size])

Что яперечислил в / etc / nginx / sites-available / is

server {
listen 80;
server_name website.com www.website.com ;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/syed/btawebsite;
}

location = /media/ {
    root /home/syed/btawebsite;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/syed/myproject.sock;
}

}

Я хотел бы зайти к администратору, щелкнуть по загруженному файлу и иметь возможность просмотреть файл вбраузер.У кого-нибудь есть идеи, как мне этого добиться?Используя терминал и просматривая каталоги, я подтвердил, что файлы фактически добавляются в ~ btawebsite / media / resumes, но я не могу просмотреть их, когда нажимаю URL-адрес администратора.

Когда я нажимаю напо этому URL я получаю сообщение об ошибке:

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

Обновление:

Я изменил настройки.py to

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static/'),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

И настройки nginx на

location /static/ {
    alias /home/syed/btawebsite/static/;
}

location = /media/ {
    alias /home/syed/btawebsite/media/;
}

Статика все еще работает, однако, носитель не работает.

1 Ответ

1 голос
/ 22 марта 2019

Для конфигурации nginx знак "=" после местоположения означает, что это точное совпадение местоположения.Поэтому измените ваши настройки на

location /media/ {
    root /home/syed/btawebsite;
}

и то же самое для /static/.Это правильно для favicon.Чтобы узнать больше о директиве местоположения nginx, проверьте this .

...