Главная/Разработка/Django
Хостинг для Django: установка и деплой на сервер
Хостинг для Django выбирают из двух вариантов: платформа деплоя из Git с Dockerfile, где не нужно администрировать систему, или VPS, где gunicorn работает под systemd за Nginx. Внутри любого варианта одинаковый набор: выключенный DEBUG, список ALLOWED_HOSTS, PostgreSQL вместо SQLite и отдельное место для статики и загрузок.
Ответ за 30 секунд
Без администрирования Django отправляют на платформу деплоя с Dockerfile, а вместе с Celery, Redis и своей PostgreSQL ставят на VPS: gunicorn под systemd за Nginx. Перед выкладкой выставьте DEBUG=False и ALLOWED_HOSTS, затем запустите manage.py check --deploy: команда сама укажет небезопасные настройки.
Положите Dockerfile в корень репозитория: сборка, SSL и домен подключаются без своего сервера.
Настройки Django перед запуском на сервере8000порт gunicorn в примерах
check --deployпроверка настроек перед выкладкой
от 1 ₽App Platform в месяц на 14.10
01 · 1 мин
Установка Django на Ubuntu: окружение и первый проект#
- Поставьте venv. На Ubuntu пакет с виртуальными окружениями ставится отдельно:
sudo apt install python3-venv. - Создайте окружение в каталоге проекта и включите его, чтобы библиотеки не смешивались с системными.
- Установите Django, gunicorn и драйвер PostgreSQL и сразу сохраните список зависимостей.
- Создайте проект. Точка в конце команды кладёт 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.
Задеплойте приложение из репозитория
Подключите репозиторий, выберите фреймворк или Docker, домен и SSL выдаются сразу.
- React, Vue, Next.js, Nuxt, Angular, Svelte
- Любой стек через Docker
- Откат к прошлой версии одной кнопкой
- Бесплатный SSL с автопродлением