“Django/docs/3.0.x/howto/static-files/deployment”的版本间差异

来自菜鸟教程
Django/docs/3.0.x/howto/static-files/deployment
跳转至:导航、​搜索
(autoload)
 
(Page commit)
 
第1行: 第1行:
 +
{{DISPLAYTITLE:部署静态文件 — Django 文档}}
 
<div id="deploying-static-files" class="section">
 
<div id="deploying-static-files" class="section">
  
第5行: 第6行:
 
<div class="admonition seealso">
 
<div class="admonition seealso">
  
参见
+
也可以看看
  
想要 [[../../../ref/contrib/staticfiles#module-django.contrib|<code>django.contrib.staticfiles</code>]] 的使用指南,请参考 [[../index|<span class="doc">管理静态文件(比如图片、JavaScript、CSS)</span>]]。
+
关于使用的介绍 [[../../../ref/contrib/staticfiles#module-django.contrib|django.contrib.staticfiles]] , 看管理静态文件(例如 图片、JavaScript、CSS) .
  
  
第14行: 第15行:
  
 
<span id="staticfiles-production"></span>
 
<span id="staticfiles-production"></span>
== 在生产环境提供静态文件服务 ==
+
== 在生产中提供静态文件 ==
  
The basic outline of putting static files into production consists of two
+
将静态文件投入生产的基本大纲包括两个步骤:静态文件变化时运行[[#id1|:djadmin:`collectstatic`]]命令,然后安排收集的静态文件目录([[#id3|:setting:` STATIC_ROOT`]]) 移动到静态文件服务器并提供服务。 根据 [[#id5|:setting:`STATICFILES_STORAGE`]],文件可能需要手动移动到新位置,或者 <code>Storage</code> 类的 [[../../../ref/contrib/staticfiles#django.contrib.staticfiles.storage.StaticFilesStorage|post_process]] 方法可能会处理这个问题.
steps: run the [[../../../ref/contrib/staticfiles#django-admin-collectstatic|<code>collectstatic</code>]] command when static files change, then
 
arrange for the collected static files directory ([[../../../ref/settings#std-setting-STATIC_ROOT|<code>STATIC_ROOT</code>]]) to be
 
moved to the static file server and served. Depending on
 
[[../../../ref/settings#std-setting-STATICFILES_STORAGE|<code>STATICFILES_STORAGE</code>]], files may need to be moved to a new location
 
manually or the [[../../../ref/contrib/staticfiles#django.contrib.staticfiles.storage.StaticFilesStorage|<code>post_process</code>]] method of
 
the <code>Storage</code> class might take care of that.
 
  
当然,像所有的部署任务一样,细节决定成败。每个生成环境的配置可能都有点不同个,所以,需要调整配置以满足你的需求。以下是常见模式,可能对你有所帮助。
+
当然,与所有部署任务一样,细节决定成败。 每个制作设置都会有所不同,因此您需要调整基本轮廓以满足您的需求。 以下是一些可能会有所帮助的常见模式。
  
 
<div id="serving-the-site-and-your-static-files-from-the-same-server" class="section">
 
<div id="serving-the-site-and-your-static-files-from-the-same-server" class="section">
  
=== 在同一服务器提供站点和静态文件服务 ===
+
=== 从同一台服务器为站点和静态文件提供服务 ===
  
如果你想在早已提供站点服务器服务器上同时提供静态文件服务,操作步骤类似这样:
+
如果您想从已经为您的站点提供服务的同一台服务器上提供静态文件,该过程可能如下所示:
  
* 将代码推送至部署服务器。
+
* 将您的代码推送到部署服务器。
* 在服务器上运行 [[../../../ref/contrib/staticfiles#django-admin-collectstatic|<code>collectstatic</code>]],将所有的静态文件拷贝至 [[../../../ref/settings#std-setting-STATIC_ROOT|<code>STATIC_ROOT</code>]]。
+
* 在服务器端运行[[#id7|:djadmin:`collectstatic`]],将所有静态文件复制到[[#id9|:setting:`STATIC_ROOT`]]。
* 配置 Web 服务器,使其在 [[../../../ref/settings#std-setting-STATIC_URL|<code>STATIC_URL</code>]] 下为 [[../../../ref/settings#std-setting-STATIC_ROOT|<code>STATIC_ROOT</code>]] 目录下的文件提供静态文件服务。例如, [[../../deployment/wsgi/modwsgi#serving-files|<span class="std std-ref">这里是如何以 Apache 配合 mod_wsgi 开始</span>]]
+
* 配置您的 Web 服务器以提供 URL [[#id13|:setting:`STATIC_URL`]] 下的 [[#id11|:setting:`STATIC_ROOT`]] 中的文件。 例如,这里是 [[../../deployment/wsgi/modwsgi#serving-files|如何使用 Apache mod_wsgi]] 执行此操作。
  
你可能期望将该流程自动化,特别是在你有好几个 web 服务器的时候。
+
您可能希望自动化此过程,尤其是当您有多个 Web 服务器时。
  
  
第42行: 第37行:
 
<div id="serving-static-files-from-a-dedicated-server" class="section">
 
<div id="serving-static-files-from-a-dedicated-server" class="section">
  
=== 专用服务器提供静态文件服务 ===
+
=== 从专用服务器提供静态文件 ===
  
大多数大型 Django 站点使用一个独立的 Web 服务器——即,该服务器并未运行 Django,值提供静态文件服务。这种服务器一般运行一种不同的 Web 服务器——更快,更简单。常见选项如下:
+
大多数较大的 Django 站点使用单独的 Web 服务器(即,不运行 Django 的服务器)来提供静态文件。 该服务器通常运行不同类型的 Web 服务器——速度更快但功能较少。 一些常见的选择是:
  
* [https://nginx.org/en/ Nginx]
+
* [https://nginx.org/en/ nginx]
* 一个 [https://httpd.apache.org/ Apache] 的朴素版本
+
* [https://httpd.apache.org/ Apache] 的精简版
  
如何配置这些服务器超出了本文范围;查阅这些服务器各自的文档获取介绍。
+
配置这些服务器超出了本文档的范围; 检查每个服务器各自的文档以获取说明。
  
由于静态文件服务器并不运行 Django,你需要将部署策略改成这样:
+
由于您的静态文件服务器不会运行 Django,您需要将部署策略修改为如下所示:
  
* 当静态文件改变时,本地运行 [[../../../ref/contrib/staticfiles#django-admin-collectstatic|<code>collectstatic</code>]]。
+
* 当您的静态文件更改时,请在本地运行 [[#id15|:djadmin:`collectstatic`]]。
* 将本地 [[../../../ref/settings#std-setting-STATIC_ROOT|<code>STATIC_ROOT</code>]] 推送到静态文件服务器提供服务的目录。 [https://rsync.samba.org/ rsync] 是一个常见选项,因为这种配置只会传输文件修改部分的数据流。
+
* 将您的本地 [[#id17|:setting:`STATIC_ROOT`]] 推送到静态文件服务器到正在提供服务的目录中。 [https://rsync.samba.org/ rsync] 是这一步的常用选择,因为它只需要传输已更改的静态文件的位。
  
  
第61行: 第56行:
  
 
<span id="staticfiles-from-cdn"></span>
 
<span id="staticfiles-from-cdn"></span>
=== 从云服务或 CDN 提供静态文件服务 ===
+
=== 从云服务或 CDN 提供静态文件 ===
  
另一种常见的策略是从类似亚马逊 S3 的云存储服务商或 CDN (content delivery network) 提供静态文件服务。这能让你忽略提供静态文件服务可能出现的问题,提供 Web 页面加载速度(尤其是在用 CDN 的时候)。
+
另一种常见的策略是从云存储提供商(如 Amazon 的 S3 和/或 CDN(内容交付网络))提供静态文件。 这让您可以忽略提供静态文件的问题,并且通常可以加快网页加载速度(尤其是在使用 CDN 时)。
  
使用这些服务时,基本的工作流程与上面类似,除了要将静态文件传输给存储服务商或 CDN,而不是用 <code>rsync</code> 将静态文件传输给服务器。
+
使用这些服务时,基本工作流程看起来有点像上面的,除了使用 <code>rsync</code> 将静态文件传输到服务器时,您需要将静态文件传输到存储提供商或 CDN .
  
There's any number of ways you might do this, but if the provider has an API,
+
您可以通过多种方式执行此操作,但是如果提供程序有 API,您可以使用 [[../../custom-file-storage|自定义文件存储后端]] CDN 与您的 Django 项目集成。 如果您已经编写或正在使用 3rd 方自定义存储后端,您可以通过将 [[#id21|:setting:`STATICFILES_STORAGE`]] 设置为存储来告诉 [[#id19|:djadmin:`collectstatic`]] 使用它引擎。
you can use a [[../../custom-file-storage|<span class="doc">custom file storage backend</span>]]
 
to integrate the CDN with your Django project. If you've written or are using a
 
3rd party custom storage backend, you can tell [[../../../ref/contrib/staticfiles#django-admin-collectstatic|<code>collectstatic</code>]] to use
 
it by setting [[../../../ref/settings#std-setting-STATICFILES_STORAGE|<code>STATICFILES_STORAGE</code>]] to the storage engine.
 
  
例如,若你已在 <code>myproject.storage.S3Storage</code> 中写了一个 S3 存储后端,可以这么用:
+
例如,如果您在 <code>myproject.storage.S3Storage</code> 中编写了一个 S3 存储后端,则可以将其用于:
  
 
<div class="highlight-default notranslate">
 
<div class="highlight-default notranslate">
第79行: 第70行:
 
<div class="highlight">
 
<div class="highlight">
  
<pre>STATICFILES_STORAGE = 'myproject.storage.S3Storage'</pre>
+
<syntaxhighlight lang="python">STATICFILES_STORAGE = 'myproject.storage.S3Storage'</syntaxhighlight>
  
 
</div>
 
</div>
  
 
</div>
 
</div>
Once that's done, all you have to do is run [[../../../ref/contrib/staticfiles#django-admin-collectstatic|<code>collectstatic</code>]] and your
+
完成后,您所要做的就是运行 [[#id23|:djadmin:`collectstatic`]],您的静态文件将通过您的存储包推送到 S3。 如果您以后需要切换到不同的存储提供程序,您可能只需要更改您的 [[#id25|:setting:`STATICFILES_STORAGE`]] 设置。
static files would be pushed through your storage package up to S3. If you
 
later needed to switch to a different storage provider, you may only have to
 
change your [[../../../ref/settings#std-setting-STATICFILES_STORAGE|<code>STATICFILES_STORAGE</code>]] setting.
 
  
关于如何编写这些后端的细节,参考 [[../../custom-file-storage|<span class="doc">编写一个自定义存储系统</span>]]。有很多可用的第三方应用提供了针对常见文件存储 API 的存储后端。 [https://djangopackages.org/grids/g/storage-backends/ djangopackages.org 入门] 是个不错的起点。
+
有关如何编写这些后端之一的详细信息,请参阅 [[../../custom-file-storage|编写自定义存储系统]] 。 有 3rd 方应用程序可以为许多常见的文件存储 API 提供存储后端。 一个很好的起点是 djangopackages.org [https://djangopackages.org/grids/g/storage-backends/ 上的] 概述。
  
  
第99行: 第87行:
 
== 了解更多 ==
 
== 了解更多 ==
  
想要了解所有配置项,命令,模板标签和 [[../../../ref/contrib/staticfiles#module-django.contrib|<code>django.contrib.staticfiles</code>]] 包含的其它零碎的完整细节,参考 [[../../../ref/contrib/staticfiles|<span class="doc">staticfiles 参考</span>]]。
+
有关 [[../../../ref/contrib/staticfiles#module-django.contrib|django.contrib.staticfiles]] 中包含的所有设置、命令、模板标签和其他部分的完整详细信息,请参阅 [[../../../ref/contrib/staticfiles|静态文件参考]] 。
  
  
第105行: 第93行:
  
 
</div>
 
</div>
 +
<div class="clearer">
  
[[Category:Django 3.0.x 中文文档]]
+
 
 +
 
 +
</div>
 +
 
 +
[[Category:Django 3.0.x 文档]]

2021年10月31日 (日) 04:08的最新版本

部署静态文件

也可以看看

关于使用的介绍 django.contrib.staticfiles , 看管理静态文件(例如 图片、JavaScript、CSS) .


在生产中提供静态文件

将静态文件投入生产的基本大纲包括两个步骤:静态文件变化时运行:djadmin:`collectstatic`命令,然后安排收集的静态文件目录(:setting:` STATIC_ROOT`) 移动到静态文件服务器并提供服务。 根据 :setting:`STATICFILES_STORAGE`,文件可能需要手动移动到新位置,或者 Storage 类的 post_process 方法可能会处理这个问题.

当然,与所有部署任务一样,细节决定成败。 每个制作设置都会有所不同,因此您需要调整基本轮廓以满足您的需求。 以下是一些可能会有所帮助的常见模式。

从同一台服务器为站点和静态文件提供服务

如果您想从已经为您的站点提供服务的同一台服务器上提供静态文件,该过程可能如下所示:

您可能希望自动化此过程,尤其是当您有多个 Web 服务器时。


从专用服务器提供静态文件

大多数较大的 Django 站点使用单独的 Web 服务器(即,不运行 Django 的服务器)来提供静态文件。 该服务器通常运行不同类型的 Web 服务器——速度更快但功能较少。 一些常见的选择是:

配置这些服务器超出了本文档的范围; 检查每个服务器各自的文档以获取说明。

由于您的静态文件服务器不会运行 Django,您需要将部署策略修改为如下所示:

  • 当您的静态文件更改时,请在本地运行 :djadmin:`collectstatic`
  • 将您的本地 :setting:`STATIC_ROOT` 推送到静态文件服务器到正在提供服务的目录中。 rsync 是这一步的常用选择,因为它只需要传输已更改的静态文件的位。


从云服务或 CDN 提供静态文件

另一种常见的策略是从云存储提供商(如 Amazon 的 S3 和/或 CDN(内容交付网络))提供静态文件。 这让您可以忽略提供静态文件的问题,并且通常可以加快网页加载速度(尤其是在使用 CDN 时)。

使用这些服务时,基本工作流程看起来有点像上面的,除了使用 rsync 将静态文件传输到服务器时,您需要将静态文件传输到存储提供商或 CDN .

您可以通过多种方式执行此操作,但是如果提供程序有 API,您可以使用 自定义文件存储后端 将 CDN 与您的 Django 项目集成。 如果您已经编写或正在使用 3rd 方自定义存储后端,您可以通过将 :setting:`STATICFILES_STORAGE` 设置为存储来告诉 :djadmin:`collectstatic` 使用它引擎。

例如,如果您在 myproject.storage.S3Storage 中编写了一个 S3 存储后端,则可以将其用于:

STATICFILES_STORAGE = 'myproject.storage.S3Storage'

完成后,您所要做的就是运行 :djadmin:`collectstatic`,您的静态文件将通过您的存储包推送到 S3。 如果您以后需要切换到不同的存储提供程序,您可能只需要更改您的 :setting:`STATICFILES_STORAGE` 设置。

有关如何编写这些后端之一的详细信息,请参阅 编写自定义存储系统 。 有 3rd 方应用程序可以为许多常见的文件存储 API 提供存储后端。 一个很好的起点是 djangopackages.org 上的 概述。


了解更多

有关 django.contrib.staticfiles 中包含的所有设置、命令、模板标签和其他部分的完整详细信息,请参阅 静态文件参考