Envoyer — новый сервис от Тэйлора Отвелла, создателя Laravel. Уже сейчас можно посмотреть серию скринкастов на Laracasts про этот сервис. Это первая часть описания этого сервиса.
Вторая часть тут

Когда Laravel Forge был запущен Тэйлором, он стал серьезным помощником в запуске и управлении нескольких VPS, а также деплойменте приложений. Forge занимался процессом создания VPS в облаке, управлением окружения и деплоем (включая Git-hook-deployment) приложений на сервера, и сделал этот процесс более доступным и простым.
Но, к сожалению, Forge не удовлетворял таких потребностей, как управление более сложными деплой процессами или деплоймент без простоя. Вне зависимости от того, были Вы пользователем Forge или нет, приходилось задействовать такие инструменты, как Capistrano или Chef или Ansible, чтобы иметь больше возможностей. Но при этом, разобраться с этими инструментами занимает достаточно много времени.
Сегодня запускается Envoyer, который поможет решить выше описанные проблемы. Envoyer это zero-downtime деплоер для PHP и Laravel проектов. Это инструмент, который подключается к Вашему серверу, чтобы деплоить, и который использует серию инструментов, чтобы обеспечить то, что вся подготовительная работа для деплоя (например, composer install), выполняется в фоне, в то время, как предыдущая версия сайта всё ещё работает.
Если Вы когда-нибудь работали с Capistrano, Вы уже должны быть с этим знакомы. Обращаю внимание, что это технический ответ, поэтому, если Вам это не интересно, можете пропустить этот раздел.
Деплой на обычной системе (например, в Forge) значит, что есть всего одна папка, где живет Ваш проект. Допустим есть два файла:
Ваша деплой система обычно сделает
А zero-down-time система поддерживает систему с папкой
А Envoyer всем управляет сам. И в конце у Вас имеется примерно такое:
Замечу, что все папки, которые должны сохраняться между релизами, должны существовать в корне проектной папки, и на них при каждом деплое нужно делать новые символические ссылки. Если деплоится Laravel приложение, то всё работает из коробки.
Окей, давайте начнем первый проект с Envoyer. Регистрируйтесь на Envoyer.io, выбрав пункт «I want to manage my own projects.».

А так выглядит дэшборд:

Первый шаг — добавить проект. Нажмите на большую кнопку «Add Project» в верхнем правом углу.

У Вас спросят, какого типа новый проект, а также указать данные Git'а.
Сразу после создания проекта, можно просматривать дэшборд отдельного проекта.

Во вкладке Servers на дэшборде можно добавить новый сервер для проекта.

