部署靜態(tài)文章

2021-10-19 19:32 更新

部署靜態(tài)文件

也可以看看

有關(guān)使用的簡介django.contrib.staticfiles,請參閱 管理靜態(tài)文件(例如,圖像,JavaScript,CSS)。

在生產(chǎn)中提供靜態(tài)文件

將靜態(tài)文件投入生產(chǎn)的基本概述包括兩個步驟:collectstatic更改靜態(tài)文件時運行命令,然后安排將收集的靜態(tài)文件目錄(STATIC_ROOT)移至靜態(tài)文件服務(wù)器并提供服務(wù)。根據(jù) STATICFILES_STORAGE,可能需要手動將文件移動到新位置,否則類的post_process方法Storage可能會解決這個問題。

當(dāng)然,與所有部署任務(wù)一樣,細(xì)節(jié)在于魔鬼。每個生產(chǎn)設(shè)置都會有所不同,因此您需要調(diào)整基本輪廓以適合您的需求。以下是一些可能有用的常見模式。

從同一服務(wù)器提供站點和您的靜態(tài)文件

如果要從已經(jīng)為您的站點提供服務(wù)的同一臺服務(wù)器提供靜態(tài)文件,則該過程可能類似于:

  • 將您的代碼推送到部署服務(wù)器。
  • 在服務(wù)器上,運行collectstatic以將所有靜態(tài)文件復(fù)制到中STATIC_ROOT。
  • 配置您的Web服務(wù)器以STATIC_ROOT 在URL下提供文件STATIC_URL。例如, 這是使用Apache和mod_wsgi的方法。

您可能希望自動化此過程,尤其是當(dāng)您有多個Web服務(wù)器時。

從專用服務(wù)器提供靜態(tài)文件

大多數(shù)較大的Django站點使用單獨的Web服務(wù)器(即未同時運行Django的Web服務(wù)器)來提供靜態(tài)文件。該服務(wù)器通常運行其他類型的Web服務(wù)器-速度更快,但功能較少。一些常見的選擇是:

  • Nginx的
  • 精簡版的Apache

配置這些服務(wù)器不在本文檔的討論范圍內(nèi)。檢查每個服務(wù)器各自的文檔以獲取指示。

由于您的靜態(tài)文件服務(wù)器不會運行Django,因此您需要修改部署策略,使其類似于:

  • 當(dāng)您的靜態(tài)文件更改時,請在collectstatic本地運行。
  • 將您的本地推STATIC_ROOT送到靜態(tài)文件服務(wù)器,進(jìn)入正在服務(wù)的目錄。rsync是此步驟的常見選擇,因為它只需要傳輸已更改的靜態(tài)文件的位。

從云服務(wù)或CDN服務(wù)靜態(tài)文件

另一個常見的策略是為來自Amazon S3和/或CDN(內(nèi)容交付網(wǎng)絡(luò))等云存儲提供商的靜態(tài)文件提供服務(wù)。這使您可以忽略提供靜態(tài)文件的問題,并且通常可以使網(wǎng)頁加載速度更快(尤其是在使用CDN時)??。

使用這些服務(wù)時,基本工作流程看起來與上面類似,除了rsync需要將靜態(tài)文件傳輸?shù)酱鎯μ峁┏绦蚧駽DN 而不是用于將靜態(tài)文件傳輸?shù)椒?wù)器之外。

您可以通過多種方式執(zhí)行此操作,但是如果提供程序具有API,則可以使用自定義文件存儲后端 將CDN與Django項目集成。如果您已經(jīng)編寫或正在使用第三方的自定義存儲后端,則可以collectstatic通過設(shè)置STATICFILES_STORAGE存儲引擎來告訴您使用它。

例如,如果您已經(jīng)編寫了一個S3存儲后端,則 myproject.storage.S3Storage可以將其用于:

STATICFILES_STORAGE = 'myproject.storage.S3Storage'

完成此操作后,所有您需要做的就是運行collectstatic,您的靜態(tài)文件將通過存儲包推送到S3。如果以后需要切換到其他存儲提供商,則只需更改STATICFILES_STORAGE設(shè)置即可。

有關(guān)如何編寫這些后端之一的詳細(xì)信息,請參閱《 編寫自定義存儲系統(tǒng)》。有可用的第三方應(yīng)用程序為許多常用文件存儲API提供存儲后端。djangopackages.org的概述是一個很好的起點。

了解更多

有關(guān)其中包含的所有設(shè)置,命令,模板標(biāo)記和其他部分的完整詳細(xì)信息django.contrib.staticfiles,請參見staticfiles參考。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號