- Установка
- Инициализация
- Настройка stage
- Подключение к GitHub по SSH-ключу
- Shared-файлы
- Таск запуска npm install
- Таск запуска миграций
- Рецепты
- Деплой
- Задать количество релизов
- Откат
- Быстрое подключение по SSH
Установка
Все действия по установке и настройке 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