Deployer — це безкоштовний, відкритий інструмент для розгортання, написаний на PHP Антоном Медведєвим. Він спрощує процес розгортання PHP-додатків на сервері, автоматизуючи типові завдання, такі як завантаження коду, виконання міграцій та очищення кешу. Це знижує ризики людських помилок і забезпечує стабільність розгортання в різних середовищах.
Встановіть Deployer за допомогою Composer:
composer global require deployer/deployer
Після встановлення перейдіть до каталогу вашого проєкту та виконайте:
dep init
Відповівши на кілька запитань, ви створите файл deploy.php
або deploy.yaml
для вашого рецепту розгортання, який визначає хости, завдання та залежності від інших рецептів.
Завдання задаються за допомогою функції task
. Ви також можете описати завдання за допомогою функції desc
.
Рекомендується використовувати ключ ідентифікації або приватний ключ для підключення до сервера. Додайте його до файлу ~/.ssh/config
.
Host *
IdentityFile ~/.ssh/id_rsa
Далі виконайте наступну команду для налаштування вашого сервера:
dep provision
Команда provision запитає про версії PHP, уподобання бази даних та інші вимоги і встановить все необхідне для роботи вашого додатку.
На завершення, ви можете розгорнути ваш проєкт наступною командою:
dep deploy
Після першого успішного розгортання ваша структура папок виглядатиме так:
~/www // deploy_path
|- current -> releases/1 // Символьне посилання на поточний реліз
|- releases // Директорія для всіх релізів
|- 1 // Останній реліз
|- ...
|- .env -> shared/.env // Символьне посилання на загальний .env файл
|- shared // Спільні файли між релізами
|- ...
|- .env // Загальний .env файл
|- .dep // Конфігураційні файли Deployer
Крім того, вам слід налаштувати конфігурацію веб-сервера для обслуговування вашого додатку з каталогу current
. Приклад конфігурації для Nginx може виглядати так:
root /home/deployer/www/current/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
namespace Deployer;
host('my-server')
->set('hostname', 'my-server.org')
->set('deploy_path', '~/www')
->set('remote_user', 'deployer');
desc('Визначити моє перше завдання');
task('task_a', function () {
run('whoami');
});
desc('Запустити процес зборки npm');
task('task_b', function () {
cd('{{release_path}}');
run('npm install');
run('npm run prod');
});
// Групування завдань
desc('Розгортати ваш проєкт');
task('deploy', [
'task_a',
'task_b',
]);
Deployer також можна налаштувати для роботи з GitHub Actions або GitLab CI/CD.
Дізнайтеся більше, прочитавши документацію та переглянувши вихідний код на GitHub.