我已经在使用Nginx和Gunicorn的Ubuntu 16.04上部署了一个Django项目。我已经掌握了所有内容,包括静态文件,但我的媒体文件无法正常使用。
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 /中列出的是
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时,我得到一个错误:
未找到 在此服务器上找不到请求的资源。
更新:
我已将settings.py更改为
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/;
}
静态功能仍在工作,但是媒体无效。
答案 0 :(得分:1)
对于nginx配置,位置后的“ =”表示这是确切的位置匹配。因此,将您的设置更改为
location /media/ {
root /home/syed/btawebsite;
}
,与/static/
相同。对于收藏夹图标来说是正确的。有关nginx位置指令的更多信息,请检查this。