Гид по технологиям

Бесплатное развёртывание Django на Vercel — пошаговое руководство

7 min read DevOps Обновлено 09 Jan 2026
Бесплатный деплой Django на Vercel
Бесплатный деплой 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 (быстрая настройка):

  1. Зарегистрируйтесь на Railway.
  2. Нажмите Start a New Project.
  3. Выберите Provision PostgreSQL.
  4. Перейдите на карточку Postgres и откройте переменные соединения.
  5. Скопируйте DATABASE_URL и отдельные переменные (PGHOST, PGUSER, PGPASSWORD и т. п.).

Railway PostgreSQL homepage

Railway database options

PostgreSQL banner

Railway connection variables

ALT-тексты изображений выше описывают интерфейс Railway для развёртывания PostgreSQL и переменные подключения.

Рекомендуемые варианты конфигурации Django для подключения к PostgreSQL:

  1. Использование отдельных переменных окружения (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'),
    }
}
  1. Использование переменной 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

  1. Зарегистрируйтесь на сайте Vercel через аккаунт GitHub.
  2. Выберите Hobby для бесплатного использования сервисов.

Vercel signup

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

Vercel dashboard

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

GitHub installation dashboard

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

GitHub account import

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

Vercel dashboard with repositories

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

Vercel deployment dashboard

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

App deployment dashboard on Vercel

После первого развёртывания 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) — быстрый план действий

  1. Проверить локальную сборку: python manage.py check, миграции, сбор статики.
  2. Создать requirements.txt: pip freeze > requirements.txt.
  3. Добавить vercel.json и поправить wsgi.py.
  4. Настроить и протестировать подключение к базе на Railway (или другом провайдере).
  5. Создать публичный/приватный репозиторий и запушить код.
  6. Подключить репозиторий к Vercel, задать Environment Variables.
  7. Нажать Deploy и мониторить логи.
  8. Тестировать 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.

Тест-кейсы и приёмочные сценарии

  1. Регистрация нового пользователя — данные сохраняются в удалённой БД.
  2. Авторизация — вход успешен, сессии корректно работают.
  3. CRUD-операции над сущностью — создать, прочитать, обновить, удалить.
  4. Падение БД — приложение корректно отклоняет запросы и логирует ошибку.

Шаблон таблицы переменных окружения (copy/paste)

ПеременнаяОписание
SECRET_KEYСекрет Django, хранить в Vercel
DATABASE_URLПолная строка подключения для dj-database-url
PGNAME, PGUSER, PGPASSWORD, PGHOST, PGPORTАльтернативный набор переменных для явной конфигурации
DEBUGFalse в 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. Для продакшена продумайте безопасность, резервные копии и возможный переход на более специализированный хостинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство