Бесплатное развёртывание Django на Vercel — пошаговое руководство
Важно: Vercel ориентирован на serverless и edge-ворклоады, но поддерживает Python-приложения через адаптеры. Для продуктивных проектов рассмотрите выделенный хостинг базы данных и резервные планы.
Подготовка Django-проекта для Vercel
Перед деплоем нужно настроить несколько частей проекта, чтобы Vercel корректно запустил WSGI-приложение и подключил базу данных.
Создайте файл vercel.json
В корне проекта добавьте vercel.json, который укажет Vercel, где найти ваш WSGI-объект:
{
"builds": [
{
"src": "django_app_name/wsgi.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": " /(.*)",
"dest": "django_app_name/wsgi.py"
}
]
}Замените django_app_name на имя пакета вашего проекта (папку, где лежит settings.py).
Примечание: синтаксис маршрутов задаёт перенаправление всех запросов в WSGI-обработчик. Проверьте корректность путей и права на чтение файлов в репозитории.
Измените wsgi.py
Vercel ожидает объект приложения с именем app. В файле wsgi.py достаточно присвоить application переменной app:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_blog.settings")
application = get_wsgi_application()
app = applicationЭто не меняет поведение Django — просто даёт Vercel ожидаемое имя переменной.
Подключение удалённой базы данных
Если приложение использует базу данных, её нужно разместить вне Vercel (платформа не предназначена для хранилища БД в пределах деплоя). Для прототипов подойдёт бесплатный кластер PostgreSQL на Railway или бесплатные планы других провайдеров.
Шаги для Railway (быстрая настройка):
- Зарегистрируйтесь на Railway.
- Нажмите Start a New Project.
- Выберите Provision PostgreSQL.
- Перейдите на карточку Postgres и откройте переменные соединения.
- Скопируйте DATABASE_URL и отдельные переменные (PGHOST, PGUSER, PGPASSWORD и т. п.).




ALT-тексты изображений выше описывают интерфейс Railway для развёртывания PostgreSQL и переменные подключения.
Рекомендуемые варианты конфигурации Django для подключения к PostgreSQL:
- Использование отдельных переменных окружения (NAME, USER, PASSWORD, HOST, PORT):
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('PGNAME'),
'USER': os.getenv('PGUSER'),
'PASSWORD': os.getenv('PGPASSWORD'),
'HOST': os.getenv('PGHOST'),
'PORT': os.getenv('PGPORT'),
}
}- Использование переменной DATABASE_URL с парсером dj-database-url (удобно для одной строки соединения):
# Установите: pip install dj-database-url
import dj_database_url
import os
DATABASES = {
'default': dj_database_url.config(default=os.getenv('DATABASE_URL'))
}Использование dj-database-url упрощает конфигурацию и корректно парсит SSL-параметры и дополнительные параметры соединения.
Совет по безопасности: храните секреты в переменных окружения (Environment Variables) в Vercel и не коммитьте .env в публичный репозиторий. Для локальной разработки используйте python-dotenv или похожие инструменты.
Деплой репозитория GitHub на Vercel
После подготовки файлов нужно подключить репозиторий к Vercel и развернуть проект.
Создайте requirements.txt
Vercel при сборке Python-проекта использует requirements.txt. Создайте файл на основе виртуального окружения:
pip freeze > requirements.txtПроверьте, что в файле есть необходимые зависимости: Django, psycopg2-binary (или psycopg2), dj-database-url (если вы используете его) и любые другие пакеты.
Подключение репозитория к Vercel
- Зарегистрируйтесь на сайте Vercel через аккаунт GitHub.
- Выберите Hobby для бесплатного использования сервисов.

- В панели нажмите Add New → Project.

- Нажмите Add GitHub Account и установите приложение Vercel для доступа к репозиториям. Также можно выбрать другой провайдер через Switch Git Provider.

- Разрешите доступ к репозиториям (All repositories → Install) и выберите нужный проект.

- Vercel автоматически обнаружит репозиторий с Django-проектом — нажмите Import напротив него.

- В разделе Environment Variables добавьте все переменные окружения (секретный ключ Django, DATABASE_URL или отдельные переменные PGNAME/PGUSER и т.д.). Укажите Name и Value для каждой переменной и нажмите Add.

- Нажмите Deploy. Через несколько минут приложение будет доступно по сгенерированному URL — нажмите на ссылку справа от иконки веба.

