簡體   English   中英

Django Nginx Gunicorn - 媒體文件未顯示(DigitalOcean 部署)

[英]Django Nginx Gunicorn - Media Files Not Showing (DigitalOcean Deployment)

我已經使用 Nginx 和 Gunicorn 在 Ubuntu 16.04 上部署了一個 Django 項目。 我已經得到了一切,包括靜態文件,但我的媒體文件將無法正常提供。

設置.py

MEDIA_URL = '/media/'

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

模型.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 時我無法查看它們。

當我點擊那個網址時,我收到一個錯誤:

Not Found 在此服務器上找不到請求的資源。

更新:

我已將 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/;
}

靜態仍然有效,但媒體無效。

對於 nginx 配置,位置后面的“=”符號表示這是精確的位置匹配。 因此,將您的設置更改為

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

/static/相同。 對 favicon 來說是正確的。 有關 nginx 位置指令的更多信息,請查看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM