【问题标题】:Django Production Issue Serving Media Root Files服务媒体根文件的 Django 生产问题
【发布时间】:2016-04-15 16:03:44
【问题描述】:

我检查了相同的问题并发现了一些提示,但它们都不起作用。 在调试模式下,一切都像一个魅力。您可以使用 www 地址访问文件,用户可以上传图片。 现在我关闭了调试,起初我只是在关闭调试的情况下使用调试设置。上传仍然有效,但无法通过 www 加载图片(404 错误)。然后我将其更改为实时设置,现在上传不起作用,并且 media_root 文件不通过 www 提供。

我检查了我的服务器并将访问权限更改为读写,没有帮助。

知道如何解决这个问题吗?

settings.py 调试:

STATIC_URL = '/static/'

STATIC_ROOT =  os.path.join(BASE_DIR, "static_in_pro", "static_root")

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static_in_pro", "our_static"),
    #'/var/www/static/',
) 

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static_in_pro", "media_root")

settings.py 直播:

STATIC_URL = '/static/'

STATIC_ROOT =  '/var/www/vhosts/bspotted1/app/static_in_pro/static_root/'

STATICFILES_DIRS = (
     '/var/www/vhosts/bspotted1/app/static_in_pro/',
    #'/var/www/static/',
) 

MEDIA_URL = '/media/'
MEDIA_ROOT = '/var/www/vhosts/bspotted1/app/static_in_pro/media_root/'

urls.py:

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【问题讨论】:

  • 在生产环境中,您应该从 nginx 或 apache 等网络服务器提供 STATIC_ROOT 目录,但为什么要尝试从 Django 提供它们?你的平台有什么限制吗?
  • 除了 Paulo Scardines 的回答,检查你是否在你的 urls.py 中配置了`+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)`
  • @PauloScardine 这是一个 apache 服务器,还是我想念一些东西,它们是通过目录提供的?用我的 urls.py 更新了我的帖子。我认为没有任何限制。
  • 请查看 Django 文档中的Serving files 部分。
  • @PauloScardine 托管服务更改了 Conf 文件,现在如果我关闭调试,则没有任何效果。甚至没有静态文件。

标签: django django-settings django-staticfiles


【解决方案1】:

您需要配置您的网络服务器以提供静态和媒体文件。

Django 并不是为他们服务的。相反,Django 只会引用 STATIC_URL 和 MEDIA_URL 前缀来查找/上传文件。

在调试模式下,会运行一个 Web 守护程序来临时为不应在生产中使用的文件提供服务。

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2020-05-02
    • 2023-04-08
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多