После первого развёртывания Vercel будет автоматически деплоить изменения при пуше в отслеживаемую ветку (обычно main).
Шаблонный чек-лист перед первым деплоем
- vercel.json в корне с корректным путём до wsgi.py
- wsgi.py содержит app = application
- requirements.txt актуален
- Все секреты и строки подключения добавлены в Environment Variables Vercel
- База данных доступна извне и разрешает подключения от Vercel (проверить ACL)
- STATIC/ media: подготовлен сбор статических файлов или используется CDN
- DEBUG=False и ALLOWED_HOSTS настроены
Что ещё учесть (стратегии, опасности и альтернативы)
Когда этот подход не подходит
- Проект требует постоянных TCP-соединений с долгоживущими воркерами (Vercel предпочитает бессерверные краткоживущие процессы).
- Нужна высокая производительность БД с высокой пропускной способностью и низкой задержкой — бесплатные кластеры могут быть недостаточны.
- Вы используете специфичные расширения PostgreSQL, которых нет у выбранного провайдера.
Альтернативы
- Heroku (платные тарифы после 2022 года), Render, Fly.io, DigitalOcean App Platform — подходят для более тяжёлых рабочих нагрузок.
- Для полностью статичных фронтов — Netlify или Vercel (без Django) + отдельный API (например, FastAPI на другом провайдере).
Модель принятия решения (кратко)
- Нужна быстрая демонстрация/портфолио → Vercel + Railway (быстро и бесплатно).
- Планируется рост и контроль над инфрастуктурой → VPS/managed DB (DigitalOcean/Hetzner/Cloud provider).
- Требуются background‑workers и долгие таски → выделенные серверы/Queue системы (RabbitMQ, Redis) с отдельным хостингом.
Руководство (SOP) — быстрый план действий
- Проверить локальную сборку: python manage.py check, миграции, сбор статики.
- Создать requirements.txt: pip freeze > requirements.txt.
- Добавить vercel.json и поправить wsgi.py.
- Настроить и протестировать подключение к базе на Railway (или другом провайдере).
- Создать публичный/приватный репозиторий и запушить код.
- Подключить репозиторий к Vercel, задать Environment Variables.
- Нажать Deploy и мониторить логи.
- Тестировать URL, проверять миграции и функциональные сценарии.
Отладка — частые ошибки и решения
- Ошибка импорта модуля Django при сборке: проверьте PYTHONPATH, убедитесь, что структура проекта соответствует путям в vercel.json.
- База данных не подключается: проверьте правильность переменных окружения, разрешение IP или необходимость SSL в строке подключения.
- application not found / wrong entrypoint: убедитесь, что wsgi.py экспортирует app = application.
- Отсутствие зависимостей: убедитесь, что pip freeze сделал корректный requirements.txt и нет локальных путей.
Совет: при неверном развёртывании посмотрите логи сборки в Vercel — они показывают ошибки установки зависимостей и выполнения миграций.
Безопасность и эксплуатация
- Не храните SECRET_KEY в репозитории. Используйте Environment Variables.
- Настройте DEBUG=False в production и корректно заполните ALLOWED_HOSTS.
- Для PostgreSQL используйте SSL/TLS, если провайдер требует (обычно указывается в DATABASE_URL).
- Примите политику резервного копирования для базы данных (Railway и другие провайдеры обычно предлагают бэкапы).
Критерии приёмки
- Сайт отвечает 200 на главную страницу.
- Пользовательская функциональность (регистрация/логин/CRUD) работает через удалённую БД.
- Статические файлы доступны (статический контент отображается корректно).
- Конфиденциальные ключи не в репозитории и настроены в переменных Vercel.
Тест-кейсы и приёмочные сценарии
- Регистрация нового пользователя — данные сохраняются в удалённой БД.
- Авторизация — вход успешен, сессии корректно работают.
- CRUD-операции над сущностью — создать, прочитать, обновить, удалить.
- Падение БД — приложение корректно отклоняет запросы и логирует ошибку.
Шаблон таблицы переменных окружения (copy/paste)
| Переменная | Описание |
|---|---|
| SECRET_KEY | Секрет Django, хранить в Vercel |
| DATABASE_URL | Полная строка подключения для dj-database-url |
| PGNAME, PGUSER, PGPASSWORD, PGHOST, PGPORT | Альтернативный набор переменных для явной конфигурации |
| DEBUG | False в production |
Маленький словарь (1 строка термина)
- WSGI — интерфейс между веб-сервером и приложением в Python.
- DATABASE_URL — единая строка подключения к базе данных.
- dj-database-url — утилита для парсинга DATABASE_URL в Django-формат.
Решение «когда мигрировать с Vercel»
Если проект перерастает прототип и требует:
- фоновых рабочих процессов,
- гарантированной производительности БД,
- сложной сетевой конфигурации, то стоит перенести бэкенд на платный managed-хостинг или VPS и оставить фронт на Vercel.
Превью для соцсетей и краткое объявление
OG title: Бесплатный деплой Django на Vercel OG description: Разверните портфолио или прототип на Django в несколько шагов: vercel.json, wsgi.py, подключение PostgreSQL и деплой из GitHub.
Короткое объявление (для рассылки): Разверните свой Django-проект бесплатно на Vercel за 15–30 минут: следуйте чек-листу, подключите Railway PostgreSQL и импортируйте репозиторий из GitHub.
FAQ
Можно ли использовать SQLite на Vercel?
Нет. SQLite хранится в файловой системе экземпляра, который при перезапусках и масштабировании не гарантирует сохранность данных. Для production используйте внешнюю СУБД.
Нужен ли отдельный сервер для медиафайлов?
Рекомендуется хранить загружаемые файлы в объектном хранилище (S3, DigitalOcean Spaces) или CDN — файловая система деплоя может быть временной.
Как обновлять сайт после изменений в коде?
Достаточно запушить коммиты в отслеживаемую ветку (обычно main). Vercel автоматически запустит новый деплой.
Краткое резюме: Vercel — удобный и быстрый способ бесплатно показать живой Django‑проект. Для простых портфолио и прототипов достаточно настроить vercel.json, передать app в wsgi.py, подключить удалённую БД и импортировать репозиторий из GitHub. Для продакшена продумайте безопасность, резервные копии и возможный переход на более специализированный хостинг.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone