Главная/Разработка/Django

Хостинг для Django: установка и деплой на сервер

Хостинг для Django выбирают из двух вариантов: платформа деплоя из Git с Dockerfile, где не нужно администрировать систему, или VPS, где gunicorn работает под systemd за Nginx. Внутри любого варианта одинаковый набор: выключенный DEBUG, список ALLOWED_HOSTS, PostgreSQL вместо SQLite и отдельное место для статики и загрузок.

4 мин чтенияДанные проверены 16 октября 2026

Ответ за 30 секунд

Без администрирования Django отправляют на платформу деплоя с Dockerfile, а вместе с Celery, Redis и своей PostgreSQL ставят на VPS: gunicorn под systemd за Nginx. Перед выкладкой выставьте DEBUG=False и ALLOWED_HOSTS, затем запустите manage.py check --deploy: команда сама укажет небезопасные настройки.

Положите Dockerfile в корень репозитория: сборка, SSL и домен подключаются без своего сервера.

Настройки Django перед запуском на сервере

01 · 1 мин

Установка Django на Ubuntu: окружение и первый проект#

  1. Поставьте venv. На Ubuntu пакет с виртуальными окружениями ставится отдельно: sudo apt install python3-venv.
  2. Создайте окружение в каталоге проекта и включите его, чтобы библиотеки не смешивались с системными.
  3. Установите Django, gunicorn и драйвер PostgreSQL и сразу сохраните список зависимостей.
  4. Создайте проект. Точка в конце команды кладёт manage.py в текущий каталог.
python3 -m venv .venv
source .venv/bin/activate
pip install django gunicorn "psycopg[binary]"
pip freeze > requirements.txt
django-admin startproject config .

Проверка: python manage.py runserver откроет сайт на порту 8000, но только для разработки. На сервере его заменяет gunicorn, как в разделах ниже.

02 · 1 мин

Куда деплоить Django: App Platform, VPS или Docker#

ВариантПодходит, еслиЧто делать самому
App PlatformОдин сайт, нужен деплой из Git без админстваDockerfile, внешняя база, S3 для файлов
VPS без DockerРядом Celery, Redis, cron, свои пакетыgunicorn, Nginx, обновления системы
VPS с Docker ComposeНесколько проектов, нужен одинаковый запуск вездеcompose-файл, тома, резервные копии

Платформа в Таймвеб Клауд принимает Docker-приложения из Git, тарифы от 1 ₽ в месяц на 14 октября 2026. Если нужна своя среда, то для старта хватит VPS с 1 ядром и 2 ГБ памяти: MSK Ultra 30 стоит 3 000 ₽ в месяц. Каждый воркер gunicorn держит копию проекта в памяти, а PostgreSQL на том же сервере забирает свою долю, поэтому при росте добавляйте память раньше ядер. Общий разбор площадок: хостинг с поддержкой Python.

Инструмент · 1 мин

Настройки Django перед запуском на сервере#

Основа проекта из startproject рассчитана на разработку. Для сервера значения читают из переменных окружения, а секреты не хранят в репозитории:

import os
DEBUG = os.environ.get('DJANGO_DEBUG') == '1'
SECRET_KEY = os.environ['DJANGO_SECRET_KEY']
ALLOWED_HOSTS = os.environ['DJANGO_ALLOWED_HOSTS'].split(',')
CSRF_TRUSTED_ORIGINS = ['https://example.com']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
STATIC_ROOT = BASE_DIR / 'static'

Строка с SECURE_PROXY_SSL_HEADER нужна, когда HTTPS принимает прокси перед gunicorn: без неё Django считает соединение небезопасным. Команда python manage.py check --deploy перечисляет всё, что ещё стоит поправить.

Django перед выкладкой на сервер

Отмечайте пункты по мере готовности, подсказка покажет следующий шаг

04 · 1 мин

Django в Docker: Dockerfile, gunicorn и PostgreSQL#