Чтобы добавить новый сервер, Вам нужно указать IP адрес сервера, Unix/SSH пользователя, под которым Envoyer будет авторизоваться, и путь, где хранится проект (например,
Когда Вы добавите сервер, Вам будет выдан SSH ключ, который нужно добавить в файл

А если Вы используете Forge, добавьте этот SSH ключ во вкладке SSH keys нужного сервера.
Теперь во вкладке серверов, нажав кнопку обновить, можно проверить соединение с сервером.

Если всё хорошо, иконка станет зелёной с подписью “Successful.”
Допишите
Теперь, в конфиге nginx/Apache, нужно дописать

Вернитесь на дэшборд проект и нажмите на красную кнопку Deploy, чтобы выполнить новый деплой. Запись об этом появится во вкладке «Deployments».

Нажмите на стрелочку возле нужного деплоя и Вы сможете увидеть все шаги деплой скрипта (на данный момент, это стандартный деплой скрипт для данного типа проекта):

Заметье, что Вы также можете просмотреть вывод всех команд, из которых состоит деплой скрипт.

Это всё для первого проекта! Теперь у Вас запущен проект, который деплоится с помощью Envoyer.
P.S. Если Вы хотите деплоить код, как только Вы запушили новые коммиты в Git ветку, можете в разделе Project Settings / Source Control поставить галочку возле “Deploy When Code Is Pushed”.

Вторая часть тут

Немного истории
Когда Laravel Forge был запущен Тэйлором, он стал серьезным помощником в запуске и управлении нескольких VPS, а также деплойменте приложений. Forge занимался процессом создания VPS в облаке, управлением окружения и деплоем (включая Git-hook-deployment) приложений на сервера, и сделал этот процесс более доступным и простым.
Но, к сожалению, Forge не удовлетворял таких потребностей, как управление более сложными деплой процессами или деплоймент без простоя. Вне зависимости от того, были Вы пользователем Forge или нет, приходилось задействовать такие инструменты, как Capistrano или Chef или Ansible, чтобы иметь больше возможностей. Но при этом, разобраться с этими инструментами занимает достаточно много времени.
Представляем Envoyer.io
Сегодня запускается Envoyer, который поможет решить выше описанные проблемы. Envoyer это zero-downtime деплоер для PHP и Laravel проектов. Это инструмент, который подключается к Вашему серверу, чтобы деплоить, и который использует серию инструментов, чтобы обеспечить то, что вся подготовительная работа для деплоя (например, composer install), выполняется в фоне, в то время, как предыдущая версия сайта всё ещё работает.
Как Zero-Downtime Deploy работает?
Если Вы когда-нибудь работали с Capistrano, Вы уже должны быть с этим знакомы. Обращаю внимание, что это технический ответ, поэтому, если Вам это не интересно, можете пропустить этот раздел.
Деплой на обычной системе (например, в Forge) значит, что есть всего одна папка, где живет Ваш проект. Допустим есть два файла:
index.php
и папка app
, и они лежат в webroot./webroot/index.php
/webroot/app
Ваша деплой система обычно сделает
cd
в эту папку, выполнит git pull и потом выполнит деплой скрипт, который, скорее всего, включает в себя composer install
. Это значит, что, скорее всего, Ваше приложение не будет функционировать правильно в течение минимум нескольких секунд.А zero-down-time система поддерживает систему с папкой
releases
, в которой хранятся по сути коммиты Вашей git
истории. Каждый раз, когда деплой система запускается, она создает новую папку в releases
и клонирует репозиторий на последнем коммите (или нужном коммите) в эту папку. Потом в этой папке запускается деплой скрипт. И только тогда, когда в новой папке существует полностью функционирующий проект, система меняет символическую ссылку current
папки на последний релиз. И всё!А Envoyer всем управляет сам. И в конце у Вас имеется примерно такое:
/webroot/current
/webroot/releases
/webroot/releases/20150316074832
/webroot/releases/20150315041251
Замечу, что все папки, которые должны сохраняться между релизами, должны существовать в корне проектной папки, и на них при каждом деплое нужно делать новые символические ссылки. Если деплоится Laravel приложение, то всё работает из коробки.
Первый проект с Envoyer
Окей, давайте начнем первый проект с Envoyer. Регистрируйтесь на Envoyer.io, выбрав пункт «I want to manage my own projects.».

А так выглядит дэшборд:

Добавляем первый проект
Первый шаг — добавить проект. Нажмите на большую кнопку «Add Project» в верхнем правом углу.

У Вас спросят, какого типа новый проект, а также указать данные Git'а.
Просмотр дэшборда проекта
Сразу после создания проекта, можно просматривать дэшборд отдельного проекта.

Добавление нового проекта
Во вкладке Servers на дэшборде можно добавить новый сервер для проекта.

Чтобы добавить новый сервер, Вам нужно указать IP адрес сервера, Unix/SSH пользователя, под которым Envoyer будет авторизоваться, и путь, где хранится проект (например,
/home/username/website.com
или /var/www/website.com
).Когда Вы добавите сервер, Вам будет выдан SSH ключ, который нужно добавить в файл
~/.ssh/authorized_keys
того юзера, которого указали при добавлении сервера.
А если Вы используете Forge, добавьте этот SSH ключ во вкладке SSH keys нужного сервера.
Теперь во вкладке серверов, нажав кнопку обновить, можно проверить соединение с сервером.

Если всё хорошо, иконка станет зелёной с подписью “Successful.”
Допишите current/
к текущему webroot в настройках веб-сервера
Теперь, в конфиге nginx/Apache, нужно дописать
current/
. Если вы пользователь Forge и Laravel, то Вы, скорее всего, привыкли указывать папку /public
. Теперь нужно указывать /current/public
.
Запустить деплой
Вернитесь на дэшборд проект и нажмите на красную кнопку Deploy, чтобы выполнить новый деплой. Запись об этом появится во вкладке «Deployments».

Нажмите на стрелочку возле нужного деплоя и Вы сможете увидеть все шаги деплой скрипта (на данный момент, это стандартный деплой скрипт для данного типа проекта):

Заметье, что Вы также можете просмотреть вывод всех команд, из которых состоит деплой скрипт.

Готово!
Это всё для первого проекта! Теперь у Вас запущен проект, который деплоится с помощью Envoyer.
P.S. Если Вы хотите деплоить код, как только Вы запушили новые коммиты в Git ветку, можете в разделе Project Settings / Source Control поставить галочку возле “Deploy When Code Is Pushed”.
