Почему обычный хостинг подходит плохо
Обычный (виртуальный) хостинг рассчитан на сайты, которые состоят из готовых файлов и скриптов, запускаемых сервером при запросе. Чаще всего он ориентирован на PHP, как у большинства CMS. Django устроен иначе: это долгоживущее приложение, которое запускается один раз и обрабатывает запросы.
Из-за этого на обычном хостинге могут возникнуть проблемы:
- Python может не поддерживаться вовсе или поддерживаться в ограниченном виде.
- Нельзя выбрать версию Python и поставить любые библиотеки.
- Нет доступа к настройке веб-сервера и фоновых процессов.
- Нельзя запустить отдельные службы вроде очереди задач.
Какие именно возможности есть у конкретного хостера, зависит от тарифа. Это нужно уточнять у него до оплаты. Тарифы обычного хостинга собраны на странице хостинга для сайта: там от 147 ₽ в месяц, но поддержку Python и Django по тарифам мы не сравниваем.
Что нужно Django-проекту
Проект на Django в рабочем режиме состоит из нескольких частей:
- Python и виртуальное окружение. Виртуальное окружение (venv) — это отдельная папка с библиотеками именно вашего проекта. Она не пересекается с системными пакетами.
- Gunicorn. Это сервер приложений: он запускает код Django и отвечает на запросы. Встроенный
runserverпредназначен для разработки, а на рабочем сервере его не используют, об этом сказано в документации Django. - Nginx. Это веб-сервер, который стоит перед gunicorn: принимает запросы из интернета, отдаёт статические файлы (картинки, стили) и передаёт остальное приложению. Также на нём настраивают HTTPS.
- База данных. Для разработки подходит SQLite, но для работающего проекта чаще ставят PostgreSQL или другую серверную СУБД.
- Служба, которая держит приложение запущенным. Обычно это systemd: она стартует gunicorn при загрузке и перезапускает при сбое.
- HTTPS-сертификат. Подробности есть в статье бесплатный SSL на VPS.
Перед выходом в рабочий режим пройдите официальный чек-лист развёртывания Django (адрес в sources): в нём про DEBUG = False, секретный ключ и допустимые хосты (ALLOWED_HOSTS).
Самая частая ошибка новичков: оставить
DEBUG = Trueна рабочем сервере. В этом режиме Django при ошибках показывает посетителям подробности вашего кода и настроек.
VPS как стандартный путь
VPS даёт полный доступ к системе, поэтому на нём можно поставить всё перечисленное. Это обычный путь для Django: вы выбираете версию Python, ставите нужные библиотеки и настраиваете службы под проект. Что такое VPS, коротко описано в статье что такое VPS.
Цена за свободу такая: сервер придётся настраивать самому. Нужно обновлять систему, следить за безопасностью, делать копии. В базе 70 тарифов VPS у 11 хостеров, от 140 ₽ в месяц. Подходящие под Python варианты собраны на странице VPS для Python.
Если вы не хотите настраивать сервер вручную, можно запустить проект в контейнерах Docker: установка Docker на VPS.
Сколько ресурсов нужно
Для небольшого проекта, например для сайта-визитки, личного кабинета с малым числом посетителей или учебного проекта, достаточно 1 ядра и 2 ГБ памяти. Память нужна и самому приложению, и базе данных, и nginx. Для работы с несколькими процессами gunicorn и базой запас лучше не урезать.
Увеличивайте ресурсы, если:
- посетителей становится больше, и ответы замедляются;
- проект использует тяжёлые вычисления или обработку файлов;
- на этом же сервере работают очередь задач, кэш и база.
Для конфигурации «2 ядра, 4 ГБ» цены в базе идут от 650 ₽ до 1 800 ₽ в месяц. Подбор по параметрам: конфигурация 2 ядра, 2 ГБ и подбор VPS.
Порядок развёртывания в общих чертах
- Закажите VPS с Ubuntu 24.04 и выполните первую настройку.
- Создайте пользователя, поставьте
python3,python3-venv,nginxи базу данных. - Залейте код проекта, создайте виртуальное окружение и поставьте зависимости из
requirements.txt. - Настройте переменные окружения: секретный ключ, параметры базы,
DEBUG=False. - Выполните миграции (
python manage.py migrate) и соберите статику (python manage.py collectstatic). - Запустите gunicorn как службу systemd и настройте nginx как прокси перед ним.
- Подключите домен и HTTPS.
- Настройте резервные копии базы и загруженных файлов.
Для запуска службы можно ориентироваться на пример из статьи сервер для Telegram-бота: принцип тот же, меняется только команда запуска.
Что проверить после запуска
- Сайт открывается по HTTPS, а адрес без шифрования перенаправляет на защищённый.
- В браузере при ошибке показывается обычная страница, а не отладочная.
- После перезагрузки сервера приложение поднимается само: проверьте командой
sudo rebootи повторным входом. - Загруженные пользователями файлы и база попадают в резервную копию.
- Система обновляется: раз в какое-то время выполняйте
sudo apt update && sudo apt upgrade.
Что делать дальше
- Подберите VPS на странице VPS для Python или в подборе по параметрам.
- Сравните, подойдёт ли вам хостинг: VPS или хостинг.
- Подключите домен: хостинг с доменом.
Цены в базе сверены 5 октября 2026 года.
