Установка

Все действия по установке и настройке 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

Поделиться:

Facebook Twitter Vkontakte