Heroku - это облачная платформа, которая позволяет создавать, разрабатывать, устанавливать, запускать, контролировать и масштабировать сайты. Позиционирует себя как самый быстрый способ перейти от идеи к URL-адресу с приложением, избегая головных болей от работы с инфраструктурой. Благодаря сервису пользователи тратят время и силы только на разработку и развертывание проектов, которые сразу начинают приносить прибыль.
Как облачный хостинг Heroku появился в июне 2007 года, тогда он поддерживал только один язык программирования – Ruby. Сегодня Хероку дополнительно поддерживает Nod.js, Java, PHP, Python, Go, Scala, Clojure.
Поддержка разных языков программирования реализована с помощью набора пакетов сборки (buildpack) с открытым исходным кодом. Сборочные пакеты служат для преобразования деплоя кода (дословный перевод deployed – развернутый, т.е. перенесенный на сервер) в исполняемый файл, который затем может исполняться на dyno. Пакеты программ состоят из последовательных команд и инструкций, и в зависимости от языка программирования программные инструкции будут находить зависимости, выводить скомпилированный код, или сгенерированные ресурсы и т. д.
Dynos - сердце Heroku хостинга
Хероку платформа использует модель контейнера для запуска и масштабирования приложений.
Система называется масштабируемой, если она способна увеличивать производительность пропорционально дополнительным ресурсам. Масштабируемость можно оценить через отношение прироста производительности системы к приросту используемых ресурсов. Чем ближе это отношение к единице, тем лучше.
Википедия
Контейнеры, используемые в работе, называются «dynos». Это изолированные виртуальные контейнеры Linux, предназначенные для выполнения кода на основе заданной пользователем команды. Приложение может масштабироваться до любого количества контейнеров на основе требований к ресурсам. Возможность управления контейнерами предоставляют Heroku простой способ масштабировать, управлять количеством, размером и типом dynos, которые могут понадобиться проекту в любой момент времени.

Учет работы Dyno
Учетная запись предоставляет 550 часов в месяц бесплатного использования Dyno. В дополнение к этим базовым часам счета, можно получить дополнительно 450 часов ежемесячной бесплатной работы приложений. Для этого потребуется зарегистрировать платёжную карту. Деньги взиматься не будут, просто надо ее зарегистрировать. Карту, которую я зарегистрировал на этом ресурсе, я уже выкинул, так как у нее закончился срок использования. А сервис никак на это не реагирует, не ругается. Кстати, регистрация карты предоставляет и другие опции.
Халявные dynos обладают уникальным свойством – они умеют ложиться спать после 30-минутного бездействия сайта. Таким образом, расход часов прекращается. Условия бездействия:
- отсутствие трафика, т.е. веб dynos не действуют;
- рабочие dynos не работают.
Необходимо выполнение обоих условий.
При появлении трафика dynos просыпаются с небольшой малозаметной задержкой.
После израсходования всех часов в течение месяца, приложения засыпают и спят оставшуюся часть месяца.
Как определить остаток бесплатной работы Dyno
Посмотреть оставшиеся свободные часы можно используя Heroku CLI - надо набрать команду в командной строке
heroku ps -a <имя приложения>.
Или узнать это в своем аккаунте этого хоста на странице управления счетами на вкладке Billing. На рисунке показан пример расхода бесплатных часов в биллинге.

Расход бесплатных часов моими проектами на Хероки на 22 число месяца.
Alice-yandex - это приобретенный Алисой, навык "Заработок в интернете — финансово-выгодный". Предлагает ресурсы для зарабатывания в интернете.
Ninja-adaptive - моя учебная работа по изготовлению адаптивной страницы
Уведомление об использовании бесплатных часов от Героку
После расхода 80% запаса свободных часов придет уведомление на электронную почту примерно такого содержания.
Привет!
Вы использовали 80% из своих 1000 бесплатных динамо-часов за месяц. Следующие шаги помогут вам обеспечить бесперебойную работу вашего приложения.
Обновитесь до более мощных динамо-машин. По мере роста вашего приложения переходите на Hobby dynos по цене 7 долларов за динамо в месяц. Ваше приложение никогда не будет спать, и пользователи получат доступ 24/7. Кроме того, вы получите бесплатное управление SSL и автоматизированными сертификатами для пользовательских доменов, метрики приложений и несколько сотрудников для более мощных приложений.
Оптимизируйте свои службы мониторинга. Служба мониторинга может непреднамеренно не давать вашему приложению работать. Запустите heroku logs, чтобы просмотреть журналы вашего приложения. При необходимости удалите Pingdom, New Relic или другие службы мониторинга доступности, которые не требуются.
Проверьте свое приложение на наличие рабочих динамо-машин. Возможно, в вашем приложении не работает веб-динамик. Когда запущены приложения только для рабочих dynos, они работают непрерывно. Вы можете избежать этого, обновившись до Hobby dynos или запустив heroku logs в своем приложении.
Dyno sleeping позволяет нам предоставлять вам и миллионам других пользователей бесплатный уровень для экспериментов, взлома личных проектов и запуска приложений с низким трафиком.
Если у вас есть вопросы, пожалуйста, посетите help.heroku.com.
Счастливого кодирования,
Героку
Heroku
Второе уведомление придет после 100% расхода квоты времени, и приложения будут спать до конца текущего месяца.
Как установить сайт бесплатно
Хостинг позволяет бесплатно разместить до 5 проектов. Сначала надо зарегистрироваться, получив бесплатную учетную запись.
Установка сайта
Для развертывания приложений следует установить на локальную машину популярную систему контроля версиями Git, интерфейс командной строки Heroku (CLI). CLI - важная часть использования Хероку. Он упрощает создание и управление приложениями Героку непосредственно с терминала. Скачать для установки его на свою машину можно с официальной страницы https://devcenter.heroku.com/articles/heroku-cli.
Чтобы установить сайт с кодом PHP дополнительно потребуется установка Composer (перевод с английского – Композитор).
Последовательность действий для установки сайта
Зайти в системную консоль (cmd.exe) от имени администратора, набрать команду
heroku login
нажать ввод Enter
Затем ввести адрес электронной почты, пароль.
После правильных вводов появится сообщение: Logged in as <адрес введенной электронной почты>
Если проект не загружен на сервис GitHub, а находится на жестком диске компьютера, зайти в папку для него, или создать ее.
Создать локальный репозиторий, набрав
git init
Загрузить в эту папку репозитория файлы сайта.
Создать и загрузить файл Procfile, другие необходимые для Хероку файлы, например composer.json при загрузке сайта PHP.
Если файл composer.json не пустой, создать файл composer.lock, выполнив команду
composer update.
Чтобы добавить и закрепить файлы в репозитории, выполнить последовательно действия:
git add .
git commit -am "<Комментарий>".
Создать приложение на Героку, которое готовит хостинг для получения исходного кода:
heroku create
Развернуть свой код
git push heroku master
Заключительное действие - открыть сайт в окне браузера
heroku open
Всё, сайт успешно установлен на облачный хостинг!
Платные услуги хостинга для приложения
У Хероки множество платных услуг. Даже используя бесплатный вариант Хероку, когда программа использует бесплатные dynos, можно попасть на оплату услуг. Так случилось у меня, когда я подключил управление Конвейером (Pipeline). В процессе подключения услуги Pipeline ничто не предупреждало, что данная услуга платная.
Добавление приложения в конвейер Pipeline
Pipeline предоставляет возможность обновлять приложение, находящееся на хостинге Хероки, в автоматическом, или ручном режиме из GitHub. Для этого есть страница аккаунта на сайте. Откройте страницу для конкретного приложения, перейдите на вкладку Deploy.
В первой строке предлагается добавить приложение в Конвейер. Здесь же подробно и понятно рассказан алгоритм действий. Подключить услугу Pipeline очень просто.
Добавьте это приложение в конвейер. Создайте новый конвейер или выберите существующий и добавьте в него это приложение на этап. Heroku
Но… Ничто не говорит на этой странице при подключении, что услуга Pipeline платная. О том, что Pipeline платно сказано совсем в другом месте. И это стоит $10 в месяц.
Procfile
Прокфайл определяет команды, которые выполняют приложения в контейнерах динос, объявляет типы процессов. Каждый дино-контейнер относится к одному из объявленных типов процессов и выполняет команду, связанную с этим типом процесса.
Procfile - это простой текстовый файл, который называется точно Procfile (например, Procfile.txt не действует).
Прокфайл должен находиться в корневом каталоге приложения. Он не работает, если находится в ином месте.
Procfile объявляет типы процессов в отдельных строках файла, каждая из которых имеет следующий формат: <тип процесса>: <команда>. Каждая новая декларация процесса начинается с новой строки.
Тип процесса web является особым: это единственный тип процесса, который может получать внешний HTTP-трафик с маршрутизаторов Хероку. Если проект включает веб-сервер, необходимо объявить процесс как web .
Composer.json
Composer.json располагается в корневом каталоге. При его наличии Хероку распознает приложение как PHP. Поддержка PHP будет применяться только тогда, когда проект с программой имеет файл с именем composer.json в корневом каталоге.
Хероку использует Композитор для управления зависимостями в проектах PHP. Если программа имеет какие-либо зависимости с другими внешними библиотеками, composer.json файл должен указать их.
Даже если приложение не имеет зависимостей от Композитор, оно должно содержать в composer.json хотя бы пустое поле ({}), чтобы быть распознанным как приложение PHP.
Также этот файл инструктирует Хероку, какую версию PHP использовать. Если такую инструкцию не указать, то Heroku выберет самую последнюю возможную версию PHP 5. Это v5.6.36.
Устранение проблем установки
Размещая приложение на платформу, я обнаружил конфликт между локальным сервером OpenServer и Heroku. Хостинг для PHP проектов требует установить на компьютер средство по управлению зависимостями со сторонними библиотеками – Композитор.
Установил средство, и обнаружилась проблема. При проверке правильности установки командой в системной консоли composer –V выдало:
«"""" не является внутренней или внешней командой, исполняемой программой или пакетным файлом».
Проблему решило изменение в настройках OpenServer. Файл php.exe при установке Композитор я загрузил в папку \OpenServer\modules\php\PHP-7. А в этой директории OpenServer-а имеются файлы composer.phar и composer.bat устаревшей версии, и они подхватываются в Композитор. Чтобы их не удалять, я их только переименовал, добавив «1».
Полезные команды для сайта на хостинге
Чтобы попасть в корень проекта на хостинге команда: heroku run bash -a=<наименование проекта >.
Удалить проект с хостинга команда: heroku apps:destroy --app <наименование проекта >.
Вывод
В этой статье изложено о возможности бесплатного развертывания на хостинге динамичного сайта на языке PHP. Размещение статичного проекта имеет особенности. Об установке простого статичного сайта здесь .
На основании вышесказанного следует вывод: облачный хостинг Героку – прекрасный ресурс для бесплатного размещения сайтов.