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

Как бесплатно разместить Python‑сайт на Heroku

8 min read Веб-хостинг Обновлено 09 Jan 2026
Бесплатный хостинг Python на Heroku
Бесплатный хостинг Python на Heroku

Иллюстрация: размещение Python-портфолио на Heroku

Вы только что завершили простое портфолио на Python и хотите бесплатно опубликовать его в интернете. Heroku — популярный PaaS (Platform as a Service), который упрощает деплой приложений: он берёт на себя поддержку инфраструктуры и позволяет вам сосредоточиться на коде.

Этот материал объясняет весь процесс шаг за шагом. Предполагается базовое знание Python и одного из фреймворков (в примерах используется Django). Примеры рассчитаны на Python 3.7 и Django 2.1.7, но подходы применимы и для других версий с небольшими изменениями.

Зачем выбирать Heroku

Heroku упрощает публикацию приложений и управляет «dynos» — контейнерами, где работает ваш код. Бесплатный уровень удобен для портфолио, демонстрационных проектов и экспериментов. Основные плюсы:

  • Простая интеграция с Git и автоматический установщик зависимостей (requirements.txt).
  • Быстрый старт: создание приложения и запуск занимают минуты.
  • Удобная панель управления и buildpack‑ая архитектура.

Ограничения бесплатного уровня:

Важно: бесплатные dyno могут «спать» при простое и имеют ограничения по ресурсам и времени запуска. Если ожидаете высокий трафик или постоянную доступность — подумайте о платном тарифе.

Альтернативы: Amazon Web Services, PythonAnywhere, Vercel (для отдельных стэк‑ов), DigitalOcean App Platform. Эти платформы имеют свои особенности и порог вхождения — в статье в разделе «Альтернативные подходы» мы сравним их с Heroku.

Краткие термины

  • Dyno: единица вычислительных ресурсов на Heroku.
  • Buildpack: набор правил и скриптов, которые подготавливают ваше приложение для запуска.
  • Procfile: файл, указывающий Heroku, какие процессы запускать.

Подготовка: Git и Heroku CLI

  1. Установите Git: скачайте с https://git-scm.com/ и следуйте инструкциям для вашей ОС.
  2. Зарегистрируйтесь на Heroku: https://signup.heroku.com/.
  3. Установите Heroku CLI: https://devcenter.heroku.com/articles/heroku-cli. Он позволяет логиниться, создавать приложения и взаимодействовать с удалённым репозиторием.

Если вы не знакомы с Git: пройдите краткую вводную по версиям и основным командам (git init, git add, git commit, git push).

Создание и подготовка Django‑проекта

Если у вас ещё нет проекта, создайте виртуальное окружение и установите нужную версию Django:

pip install django==2.1.7

Создайте проект и приложение:

django-admin.py startproject project_name
python manage.py startapp app_name

Замените project_name и app_name на ваши имена. Для работы на Heroku потребуется WSGI‑сервер gunicorn:

pip install gunicorn

Добавьте gunicorn в зависимости (requirements.txt) и убедитесь, что в настройках проекта (settings.py) указаны необходимые переменные.

Добавление gunicorn в настройки проекта

Не забудьте выполнить миграции базы данных локально:

python manage.py migrate

Советы по локальной разработке:

  • Используйте виртуальные окружения (venv, virtualenv, pipenv, poetry).
  • Храните конфиденциальные настройки (SECRET_KEY, доступ к БД) в переменных окружения.
  • Тестируйте проект локально через python manage.py runserver перед деплоем.

Подготовка файлов для Heroku

Heroku смотрит на несколько ключевых файлов в корне проекта:

  1. requirements.txt — список зависимостей.
  2. Procfile — команда запуска.
  3. runtime.txt — (опционально) версия Python.

Создайте требования:

pip freeze > requirements.txt

Procfile: создайте файл с именем Procfile (без расширения) в корне проекта. В Windows иногда по умолчанию добавляется .txt — снимите расширение.

Удаление расширения .txt у Procfile в Windows

Откройте Procfile и добавьте строку (замените project_name на ваш проект):

web: gunicorn project_name.wsgi

Опционально создайте runtime.txt, чтобы указать версию Python:

python-3.7.6

Если не указывать runtime.txt, Heroku попытается применить дефолтную (обычно более новую) версию Python.

Регистрация приложения и сборка на Heroku

В командной строке выполните вход в Heroku:

heroku login

Создайте приложение (можете выбрать имя сами):

heroku create ademosapp2

Если имя занято, Heroku попросит выбрать другое. В панели Heroku вы увидите созданное приложение.

Панель Heroku с созданным приложением

Откройте settings.py вашего проекта и укажите допустимые хосты. В Django это переменная ALLOWED_HOSTS. Для быстрой проверки можно временно указать:

ALLOWED_HOSTS = ['*']

Важно: [‘*’] разрешает все хосты — это удобно для теста, но небезопасно для продакшена. Для публичного релиза указывайте конкретные домены.

В панели Heroku выберите приложение → Settings → Add buildpack и добавьте Python buildpack. Сохраните изменения.

Добавление Python buildpack в Heroku

Установите пакет django-heroku (упрощает интеграцию настроек Django с Heroku):

pip install django-heroku
pip freeze > requirements.txt

В settings.py импортируйте модуль и активируйте его в конце файла:

import django_heroku

# ... ваши настройки

django_heroku.settings(locals())
# убедитесь, что закомментируете или корректно настроите после деплоя

Примечание: django-heroku автоматически настраивает DATABASES (Postgres), STATIC_ROOT, логирование и другие параметры. Перед продакшен‑релизом проверьте конфигурации вручную.

Инициализация git, привязка к Heroku и первый пуш

Инициализируйте git‑репозиторий (если ещё не сделали):

git init
git add --all
git commit -m "initial-commit"

Привяжите удалённый репозиторий Heroku:

heroku git:remote -a ademosapp2

Установите переменную, чтобы временно отключить автоматический сбор статики (collectstatic), если он вызывает ошибки при первом деплое:

heroku config:set DISABLE_COLLECTSTATIC=1

И наконец, запушьте на Heroku:

git push heroku master

После успешного пуша приложение будет доступно по адресу https://app_name.herokuapp.com (замените app_name на ваше имя).

Домашняя страница Django после успешного деплоя

Тестирование и отладка после деплоя

Основные команды для мониторинга и отладки:

  • heroku logs –tail — поток логов в реальном времени.
  • heroku ps — статус dyno.
  • heroku run python manage.py migrate — запуск миграций на Heroku (если вы используете Heroku Postgres).

Частые ошибки и решения:

  • H10 (App crashed): проверьте Procfile и логи. Убедитесь, что gunicorn установлен и requirements.txt актуален.
  • Ошибки с collectstatic: либо исправьте конфигурацию staticfiles, либо временно выключите collectstatic (DISABLE_COLLECTSTATIC=1) и собирайте статику вручную.
  • Ошибки базы данных: проверьте DATABASE_URL в конфигурации Heroku и убедитесь, что выполняются миграции.

Безопасность и конфиденциальность

  • Не храните SECRET_KEY и пароли в settings.py — используйте переменные окружения (heroku config:set KEY=VALUE).
  • Настройте DEBUG = False для продакшна.
  • Ограничьте ALLOWED_HOSTS точными доменами.
  • Для пользовательских данных учтите требования локального законодательства по персональным данным (например, GDPR, если вы обрабатываете данные граждан ЕС).

Внимание: бесплатная среда ограничена уровнем безопасности и поддержкой. Для обработки персональных данных в продакшене рассмотрите платный тариф и сертификаты безопасности.

Альтернативные подходы и когда Heroku не подходит

Когда Heroku — хорошее решение:

  • Нужна быстрая публикация портфолио или демо.
  • Нет высоких требований по трафику и ресурсам.
  • Вы хотите минимальной конфигурации и интеграции с Git.

Когда рассмотреть альтернативы:

  • Если нужно постоянное время отклика и отсутствие «сна» dyno — Heroku free может быть неудобен.
  • Если у вас специфические требования к окружению (низкоуровневые зависимости, специфические системные пакеты) — VPS или контейнерные решения (DigitalOcean, AWS EC2, Kubernetes) дают больше контроля.

Коротко о вариантах:

  • AWS: гибкость и мощность, но выше порог вхождения.
  • PythonAnywhere: удобен для новичков и небольших проектов.
  • Vercel/Netlify: отличны для фронтенд‑ориентированных проектов и серверлесс‑функций.

Чек-лист для быстрого деплоя (SOP)

  1. Настроить виртуальное окружение и установить зависимости.
  2. Создать проект Django и выполнить migrate локально.
  3. Установить gunicorn и django-heroku.
  4. Сгенерировать requirements.txt.
  5. Создать Procfile и (опционально) runtime.txt.
  6. Зарегистрироваться на Heroku и установить Heroku CLI.
  7. heroku create и heroku git:remote -a .
  8. git add, git commit, git push heroku master.
  9. Проверить логи (heroku logs –tail) и устранить ошибки.
  10. Настроить переменные окружения и вернуть DEBUG=False.

