Установка

Все действия по установке и настройке Deployer необходимо производить на стороне клиента.

Для установки введите следующие команды:

curl -LO https://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep

Если вам необходима определенная версия Deployer'а, перейдите по ссылке и скачайте нужную версию.

Полная инструкция

Инициализация

Теперь можно использовать Deployer. Откройте терминал, перейдите в терминале к папке проекта и запустите команду:

dep init

После чего в терминале запустится генератор конфигурационного файла. Для начала выберите тип проекта. Далее вставляем ссылку на репозиторий git. На последнем шаге Deployer попросит вас делиться анонимной статистикой (можно отказаться). После инициализации создастся файл deploy.php в папке проекта. Это конфигурационный файл, его необходимо настроить для деплоя проекта.

В deploy.php прописываются таски, git-репозиторий, хосты (удаленные сервера, локальные, а также инстансы Amazon EC2).

Настройка stage

Для настройки stage в функции host прописываем

host('99.999.999.999')
->user('testproject')
->port('99')
->stage('production')
->set('deploy_path', '/var/www/testproject');

Подключение к серверу по SSH-ключу

Для работы Deployer необходима настройка SSH-ключей. Для этого в терминале прописываем

ssh-keygen

Приватный ключ сохранится в папке /home/.ssh/id_rsa

Публичный ключ сохранится в /home/.ssh/id_rsa.pub

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

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

cat ~/.ssh/id_rsa.pub

Копируем ключ и подключаемся к удаленному серверу через root. Меняем пароль пользователю www-data, заново подключаемся, но уже через пользователя www-data. Прописываем в терминале команды для создания папки .ssh и зададим ей права:

mkdir ~/.ssh
chmod 700 ~/.ssh

Откроем файл authorized_key командой

nano ~/.ssh/authorized_keys

Откроется текстовый редактор. Необходимо вставить в файл скопированный ранее ключ. Сохраняем файл комбинацией Ctrl+X и далее жмем Enter.

Ограничиваем права папки

chmod 600 ~/.ssh/authorized_keys

Подключение к GitHub по SSH-ключу

Теперь нужно настроить возможность пула проекта с GitHub без ввода пароля с помощью SSH-ключей. Для этого сначала проверяем наличие SSH-ключей на сервере командой

ls -la ~/.ssh

Если ключей нет, на сервере запускаем команду

ssh-keygen

Она создаст публичный и приватный ключ.

Публичный ключ находится в файле ~/.ssh/id_rsa.pub. Открываем его

cat ~/.ssh/id_rsa.pub

И копируем публичный ключ в буфер обмена.

После чего заходим в настройки репозитория GitHub, в левом меню нажимаем на Deploy Keys и далее Add deploy key.

Shared-файлы

Shared-файлы и папки - это файлы и папки общие для всех релизов, они не будут изменяться при деплое очередного релиза.

Зададим shared_files и оставим поле shared_dirs пустым.

set('shared_files', ['app/config/config.php','element/app/config/config.php']);
set('shared_dirs', []);

Таск запуска npm install

set('bin/npm', function ()
{
	return run('which npm');
});

desc('Install npm packages');
task('npm:install', function ()
{
	if (has('previous_release'))
	{
		if (test('[ -d {{previous_release}}/vue/node_modules ]'))
		{
			run('cp -R {{previous_release}}/vue/node_modules {{release_path}}/vue');
		}
	}
	run("cd {{release_path}}/vue && {{bin/npm}} install");
});

task('npm:build', function ()
{
	run("cd {{release_path}}/vue && {{bin/npm}} run build");
});

Таск запуска миграций

Мы используем Phalcon-миграции, однако можно использовать и другие.

task('migration', function () {
    run("cd {{release_path}}/ && vendor/bin/phalcon.php migration run");
})->desc('Phalcon migration');

Рецепты

Deployer имеет библиотеку со сторонними рецептами. Рецепты - это предустановки к конфигурационному файлу, упрощающие деплой. Deployer имеет ряд сторонних рецептов для быстрого деплоя.

Скачать рецепты можно командой

composer require deployer/recipes --dev

После этого рецепт нужно подключить к основному конфигурационному файлу. Напимер, для подключения рецепта Slack вставляем в код файла deploy.php

require 'recipe/slack.php';

С полным списком рецептов и их подробной установкой можно ознакомиться по этой ссылке.

Основной (common)-рецепт уже включает в себя некоторые параметры. Например, чтобы получить список доступных параметров, используем параметр конфига dump.

dep config:dump

Для отображения текущего релиза деплоя используем

dep config:current

Отобразить инвентарные данные хоста:

dep config:hosts

Деплой

Для деплоя необходимо использовать команду

dep deploy

Задать количество релизов

В конфиг файле прописываем

set('keep_releases', 10);

Эта команда задаст 10 релизов.

Откат

Для отката используем

dep rollback

Быстрое подключение по SSH

Можно использовать для быстрого подключения по SSH команду

dep ssh

Share with friends:

Facebook Twitter Vkontakte