Deploying static files
For an introduction to the use of , see.
The basic outline of putting static files into production is simple: run thecollectstatic
command when static files change, then arrange forthe collected static files directory () to be moved tothe static file server and served. Depending on STATICFILES_STORAGE
,files may need to be moved to a new location manually or the methodof the Storage
class might take care of that.
Of course, as with all deployment tasks, the devil's in the details. Everyproduction setup will be a bit different, so you'll need to adapt the basicoutline to fit your needs. Below are a few common patterns that might help.
Most larger Django sites use a separate Web server — i.e., one that's not alsorunning Django — for serving static files. This server often runs a differenttype of web server — faster but less full-featured. Some common choices are:
- Nginx
- A stripped-down version of
Configuring these servers is out of scope of this document; check eachserver's respective documentation for instructions.
Since your static file server won't be running Django, you'll need to modifythe deployment strategy to look something like:
- When your static files change, run
collectstatic
locally.
Another common tactic is to serve static files from a cloud storage providerlike Amazon's S3 and/or a CDN (content delivery network). This lets youignore the problems of serving static files and can often make forfaster-loading Web pages (especially when using a CDN).
There's any number of ways you might do this, but if the provider has an API a will make theprocess incredibly simple. If you've written or are using a 3rd party customstorage backend, you can tell collectstatic
to use it by setting to the storage engine.
For example, if you've written an S3 storage backend inmyproject.storage.S3Storage
you could use it with:
Once that's done, all you have to do is run collectstatic
and yourstatic files would be pushed through your storage package up to S3. If youlater needed to switch to a different storage provider, it could be as simpleas changing your setting.
了解更多
For complete details on all the settings, commands, template tags, and otherpieces included in , see thestaticfiles reference.