Ролевые чек-листы

Для разработчика:

  • Проверил миграции локально.
  • Добавил gunicorn и обновил requirements.txt.
  • Проверил Procfile и runtime.txt.

Для менеджера или владельца проекта:

  • Утвердил безопасную конфигурацию (DEBUG=False, SECRET_KEY в env).
  • Проверил доменное имя и SSL (при необходимости покупал отдельный домен).

Для девопса:

  • Настроил автоматические бэкапы БД (если используются данные).
  • Настроил мониторинг и уведомления.

Миграция с бесплатного уровня на платный

Если проект растёт, переход на платный тариф обычно включает:

  • Переход на постоянные dyno (без «сна»).
  • Подключение кастомного домена и SSL.
  • Расширение баз данных (Heroku Postgres paid план).

Шаги для миграции:

  1. Перейдите в Dashboard → Resources и добавьте нужные add‑ons.
  2. Включите платный тариф для dyno в разделе Resources.
  3. Обновите конфигурации ALLOWED_HOSTS и произведите тестирование.

Критерии приёмки

  • Приложение доступно по https://.herokuapp.com и отображает ожидаемую страницу.
  • Логи не содержат критических ошибок при старте.
  • Миграции выполнены (если используются модели).
  • Переменные окружения настроены корректно (SECRET_KEY, DEBUG=False для прод).

Decision flow: стоит ли использовать Heroku для вашего проекта?

flowchart TD
  A[Нужен быстрый и бесплатный деплой?] -->|Да| B{Ожидаемый трафик}
  B -->|Низкий/тестовый| C[Использовать Heroku Free]
  B -->|Средний/высокий| D[Рассмотреть платный Heroku или VPS]
  A -->|Нет| E[Рассмотреть альтернативы: AWS, DigitalOcean, PythonAnywhere]
  D --> F[Планируйте миграцию: масштабируемая БД, постоянные dyno]

Частые ошибки и готовые тесты (acceptance)

  • Тест 1: Страница отвечает 200 → OK.
  • Тест 2: heroku logs –tail не показывает падения приложения при старте → OK.
  • Тест 3: Статические файлы загружаются корректно (если collectstatic включён) → OK.

Риски и минимальные меры по их снижению

  • Риск: утечка SECRET_KEY — мерa: хранить в переменных окружения.
  • Риск: простои из‑за спящего dyno — мерa: перейти на платные dyno.
  • Риск: проблемы с collectstatic — мерa: настроить WHITE_NOISE или правильный STATIC_ROOT заранее.

Локализация и особенности для русскоязычной аудитории

  • При регистрации на платформах учитывать правила передачи персональных данных при взаимодействии с пользователями из ЕС.
  • Локальные платёжные и доменные провайдеры актуальны для покупки домена и SSL в РФ/регионе; настройки в Heroku одинаковы для любой локали.

Когда Heroku не сработает: примеры

  • Нужна поддержка специфичных системных библиотек, которые невозможно установить через pip — лучше VPS/контейнер.
  • Требуются длительные фоновые задачи с высоким потреблением CPU — рассмотреть отдельные платные воркеры или специализированную инфраструктуру.

Краткое руководство по откату и аварийному восстановлению

  1. Если приложение перестало работать после пуша — откатиться на предыдущий коммит: git revert или git push heroku :master.
  2. Включите DEBUG=True временно только для отладки локально (не в продакшене).
  3. Проверьте логи и переменные окружения.

Заключение

Heroku остаётся удобным решением для быстрого и бесплатного размещения небольших Python/Django‑проектов. Для портфолио и демонстраций он практически идеален: простой workflow через Git, автоматическая установка зависимостей и понятная панель управления. Если проект перерастёт бесплатные ограничения, переход на платные тарифы или перенос на более гибкую инфраструктуру — естественный следующий шаг.

Итоговое резюме

  • Heroku подходит для быстрого бесплатного деплоя Python/Django приложений.
  • Подготовьте requirements.txt, Procfile и (опционально) runtime.txt.
  • Всегда храните секреты в переменных окружения и проверяйте DEBUG/ALLOWED_HOSTS перед релизом.

Ключевые выводы

  • Быстрый старт и простота интеграции с Git.
  • Ограничения бесплатного уровня (спящий dyno, ресурсы).
  • Альтернативы существуют и имеют свои преимущества для разных сценариев.
Поделиться: 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 — руководство