FROM python:3.13-slim
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["sh", "-c", "python manage.py migrate && python manage.py collectstatic --noinput && gunicorn config.wsgi:application -b 0.0.0.0:8000"]

Миграции и сбор статики выполняются при запуске, а не при сборке образа: на этапе сборки переменных окружения ещё нет, и настройки с обязательным SECRET_KEY не загрузятся. Без Nginx статику отдаёт пакет WhiteNoise, его добавляют в MIDDLEWARE сразу после SecurityMiddleware.

services:
  web:
    build: .
    env_file: .env
    depends_on: [db]
    ports: ['127.0.0.1:8000:8000']
  db:
    image: postgres:17
    env_file: .env
    volumes: [pgdata:/var/lib/postgresql/data]
volumes:
  pgdata:

Порт открыт только на локальном адресе: наружу сайт выходит через Nginx или Caddy. Файлы, загруженные пользователями, хранят в S3 через пакет django-storages: гигабайт стоит 1 ₽ в месяц на 14 октября 2026.

05 · 1 мин

Деплой Django на VPS: gunicorn, Nginx и статика#

Служба systemd для Django пишется так же, как для любого Python-приложения, образец лежит на странице хостинг с поддержкой Python. Меняется одна строка: gunicorn config.wsgi:application.

Перед запуском выполните python manage.py migrate и collectstatic. Nginx отдаёт статику и media напрямую, а динамику передаёт gunicorn:

server {
    server_name example.com;
    location /static/ { alias /srv/app/static/; }
    location /media/ { alias /srv/app/media/; }
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Сертификат выпустит Certbot, а если хочется обойтись без ручной настройки, Caddy делает это сам. Базу ставьте по инструкции установка PostgreSQL или берите управляемую от 790 ₽ в месяц, копии настройте до первого обновления.

06 · 1 мин

Вопросы о хостинге для Django#

Как развернуть Django на сервере с нуля?

Создать виртуальное окружение, поставить зависимости, выставить DEBUG=False и ALLOWED_HOSTS, выполнить migrate и collectstatic, запустить gunicorn под systemd и поставить перед ним Nginx с HTTPS.

Почему Django на сервере не показывает статику после выключения DEBUG?

При DEBUG=False Django статику не отдаёт. Выполните collectstatic и раздайте каталог STATIC_ROOT через Nginx или подключите WhiteNoise.

Можно ли оставить SQLite для Django на сервере?

Для небольшого сайта с редкими записями можно, если файл базы лежит на постоянном диске или в томе. Для нескольких воркеров и роста нагрузки переходят на PostgreSQL.

Что делать, если Django отвечает 400 Bad Request на сервере?

Чаще всего домена нет в ALLOWED_HOSTS. Для форм по https проверьте ещё CSRF_TRUSTED_ORIGINS: адрес пишется вместе со схемой.

Нужен ли Docker для запуска Django на VPS?

Нет, хватит venv и systemd. Docker нужен платформе деплоя и удобен, когда на сервере живёт несколько проектов с разными версиями Python.

Почему этому можно верить

Как мы проверяли

Цены с сайта провайдераСняты вручную, у каждой цены указана дата проверки.
Всё можно повторитьКоманды и расчёты описаны так, что их повторит любой читатель.
Независимый справочникНе связан с разработчиками приложений и провайдерами и пишет о минусах тоже.

Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; App Platform Таймвеб Клауд, timeweb.cloud/services/apps, проверено 14 октября 2026; Облачные базы данных Таймвеб Клауд, timeweb.cloud/services/dbaas, проверено 14 октября 2026.

SBРедакция SelfBase · обновлено 16 октября 2026

Задеплойте приложение из репозитория

Подключите репозиторий, выберите фреймворк или Docker, домен и SSL выдаются сразу.

  • React, Vue, Next.js, Nuxt, Angular, Svelte
  • Любой стек через Docker
  • Откат к прошлой версии одной кнопкой
  • Бесплатный SSL с автопродлением
Настройки