Pull to refresh

Встречайте Envoyer.io (часть 2)

Reading time4 min
Views5.9K
Original author: Matt Stauffer
Envoyer — новый сервис от Тэйлора Отвелла, создателя Laravel. Уже сейчас можно посмотреть серию скринкастов на Laracasts про этот сервис. Это вторая и последняя часть описания этого сервиса.

Встречайте Envoyer.io (часть 1)

В это части будут описаны более продвинутые возможности Envoyer.

image



Кастомизация деплой хуков


У Envoyer есть 4 шага в процессе деплоя, а Вы в свою очередь можете выполнить любые свои скрипты до и после любого из этих шагов. Эти шаги: Клон нового релиза, Установка composer зависимостей, Активация нового релиза и Удаление старых релизов.
image

Возле каждого шага есть кнопка «шестерёнка», нажав на неё Вы попадает на следующий экран:
image

Там Вы можете добавлять хуки до и после выбранного шага. Нажмите на Add Hook в нужной Вам части.
image

Как видите, для каждого хука можно указать своё название, указать юзера под которым нужно выполнить скрипт, и тело хука, у которого есть доступ к переменной {{release}}, в которой хранится путь в папке самого нового релиза (например, /home/my-user/website.com/releases/20150316083301).
Заметьте, что Вы также можно посредством drag & drop менять порядок выполнения хуков.
image

Отмены


А что если Вы выполнили новый деплой и поняли, что всё сломали? Обычно, Вы бы коннектились на сервер через ssh, git log, искали бы нужный коммит, копировали бы хэш коммита, git checkout THAT_HASH, composer install, и только тогда, возможно, успокоились бы на несколько минут.

Используя Envoyer, Ваш предыдущий релиз будет находиться в рабочем состоянии в папке releases. Просто зайдите в дэшборд Вашего проекта, найдите деплой, который деплоил работающий код и нажмите кнопку “Redeploy”. Символическая ссылка current просто станет указывать на рабочую папку в папке releases и всё снова заработает.
image

Здоровье


Вы могли заметить раздел Post-Deployment Health на проектном дэшборде. Там есть иконки для Нью-Йорка, Лондона и Сингапура — три региона, из которых Envoyer проверяет доступность Вашего приложения. До тех пор, пока Вы не укажете Health Check URL, эти иконки будут знаками вопроса.
image

У каждого проекта может быть указать Health Check URL, который будет вызван Envoyer'ом после каждого деплоя. Редактировать этот URL можно в настройках проекта.
image

После деплоя, Envoyer смотрит на HTTP ответ от указанного URL, и проверят, является ли код ответа 200 (OK). Если да, то Envoyer считает приложение «здоровым». Вы можете указать домашнюю страницу Вашего сайта или сделать специальный тестовый URL, который в полной мере сможет указать, «здоров» ли Ваш сервер.
Если всё хорошо, то Вы увидите зеленые галочки.
image

Если что-то сломается, Вы увидите красные крестики (и тогда Вам, скорее всего, понадобится раздел «Отмены»):
image

Деплой на несколько серверов


Если Вы хотите деплоить на несколько серверов сразу, просто добавьте их в проект и сервер автоматически будет участвовать в деплое.

Стадии деплоя

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

Синхронизация настроек окружения

Если у Вас есть локальный файл настройки, который нужно синхронизировать с серверами (.env в Laravel 5, .env.php в Laravel 4), нажмите кнопку Manage Environment в проектном дэшборде.

Заметьте, что файл шифруется паролем, который не хранится в Envoyer, поэтому не потеряйте “Environment Key”.
image

Как только Вы введёте пароль, Вам будет дано текстовое поле, которое по сути является редактором кода. Пишите то, что Вам нужно в этом поле, и содержимое будет сохранено в файл (.env, если Вы выбрали тип проекта Laravel 5 или Другой и .env.php, если тип проекта — Laravel 4).
image

Теперь выберите сервера, на которые нужно это сохранить и сохраните.
Envoyer сам сохранит этот файл в корень проекта на серверах и создаст все нужные символические ссылки.

Уведомления


Во вкладке «Notifications», можно настроить Envoyer так, чтобы он уведомлял Вас о важных событиях. В данный момент Envoyer может уведомлять в Hipchat и Slack.
image
image

Heartbeats


Одна из самых больших сложностей при управлении «здоровьем» серверов, это обеспечение того, что все cron задачи всегда работают. Envoyer Heartbeats позволяют установить условие, что если указанный URL пингуется с указанной частотой, значит cron работа «жива». Если пинга нет, Envoyer уведомит Вас об этом.
Чтобы добавить Heartbeat, во вкладке Heartbeats нажмите на кнопку Add Heartbeat.
image

Можно указать название и указать частоту, с которой ожидается получать пинг от cron задачи.
image
Как только Вы добавите его, статус будет Healthy. До тех пор, пока не пройдет указанное время, статус будет оставаться Healthy. То есть, если Вы выбрали 10 минут, оно будет оставаться Healthy в течение 10 минут после создания.

Пинг heartbeat

Каждый Heartbeat имеет свой уникальный URL, который можно получить на вкладке Heartbeats. Он будет следующего формата: beats.envoyer.io/heartbeat/203849102395790125
В обычном cron файле можно сделать следующим образом, чтобы пингануть Heartbeat:
php yourfile.php && curl https://beats.envoyer.io/heartbeat/203849102395790125


Если Вы используете Laravel, в последней версии в планировщик был добавлен метод thenPing(), который позволяет выполнить пинг любого URL после выполнения cron задачи. Это идеально подходит для Heartbeats:
image

Вот так выглядит уведомление, если нет пинга:
image

Совместная работа


Envoyer позволяет неограниченному количеству людей получать доступ к Вашим серверам. Если кто-то в Вашей команде хочет работать с Вами над деплоем серверов, но не хочет создавать свой аккаунт с указанием данных платежной карты, то можно создать аккаунт выбрав пункт “I’m just collaborating with others.” при регистрации.
image

У каждого проекта есть вкладка Collaborators, где Вы можете добавлять людей, указывая их email.
image

Заметьте, что у этих людей будет доступ ко всем функциям, кроме удаления проекта.

FAQ



Будет ли Envoyer заменой Forge?

Нет. Envoyer не управляет серверами. Но он составит отличную пару Forge.

Как Envoyer авторизуется на сервере?

После добавления нового сервера, Envoyer даст Вам SSH ключ, который нужно добавить в файл authorized_keys нужного пользователя

Могу ли я использовать Envoyer с не Laravel проектом?

Да, конечно. Правда, некоторые автоматические настройки не будут работать. Например, автоматическое создание символических ссылок на папку storage. Но этого можно будет добиться используя хуки.

Если я использую Forge, надо ли подключать сайт к Git репозиторию в Forge?

Нет, просто запустите сайт, не подключая ни к какому репозиторию. Всё остальное сделает Envoyer сам.

Что случится, если в каком-нибудь шаге деплоя произойдет ошибка?

Envoyer заметит это и уведомит Вас об этом. Деплой при этом будет отменён.
image
Tags:
Hubs:
+4
Comments6

Articles