【问题标题】:Django - Serving MEDIA/uploaded files in productionDjango - 在生产中提供媒体/上传的文件
【发布时间】:2014-05-15 23:58:31
【问题描述】:

我目前在我的项目 urls.py 中有这个,最后一行很重要。

urlpatterns = patterns('',
    url(r'^', include('polls.urls', namespace="polls")),
    url(r'^admin/', include(admin.site.urls)),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

有人告诉我,我读到这不适合生产环境。为什么会这样?

【问题讨论】:

标签: python django apache web


【解决方案1】:

我使用了google section of the django-storages package 的教程,它解决了从 Google Storage 提供文件(静态或媒体或两者)的问题,从而避免了在 Nginx 等上进行额外配置的麻烦

【讨论】:

    【解决方案2】:

    扩展@Paul Draper 的回答:

    使用 Nginx 时,请务必列出以下配置:

    location /media/ {
            root path/to/your/media;
    }
    

    【讨论】:

      【解决方案3】:

      Django 被构建为“应用程序服务器”,而不是“Web 服务器”。

      换句话说,从 Django 提供静态文件的性能将比使用 Apache 或 Nginx 更差。这些静态内容服务器(1)用 C 语言编写,(2)针对性能进行了优化。

      相比之下,Django (1) 是用纯 Python 编写的,(2) 已针对开发应用程序进行了优化。

      请参阅documentation


      那可能完全没问题。当我知道负载不会很高并且我没有提供大文件时,我使用 Django 在生产中提供静态内容。这取决于“生产”实际上是什么样的环境。


      仅供参考,common 生产设置将使用 Nignx、Django、Gunicorn 和 Supervisor。 Nginx 从磁盘提供静态内容并将其余部分反向代理到运行多个 Django 实例的 Gunicorn。主管监控 Gunicorn 并确保它保持运行。这完全取决于您需要什么级别的 Web 应用程序。

      【讨论】:

        【解决方案4】:

        不建议从 django 服务器本身提供静态文件。推荐的方法是在单独的服务器中为它们提供服务。检查static files deployment,在那里你会找到你需要的。

        【讨论】:

        • 我正在使用 webfaction 并且 apache 正在为我的 STATIC 文件提供服务,但我不确定我的 MEDIA 是如何提供服务的。媒体文件夹目前在我的项目文件夹内,而我的static_files 在它之外,由 apache 提供服务。我应该将我的媒体文件夹放在 static_files 中并进行正确的连接吗?我很好奇我的网址中是否还需要 `+static(...) 。如果你有时间,YES/NO 回答就足够了:)
        • 嘿,我也在用webfaction。我在一个单独的网络派系应用程序中也有媒体文件夹(我猜你有一个用于静态的。)。所以,最后,我为每个网站准备了 3 个不同的应用程序,一个用于提供静态服务,另一个用于媒体,另一个用于 Django 本身。您不需要在 urls.py 中指定静态行。您只需要设置正确的 {MEDIA,STATIC }_ROOT 和 {MEDIA,STATIC}_URL(如果需要,连同 STATICFILES_DIRS)将它们指向正确的目标文件夹和配置的 url(您在将应用程序分配到您的网站时指定的那些)。
        • 顺便说一句,不要将媒体文件夹放在 static_files 中,它们是不同的东西,所以为了更好地维护和项目结构,请保持分开。
        • 太完美了。谢谢!你也在使用 Apache 吗?在收到一堆建议后,我正在考虑安装 NGINX。
        • 我使用 apache 是因为它是默认提供的服务器,而且我的服务器没有太多负载 =)。但是,是的,对于静态文件,建议使用 nginx,因为它的性能要好得多,对于动态内容,它们的性能或多或少。很久以前,我读过一篇文章,显示响应时间和所有这些东西,但找不到它...... =/
        猜你喜欢
        • 2013-03-20
        • 1970-01-01
        • 2017-09-29
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 2023-04-08
        • 1970-01-01
        相关资源
        最近更新 更多