# Django 5.2.9 - dokumentacja

# How to deploy static files

Zobacz także

Ay wprowadzić się w używanie `django.contrib.staticfiles`, zobacz Jak zarządzać plikami statycznymi (np. obrazy, JavaScript, CSS).

## Serwowanie plików statycznych na produkcji

The basic outline of putting static files into production consists of two steps: run the `collectstatic` command when static files change, then arrange for the collected static files directory (`STATIC_ROOT`) to be moved to the static file server and served. Depending on the `staticfiles` `STORAGES` alias, files may need to be moved to a new location manually or the `post_process` method of the `Storage` class might take care of that.

As with all deployment tasks, the devil’s in the details. Every production setup will be a bit different, so you’ll need to adapt the basic outline to fit your needs. Below are a few common patterns that might help.

### Serwowanie strony i plików statycznych z tego samego serwera

Jeśli chcesz serwować swoje pliki statyczne z tego samego serwera, który już serwuje twoją stronę, wówczas proces wdrażania może wyglądać jak:

- Wyślij swój kod na serwer wdrożeniowy.

- On the server, run `collectstatic` to copy all the static files into `STATIC_ROOT`.

- Configure your web server to serve the files in `STATIC_ROOT` under the URL `STATIC_URL`. For example, here’s how to do this with Apache and mod_wsgi.

Prawdopodobnie zdecydujesz się na automatyzację tego procesu, zwłaszcza jeśli posiadasz kilka serwerów webowych.

### Serving static files from a dedicated server

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

- A stripped-down version of Apache

Configuring these servers is out of scope of this document; check each server’s respective documentation for instructions.

Since your static file server won’t be running Django, you’ll need to modify the deployment strategy to look something like:

- When your static files change, run `collectstatic` locally.

- Push your local `STATIC_ROOT` up to the static file server into the directory that’s being served. rsync is a common choice for this step since it only needs to transfer the bits of static files that have changed.

### Serwowanie plików statycznych z chmury lub CDN

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).

When using these services, the basic workflow would look a bit like the above, except that instead of using `rsync` to transfer your static files to the server you’d need to transfer the static files to the storage provider or CDN.

There’s any number of ways you might do this, but if the provider has an API, you can use a custom file storage backend to integrate the CDN with your Django project. If you’ve written or are using a 3rd party custom storage backend, you can tell `collectstatic` to use it by setting `staticfiles` in `STORAGES`.

For example, if you’ve written an S3 storage backend in `myproject.storage.S3Storage` you could use it with:

    STORAGES = {
        # ...
        "staticfiles": {"BACKEND": "myproject.storage.S3Storage"}
    }

Once that’s done, all you have to do is run `collectstatic` and your 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 `staticfiles` in the `STORAGES` setting.

For details on how you’d write one of these backends, see Jak napisać klasę niestandardowego magazynu plików. There are 3rd party apps available that provide storage backends for many common file storage APIs. A good starting point is the overview at djangopackages.org.

## Czytaj więcej

For complete details on all the settings, commands, template tags, and other pieces included in `django.contrib.staticfiles`, see the staticfiles reference.