Автоопределение Django
Платформа находит django в requirements.txt и собирает проект сама - без Dockerfile и настройки wsgi-сервера вручную.
Django-проект готов, а разбираться в серверах, wsgi и nginx не хочется? Подключите репозиторий - Dada Cloud увидит django в requirements.txt, соберёт проект и запустит. PostgreSQL создаётся рядом, HTTPS-домен выдаётся сразу. Бесплатный тариф, серверы в России.
Платформа находит django в requirements.txt и собирает проект сама - без Dockerfile и настройки wsgi-сервера вручную.
Managed-база создаётся рядом, DATABASE_URL появляется в переменных окружения - остаётся указать её в settings.py.
Проект получает адрес вида имя.dada-tuda.ru с сертификатом. Не забудьте добавить его в ALLOWED_HOSTS.
Приложение должно слушать 0.0.0.0 и порт из переменной PORT, по умолчанию - 8000.
Процесс перезапускается автоматически после падения.
Первый проект можно держать бесплатно, без привязки карты.
Шесть шагов от репозитория до рабочего адреса — включая базу, статику и миграции.
В requirements.txt должен быть django — по нему платформа опознаёт проект и берёт стандартный порт 8000. Добавьте туда же gunicorn и, при необходимости, dj-database-url с whitenoise.
Укажите имя приложения и подключите GitHub-репозиторий — либо загрузите zip-архив, если git не используете. Каждый пуш будет собирать новую версию.
Managed-база поднимается в один клик, DATABASE_URL появляется в переменных окружения. В settings.py прочитайте её — например через dj-database-url.
SECRET_KEY, DEBUG=False и список доменов задаются в консоли. Выданный адрес обязательно добавьте в ALLOWED_HOSTS, иначе Django ответит ошибкой 400.
Команда старта вида manage.py migrate --noinput && manage.py collectstatic --noinput && gunicorn проект.wsgi --bind 0.0.0.0:$PORT закрывает все три задачи разом. Платформа выполняет её как есть.
Через 1-2 минуты проект доступен по HTTPS-адресу вида имя.dada-tuda.ru. Свой домен добавляется за пару минут, сертификат выпускается автоматически.
Реальные тарифы платформы и честное сравнение с арендой своего VPS.
| Тариф | Цена | Что входит |
|---|---|---|
| Free | 0 ₽/мес | Один проект с базой и доменом, без привязки карты. Ограничение — по объёму ресурсов, а не по сроку. |
| Startup | 990 ₽/мес | 5 приложений, 2 базы данных, бэкапы 7 дней — сайт с реальными пользователями плюс воркер Celery. |
| Business | 2 900 ₽/мес | 20 приложений, 10 баз данных, бэкапы 30 дней, приоритетная поддержка. |
| Свой VPS | сравнимо по железу | VPS дешевле по железу. Но gunicorn под systemd, nginx, сертификаты, бэкапы базы и перезапуск после падения — это ваше время. |
Три места, где Django-деплой обычно спотыкается.
Django отвечает ошибкой 400 на домен, которого нет в ALLOWED_HOSTS. Добавьте туда и выданный адрес вида имя.dada-tuda.ru, и свой домен, если подключаете его.
MEDIA_ROOT на локальном диске очищается при новой сборке. Пользовательские загрузки храните в объектном хранилище, на диск приложения кладите только собранную статику.
Платформа не угадывает, когда накатывать схему. Впишите manage.py migrate в команду запуска — тогда каждый деплой приводит базу в актуальное состояние.
В Dada Cloud: подключаете репозиторий, платформа сама определяет Django, собирает и запускает проект. Настраивать сервер, wsgi и nginx не нужно.
Создайте managed PostgreSQL рядом с проектом - платформа прокинет DATABASE_URL в переменные окружения, останется прочитать её в settings.py (например через dj-database-url).
Добавьте выданный домен в ALLOWED_HOSTS, а приложение запускайте на 0.0.0.0 и порту из переменной окружения PORT (по умолчанию 8000).
Как привыкли - manage.py migrate при старте приложения или вручную. Платформа не вмешивается в ваш код запуска.
Да, первый проект с PostgreSQL и доменом можно держать на бесплатном тарифе без привязки карты.
Соберите статику при сборке или при старте (manage.py collectstatic --noinput) и раздавайте её через WhiteNoise — это одна зависимость и одна строка в MIDDLEWARE. Медиафайлы пользователей кладите в объектное хранилище: локальный диск при новом деплое очищается.
Да, для боевого запуска: пропишите gunicorn в requirements.txt и стартуйте командой gunicorn проект.wsgi --bind 0.0.0.0:$PORT. Встроенный runserver предназначен для разработки и под нагрузкой не годится.
В переменных окружения приложения — они задаются в консоли и попадают в процесс при старте. В settings.py читайте их через os.environ, в репозиторий секреты класть не нужно.
Воркер Celery заводится как отдельное приложение в режиме «фоновый воркер» — публичного домена ему не выдаётся. Веб-часть и воркер живут в одном проекте и видят одну и ту же базу.
Создайте аккаунт и разверните первое приложение. План Free — 0 ₽.