Deployer для автоматизації розгортання проєктів у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 20 травня, 2025
Деплой вашого PHP-додатку ніколи не був простішим! З Deployer ви зможете автоматизувати рутинні завдання, скоротивши ризик помилок та забезпечивши стабільні деплої в різних середовищах. Чи готові дізнатися більше про потужні можливості цього інструменту? Читайте статтю далі

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;
}

# Приклад файлу deploy.php

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.