How to deploy static files

    想要 django.contrib.staticfiles 的使用指南,请参考 。

    在生产环境部署静态文件的基础要点有两步:在静态文件变化时,运行 collectstatic,然后将已收集的静态文件目录配置()移至静态文件服务器并提供服务。 STATICFILES_STORAGE 配置可能会要求手动将文件移动到新位置,不过 类的 方法可能会处理它。

    像所有的部署任务一样,细节决定成败。每个生成环境的配置可能都有点不同个,所以,需要调整基础配置以满足你的需求。以下是常见模式,可能对你有所帮助。

    如果你想在早已提供站点服务器服务器上同时提供静态文件服务,操作步骤类似这样:

    • 将代码推送至部署服务器。
    • 在服务器上运行 collectstatic,将所有的静态文件拷贝至 。

    Most larger Django sites use a separate web server — i.e., one that’s not also running Django — for serving static files. This server often runs a different type of web server — faster but less full-featured. Some common choices are:

    • Nginx
    • 一个 的朴素版本

    如何配置这些服务器超出了本文范围;查阅这些服务器各自的文档获取介绍。

    由于静态文件服务器并不运行 Django,你需要将部署策略改成这样:

    Another common tactic is to serve static files from a cloud storage provider like Amazon’s S3 and/or a CDN (content delivery network). This lets you ignore the problems of serving static files and can often make for faster-loading web pages (especially when using a CDN).

    有很多中方法可以实现目的,但是若服务商提供一个 API,你可以使用一个 将自定义 CDN 文件后端集成到你的 Django 项目中。若你已编写或正在使用第三方的自定义存储后端,你可以通过配置 STATICFILES_STORAGE 配置指向该存储引擎告诉 启用它。

    例如,若你已在 中写了一个 S3 存储后端,可以这么用:

    只要完成了上述流程,你就只需运行 collectstatic,静态文件将通过存储包推送给 S3。如果稍后需要切换至另一个存储服务商,你可能只需简单地修改配置 配置。

    关于如何编写这些后端的细节,参考 How to write a custom storage class。有很多可用的第三方应用提供了针对常见文件存储 API 的存储后端。 是个不错的起点。

    了解更多