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

Бесплатный хостинг Python‑сайта на Heroku — пошаговое руководство

8 min read Хостинг Обновлено 30 Dec 2025
Бесплатный хостинг Python на Heroku — как развернуть
Бесплатный хостинг Python на Heroku — как развернуть

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

Важно: инструкция основана на исходных предположениях автора (Python 3.7, Django 2.1.7). Перед развёртыванием проверьте версии и совместимость пакетов.

Почему выбрать Heroku?

Heroku — это платформа как услуга (PaaS), которая скрывает от вас низкоуровневую инфраструктуру и работает через «dyno» (контейнеры для приложений). Плюсы для быстрого размещения портфолио:

  • Простая интеграция с Git; деплой — одной командой.
  • Быстрая настройка buildpack для Python.
  • Нет необходимости настраивать виртуальные машины и балансировщики для простого проекта.

Ограничения бесплатных тарифов (типичные для подобных сервисов): ограничения по ресурсам, возможный спящий режим dyno при простое, лимиты на количество инстансов. Если вы планируете серьёзную нагрузку или гарантированные SLA — стоит рассмотреть платные решения.

Кому подходит этот гайд

Этот материал рассчитан на разработчиков, у которых есть базовые навыки Python и знакомство с Django. Если вы совсем новичок в Git — сначала пройдите краткий урок по системе контроля версий.

Перед началом — что проверить

  • Наличие виртуального окружения (venv/virtualenv) и установленного Python (рекомендовано использовать версию, совместимую с вашим стеком).
  • Установлен Git и настроен локальный репозиторий.
  • Зарегистрирован аккаунт на Heroku и установлен Heroku CLI.
  • Ваш проект корректно запускается локально (manage.py runserver) и миграции применяются.

Установка Git и Heroku CLI

  1. Скачайте и установите Git с официального сайта git-scm. Следуйте инструкциям для вашей ОС.
  2. Зарегистрируйтесь на Heroku, если у вас ещё нет аккаунта.
  3. Скачайте и установите Heroku CLI с официального сайта Heroku.

После установки проверьте версии:

git --version
heroku --version
python --version

Если вы не уверены с командами Git, ознакомьтесь с кратким руководством по командам git init, git add, git commit, git push.

Создание и настройка проекта Django

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

python -m venv venv
# на Windows
venv\Scripts\activate
# на macOS / Linux
source venv/bin/activate

pip install django==2.1.7

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

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

Замените project_name и app_name на ваши имена. Установите gunicorn — WSGI‑сервер, который используют в продакшне на Heroku:

pip install gunicorn

Не путайте gunicorn с добавлением в INSTALLED_APPS — gunicorn не является Django‑приложением, поэтому его не нужно включать в INSTALLED_APPS. (Если в вашем проекте есть сторонние пакеты, убедитесь, что они корректно указаны в requirements.txt — см. ниже.)

Выполните миграции локально:

python manage.py migrate

Проверьте локальный запуск:

python manage.py runserver

Если сайт работает локально, можно готовить файлы для Heroku.

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

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

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

Создайте requirements.txt:

pip freeze > requirements.txt

Procfile — файл без расширения, с единой строкой, описывающей веб‑процессы. В корне проекта создайте файл Procfile и добавьте:

web: gunicorn project_name.wsgi

Где project_name — ваш Django‑проект (папка с settings.py).

Если вы создаёте Procfile на Windows и видите расширение .txt, включите отображение расширений в проводнике (View → File name extensions), затем уберите расширение .txt.

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

python-3.7.6

Если не указывать, Heroku попытается использовать поддерживаемую версию Python по умолчанию.

Настройки Django для размещения

  1. Откройте settings.py и в DEBUG установите False перед продакшеном. Для тестового бесплатного хостинга можно временно оставить DEBUG=True, но это рискованно для публичного сайта.
  2. Настройте ALLOWED_HOSTS:
ALLOWED_HOSTS = ['*']

Использование ‘*’ удобно для разработки, но в продакшене лучше указывать конкретные домены.

  1. Для простой интеграции с Heroku можно использовать пакет django-heroku. Установите его:
pip install django-heroku
pip freeze > requirements.txt

Затем в settings.py добавьте в конец:

import django_heroku

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

Важно: django-heroku автоматически настраивает DATABASES и другие параметры под Heroku. Если вы предпочитаете контролировать все параметры вручную — не используйте автоматическую конфигурацию и настройте настройки подключения к базе и staticfiles сами.

Развёртывание на Heroku — шаг за шагом

  1. Войдите в Heroku через CLI:
heroku login
  1. Создайте приложение (замените имя приложения на своё):
heroku create my-portfolio-app
  1. Свяжите удалённый репозиторий Heroku (если не создан автоматически):
heroku git:remote -a my-portfolio-app
  1. Инициализируйте git (если ещё не):
git init
git add --all
git commit -m "initial commit"
  1. Предотвратите ошибки сборки связанных со статическими файлами Django (если хотите отложить collectstatic):
heroku config:set DISABLE_COLLECTSTATIC=1
  1. Отправьте код в Heroku:
git push heroku master
  1. Просмотрите логи в реальном времени, если потребуется отладка:
heroku logs --tail
  1. Откройте приложение в браузере:
heroku open

Или вручную: https://my-portfolio-app.herokuapp.com

Django — стартовая страница, которую вы должны увидеть

Добавление buildpack и другие настройки в Dashboard

В панели управления Heroku (Dashboard) откройте приложение → Settings → Add buildpack → выберите Python и нажмите Save changes. Это нужно, если Heroku не распознал автоматически ваш проект как Python.

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

Также в Dashboard можно подключать переменные окружения (Config Vars), настраивать домены, просматривать метрики и логирование.

Типичные ошибки и способы устранения

  1. Ошибка при запуске Procfile: файл имеет расширение (Procfile.txt) или неверный путь к wsgi. Проверьте имя файла и строку web: gunicorn project_name.wsgi.
  2. collectstatic падает: если Django пытается собрать статические файлы, но не настроены STATIC_ROOT или отсутствует пакет whitenoise, лучше временно отключить collectstatic с DISABLE_COLLECTSTATIC=1 и настроить сбор статических отдельно.
  3. Миграции базы данных: если вы используете базу данных Heroku Postgres, выполните heroku run python manage.py migrate.
  4. Проблемы с зависимостями: убедитесь, что все пакеты из requirements.txt совместимы с выбранной версией Python.
  5. Разное поведение локально и на Heroku: проверьте переменные окружения и DEBUG.

Команды для отладки:

heroku logs --tail
heroku run bash
heroku run python manage.py migrate
heroku config --app my-portfolio-app

Что делать после успешного развёртывания

  • Настройте переменные окружения (например, SECRET_KEY, настройки базы) через Heroku Dashboard → Settings → Config Vars.
  • Подумайте о serving static: используйте WhiteNoise или CDN для статических файлов.
  • Настройте резервные копии и мониторинг, если на проекте появилась полезная информация пользователей.

Миграция на платный план и подключение домена

Если вы хотите подключить собственный домен или масштабировать приложение, Heroku предоставляет платные тарифы и простую привязку доменов через Dashboard → Settings → Domains. Помните, что домен и платные dyno оплачиваются отдельно.

Когда Heroku не подходит — альтернативы и причины

Heroku удобен для быстрых проектов и прототипов. Однако рассмотрите другие варианты, если:

  • Нужны гарантированные ресурсы и контроль над инфраструктурой.
  • Проект требует специфичной сетевой конфигурации.
  • Требуется низкая латентность работы с файловой системой или специфичные фичи уровня VM.

Альтернативы: AWS Elastic Beanstalk, DigitalOcean App Platform, Render, PythonAnywhere, Vercel/Netlify (подходит для фронтенда), самоуправляемые VPS. Каждый сервис имеет свои плюсы и минусы по цене, управлению и функционалу.

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

  • Никогда не хардкодьте секретные ключи в settings.py. Используйте переменные окружения (Heroku Config Vars).
  • Для сбора персональных данных убедитесь, что политики конфиденциальности соответствуют требованиям локального законодательства (например, GDPR в ЕС).
  • Переведите DEBUG в False перед открытием публичного сайта.

Контроль версий и CI/CD (рекомендации)

  • Храните код в GitHub/GitLab и используйте CI для тестов перед деплоем.
  • Можно подключить автоматический деплой Heroku из ветки GitHub (Heroku → Deploy → GitHub integration).

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

  • Сайт доступен по адресу https://.herokuapp.com без ошибки 500.
  • Все статические файлы корректно загружаются (CSS/JS/изображения) или корректно настроен WhiteNoise/CDN.
  • Выполнены миграции базы данных и страницы администрирования доступны (при необходимости).
  • Конфигурации секретных ключей и чувствительных переменных вынесены в Config Vars.

Быстрый чеклист (роль‑ориентированный)

Разработчик:

  • Локально проходит migrate и runserver
  • requirements.txt обновлён
  • Procfile и runtime.txt в корне репозитория
  • ALLOWED_HOSTS настроен

Reviewer / Тестировщик:

  • Проверил базовую функциональность после деплоя
  • Протестировал формы и основные пути
  • Проверил логи на ошибки

Оператор / DevOps:

  • Настроил Config Vars и buildpack
  • Проверил логи и мониторинг
  • Настроил бэкапы (для базы данных)

Playbook: быстрый план развертывания

  1. Подготовить проект локально (venv, миграции, requirements).
  2. Создать Procfile и runtime.txt.
  3. Протестировать запуск локально.
  4. Создать приложение в Heroku и связать git remote.
  5. Выполнить git push heroku master.
  6. Применить migrate и проверить логи.
  7. Настроить переменные окружения и статические файлы.

Частые случаи, когда этот подход не сработает

  • Если приложение интенсивно использует фоновые задачи, потребуется внести Celery/worker‑процессы и, возможно, платные dyno.
  • Для приложений с большой загрузкой медленная бесплатная среда и спящий режим могут быть неприемлемы.
  • Если проект зависит от нестандартных системных библиотек, их нужно заранее проверить на поддерживаемость в окружении Heroku.

Мини‑методология проверки работоспособности после деплоя

  1. Открыть приложение (heroku open).
  2. Проверить логи (heroku logs --tail) на ошибки import/migrate/collectstatic.
  3. Выполнить heroku run python manage.py migrate.
  4. Проверить страницы, формы и внешний вид (CSS/JS).
  5. Настроить мониторинг и оповещения на будущие ошибки.

Визуальная схема развёртывания

flowchart TD
  A[Локальный репозиторий] --> B[git commit]
  B --> C[git push heroku master]
  C --> D[Heroku build system]
  D --> E[Запуск dyno: gunicorn project_name.wsgi]
  E --> F[Доступ через https://app.herokuapp.com]

Резюме

Heroku остаётся удобным инструментом для быстрого, минимального по усилиям размещения Python/Django‑проекта, особенно если ваша цель — портфолио или прототип. Главное — правильно подготовить файлы requirements.txt, Procfile и runtime.txt, настроить параметры Django для продакшена и знать команды Heroku CLI для деплоя и отладки.

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

Краткие рекомендации:

  • Тестируйте локально прежде, чем пушить на Heroku.
  • Храните секреты в Config Vars.
  • Используйте WhiteNoise/CDN для статики в продакшене.

Полезные команды поборочно

git init
git add --all
git commit -m "initial commit"
heroku create 
heroku git:remote -a 
git push heroku master
heroku logs --tail
heroku run python manage.py migrate
heroku config:set DISABLE_COLLECTSTATIC=1

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

Завершение: если после прочтения остались вопросы по конкретным ошибкам или по использованию другого фреймворка (Flask, FastAPI), опишите свой стек и сообщение об ошибке — я помогу с отладкой.

Important: следите за обновлениями политик провайдера — условия бесплатных тарифов могут меняться, и инструкция может требовать адаптации.

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

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

Панель быстрого доступа MS Office — настройка
Microsoft Office

Панель быстрого доступа MS Office — настройка

Как проверить Windows Experience Index в Windows 10
Windows

Как проверить Windows Experience Index в Windows 10

Хорошее письмо — это хорошая коммуникация
Навыки письма

Хорошее письмо — это хорошая коммуникация

Ошибка «Failed to download file» в Minecraft — как исправить
Игры

Ошибка «Failed to download file» в Minecraft — как исправить

Как заблокировать игрока на Nintendo Switch
Игры

Как заблокировать игрока на Nintendo Switch

Маркеры ячеек в Excel: руководство
Software

Маркеры ячеек в Excel: руководство