也可以看看
有關使用的簡介django.contrib.staticfiles,請參閱 管理靜態(tài)文件(例如,圖像,JavaScript,CSS)。
將靜態(tài)文件投入生產的基本概述包括兩個步驟:collectstatic更改靜態(tài)文件時運行命令,然后安排將收集的靜態(tài)文件目錄(STATIC_ROOT)移至靜態(tài)文件服務器并提供服務。根據 STATICFILES_STORAGE,可能需要手動將文件移動到新位置,否則類的post_process方法Storage可能會解決這個問題。
當然,與所有部署任務一樣,細節(jié)在于魔鬼。每個生產設置都會有所不同,因此您需要調整基本輪廓以適合您的需求。以下是一些可能有用的常見模式。
如果要從已經為您的站點提供服務的同一臺服務器提供靜態(tài)文件,則該過程可能類似于:
您可能希望自動化此過程,尤其是當您有多個Web服務器時。
大多數較大的Django站點使用單獨的Web服務器(即未同時運行Django的Web服務器)來提供靜態(tài)文件。該服務器通常運行其他類型的Web服務器-速度更快,但功能較少。一些常見的選擇是:
配置這些服務器不在本文檔的討論范圍內。檢查每個服務器各自的文檔以獲取指示。
由于您的靜態(tài)文件服務器不會運行Django,因此您需要修改部署策略,使其類似于:
另一個常見的策略是為來自Amazon S3和/或CDN(內容交付網絡)等云存儲提供商的靜態(tài)文件提供服務。這使您可以忽略提供靜態(tài)文件的問題,并且通常可以使網頁加載速度更快(尤其是在使用CDN時)??。
使用這些服務時,基本工作流程看起來與上面類似,除了rsync需要將靜態(tài)文件傳輸到存儲提供程序或CDN 而不是用于將靜態(tài)文件傳輸到服務器之外。
您可以通過多種方式執(zhí)行此操作,但是如果提供程序具有API,則可以使用自定義文件存儲后端 將CDN與Django項目集成。如果您已經編寫或正在使用第三方的自定義存儲后端,則可以collectstatic通過設置STATICFILES_STORAGE存儲引擎來告訴您使用它。
例如,如果您已經編寫了一個S3存儲后端,則 myproject.storage.S3Storage可以將其用于:
STATICFILES_STORAGE = 'myproject.storage.S3Storage'
完成此操作后,所有您需要做的就是運行collectstatic,您的靜態(tài)文件將通過存儲包推送到S3。如果以后需要切換到其他存儲提供商,則只需更改STATICFILES_STORAGE設置即可。
有關如何編寫這些后端之一的詳細信息,請參閱《 編寫自定義存儲系統(tǒng)》。有可用的第三方應用程序為許多常用文件存儲API提供存儲后端。djangopackages.org的概述是一個很好的起點。
有關其中包含的所有設置,命令,模板標記和其他部分的完整詳細信息django.contrib.staticfiles,請參見staticfiles參考。
更多建議: