ВСЕ СТАТЬИ
Блог начинающего программиста
Регистрация

Работа на Heroku - платформе для развертывания и масштабирования приложений со Stack, логами, PHP

Опубликовано:

Основы работы на Heroku с PHP. Heroku предоставляет инструменты для автоматического масштабирования, мониторинга и развертывания приложений. Платформа предоставляет масштабируемую, отказоустойчивую инфраструктуру и автоматизацию процессов для разработчиков. Это означает, что если приложение становится очень популярным и начинает испытывать высокую нагрузку, Героку автоматически добавит больше серверов для обработки запросов. Развертывание кода приложения на Героку выполняется через Git.

Стеки (образы операционных систем) Heroku

Героку постоянно обновляет стопку данных – Stack. Принцип стопки – кто последний пришел, тот первый уйдет. Стек (Stack) является образом операционной системы, который проверяется и поддерживается Heroku. Стеки обычно базируются на дистрибутиве Linux, имеющем открытый исходный код, как у Ubuntu.

В настоящее время версией по умолчанию является стек Heroku-20. У него базовая технология - Ubuntu 20.04. Он доступен с 2020 года и будет жить до . Сейчас, ещё до , поддерживается Heroku-18 на базе Ubuntu 18.04, который действует с 2018 г. С закончилась жизнь у версии стека Heroku-16. Но это не означает, что перестали функционировать и проекты, развернутые на этой версии. Нет. Они работают по-прежнему, просто нет обновлений безопасности.

Приложения Heroku пользуются определенным стеком. Когда программа Heroku создана, исходный код программы вместе с полученными зависимостями и результатами сборки, такими как язык и инфраструктура, собираются в пакет, известный как слак (slug). Пакет сборки отвечает за преобразование исходного кода приложения в исполняемый пакет, совместимый с этим стеком. Этот пакет обычно совместим только со стеком, на котором он был построен, поэтому приложения, которые ранее были развернуты, должны быть перестроены, чтобы быть совместимыми с новым стеком.

Каждый Stack на Героку поддерживает разные пакеты операционных систем и языковые версии среды выполнения. Эта поддержка обычно ограничивается программным обеспечением, которое все еще активно разрабатывается с момента первого выпуска стека.

Откат обновления стека приложения на хостинге Heroku

Рекомендуется всегда использовать самый последний доступный Stack. Если приложение работает не стабильно, или совсем не работает в новом обновленном стеке, можно обновление откатить для отладки и решения проблемы.

Откат удобно выполнить через панель управления Heroku на сайте. Для этого надо перейти на страницу настроек приложения, выбрать вкладку «Activity». На открывшейся странице выбрать версию развертывания (Deployed) и нажать активную ссылку «Roll back to here».

Работа с журналами логов

В журналы приложения Heroku записываются все работающие процессы, системные компоненты и службы. Все записи логов направляются в один канал, обеспечивающий комплексное ведение logs.

Журналы выполнения

Героку объединяет следующие категории журналов для развернутого приложения:

  • Logs приложений. Регистрация выходных данных самого приложения, включая журналы, созданные кодом и зависимостями приложения.
  • Системные Logs — события и действия, выполненные платформой Heroku от имени активного приложения, например: перезапуск аварийного процесса, переход в спящий режим или пробуждение веб-дино или отображение страницы с ошибкой.
  • Logs API — сведения о действиях администраторов, разработчиков, производимыми над проектом, например: развертывание нового кода, масштабирование формирования процесса или переключение режима обслуживания.
  • Журналы дополнений — сообщения от дополнительных служб.

Журналы сборки

Logs, полученные при создании и развертывании приложения, отделены от журналов среды выполнения приложения. Записи логов как успешных, так и неудачных сборок доступны на Activity вкладке вашего приложения на панели управления Heroku:

щелкните View build log любое событие сборки в ленте активности, чтобы просмотреть его логи.

Ограничения истории журнала

В течение 1 недели сохраняются последние 1500 строк сводного журнала. Но Героку предоставил, в том числе бесплатные, надстройки для работы с логами. Они увеличивают удобство работы, количество настроек, время хранения логов. В программу можно добавить одну надстройку.

Запись в журнал

Журналы фиксируют все, что ваш ресурс записывает в стандартный вывод (stdout) или стандартную ошибку (stderr). Можете войти из любого места кода вашего приложения с помощью простого оператора вывода.

Просмотр журналов

