Все действия по установке и настройке 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 в функции host прописываем
host('99.999.999.999') ->user('testproject') ->port('99') ->stage('production') ->set('deploy_path', '/var/www/testproject');
Для работы 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-ключей. Для этого сначала проверяем наличие SSH-ключей на сервере командой
ls -la ~/.sshЕсли ключей нет, на сервере запускаем команду
ssh-keygenОна создаст публичный и приватный ключ. Публичный ключ находится в файле ~/.ssh/id_rsa.pub. Открываем его
cat ~/.ssh/id_rsa.pubИ копируем публичный ключ в буфер обмена. После чего заходим в настройки репозитория GitHub, в левом меню нажимаем на Deploy Keys и далее Add deploy key.
Shared-файлы и папки - это файлы и папки общие для всех релизов, они не будут изменяться при деплое очередного релиза. Зададим shared_files и оставим поле shared_dirs пустым.
set('shared_files', ['app/config/config.php','element/app/config/config.php']); set('shared_dirs', []);
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 команду
dep ssh