Героку предоставляет сервис для получения и просмотра логов в двух вариантах:

  • получение логов через пользовательский интерфейс на сайте в своей панели управления Героку,
  • с помощью простого оператора вывода через командную строку терминала CLI.

heroku logs -a <наименование проекта>

Посмотреть логи можно и в приложении Git Bash, введя ту же команду

heroku logs -a <наименование проекта>

В ответ Героку пришлет приглашение нажать любую клавишу, чтобы открыть браузер для входа в систему, или q для выхода.

После нажатия на любую клавишу откроется вкладка браузера для авторизации с вводом своего адреса электронной почты, пароля. Произойдет вход в Героку и в приложении вывод логов.

Logging in... done

Команда с умолчанием выведет 100 строк логов. Можно изменить команду, указав требуемое количество строк, параметром num (или -n). Максимальное количество – 1500.

heroku logs -n 1500

Журналы в реальный момент времени

По команде

tail -f

отображаются последние записи логов и сеанс потоковой передачи logs продолжается открытым в реальном времени. Просматривая поток логов в реальном времени действующего приложения, можно получить сведения о поведении приложения и отладить проблемы.

$ heroku logs -t

Фильтрация

Если вы хотите получать логи только из определенного источника, определенного дино или обоих, вы можете использовать аргументы фильтрации:

heroku logs --dyno router
heroku logs --source app

При фильтрации по dyno можно использовать либо базовое имя (вроде --dyno web), либо полное имя (вроде --dyno web.1).

Также можно комбинировать переключатели фильтрации с –tail для получения потока отфильтрованных выходных данных в реальном времени.

$ heroku logs --source app --tail

Просмотр журналов с помощью панели управления Heroku

Можно просмотреть свои логи в интернете, войдя в свою панель управления Heroku . Перейдите к нужному приложению, например, https://dashboard.heroku.com/apps/<app-name>. На этой странице выберите «еще», чтобы увидеть раскрывающееся меню:

Больше сведений для работы с логами
В этом меню выберите View logs.

Работа на Heroku с PHP

Для работы на платформе Героку с использованием языка программирования PHP потребуется установить на локальную машину:

  • интерфейс командной строки Heroku (CLI),
  • PHP,
  • composer,
  • git.

Подготовка приложения PHP к развертыванию в Heroku

  1. Проверьте свой исходный код в репозитории Git

    Исходный код, необходимый для сборки отдельной программы или ее компонента, должен находиться в репозитории Git готовым для развертывания.

  2. Добавьте пульт Heroku Git

    У каждого приложения Героку есть собственный репо системы Git, размещенный на Героку. Вы развертываете новые версии своего приложения, отправляя изменения кода в это хранилище. Для этого вашему локальному репозиторию Git необходимо знать URL-адрес репозитория, размещенного на Героку.

Героку Git удобен для развертывания и не предназначен для использования в качестве стабильного репозитория git. Используйте GitHub (рекомендуется), или другую систему контроля версий для отслеживания вашей кодовой базы.

Интеграция с GitHub (развертывание на Heroku из GitHub)

Heroku интегрируется с GitHub, чтобы упростить развертывание кода, находящегося на ГитХаб, в приложения, работающие на Героку. Когда интеграция ГитХаб настроена для приложения Heroku, Heroku может автоматически создавать и выпускать (если сборка прошла успешно) push-уведомления в указанный репозиторий GitHub.

Включение интеграции с GitHub

Вы можете настроить интеграцию с ГитХаб на Deploy вкладке приложений в панели управления Героку.

Чтобы настроить интеграцию с GitHub, вам необходимо пройти аутентификацию в ГитХаб. Потребуется это сделать только один раз для каждой учетной записи Героку.

После того, как вы свяжете свое приложение Героку с репозиторием GitHub, вы сможете выборочно развернуть его из веток или настроить автоматическое разворачивание.

Ручное развертывание

При ручном развертывании вы можете создать немедленное развертывание любой ветки из репозитория GitHub, которая подключена к вашему приложению. Используйте ручное разворачивание, если вы хотите контролировать развертывание изменений в Героку.

Деплой ветки из ГитХаб в Героку
Деплой ветки из ГитХаб в Героку

Можно использовать ручное развертывание для временного развертывания ветки, отличной от той, для которой настроено автоматическое развертывание.


Комментарии

Пока комментарий нет

Оставить свой комментарий:

Зарегистрироваться
Имя:
Электронная почта:
Текст комментария:
Введите код с картинки:
картинка