Comment déployer automatiquement des applications Laravel avec Deployer sur Ubuntu 16.04

introduction

Laravel est un framework Web PHP open-source conçu pour faciliter les tâches de développement Web courantes, telles que l’authentification, le routage et la mise en cache. Deployer est un outil de déploiement PHP open source offrant une prise en charge immédiate de nombreux frameworks populaires, notamment Laravel, CodeIgniter, Symfony et Zend Framework.

Deployer automatise les déploiements en clonant une application d’un référentiel Git sur un serveur, en installant des dépendances avec Composer et en configurant l’application afin que vous n’ayez pas à le faire manuellement. Cela vous permet de consacrer plus de temps au développement, au lieu des téléchargements et des configurations, et au déploiement plus fréquent.

Dans ce tutoriel, vous allez déployer une application Laravel automatiquement sans aucun temps d’arrêt. Pour ce faire, vous allez préparer l’environnement de développement local à partir duquel vous allez déployer le code, puis configurer un serveur de production avec Nginx et une base de données MySQL pour desservir l’application.

Conditions préalables

Avant de commencer ce guide, vous aurez besoin des éléments suivants:

Étape 1 - Configuration de votre environnement de développement local

Comme vous allez créer et déployer votre application à partir de votre ordinateur local, commencez par configurer votre environnement de développement local. Deployer contrôlera l’intégralité du processus de déploiement à partir de votre ordinateur local. Commencez donc par l’installer.

Sur votre * machine locale *, ouvrez le terminal et téléchargez le programme d’installation de Deployer en utilisant + curl +:

curl -LO https://deployer.org/deployer.phar

Ensuite, exécutez un court script PHP pour vérifier que le programme d’installation correspond au hachage SHA-1 du dernier programme d’installation disponible sur Deployer - page de téléchargement. Remplacez la valeur en surbrillance par le dernier hash:

php -r "if (hash_file('sha1', 'deployer.phar') === '') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('deployer.phar'); } echo PHP_EOL;"
OutputInstaller verified

Faites en sorte que Deployer soit disponible dans tout le système. Notez que si vous utilisez Windows ou macOS sur votre ordinateur local, vous devrez peut-être créer le répertoire + / usr / local / bin / dep + avant d’exécuter cette commande:

sudo mv deployer.phar /usr/local/bin/dep

Rendez-le exécutable:

sudo chmod +x /usr/local/bin/dep

Ensuite, créez un projet Laravel sur votre * machine locale *:

composer create-project --prefer-dist laravel/laravel  "5.5.*"

Vous avez installé tous les logiciels requis sur votre ordinateur local. Cela fait, nous allons créer un référentiel Git pour l’application.

Étape 2 - Connexion à votre référentiel Git distant

Deployer a été conçu pour permettre aux utilisateurs de déployer du code de n’importe où. Pour permettre cette fonctionnalité, les utilisateurs doivent envoyer du code dans un référentiel sur Internet à partir duquel Deployer copie ensuite le code sur le serveur de production. Nous allons utiliser Git, un système de contrôle de version à code source ouvert, pour gérer le code source de l’application Laravel. Vous pouvez vous connecter au serveur Git à l’aide du protocole SSH. Pour ce faire, vous devez générer des clés SSH de manière sécurisée. Ceci est plus sécurisé que l’authentification par mot de passe et évite de taper le mot de passe avant chaque déploiement.

Exécutez la commande suivante sur votre * ordinateur local * pour générer la clé SSH. Notez que le + -f + spécifie le nom du fichier du fichier de clé et vous pouvez le remplacer par votre propre nom. Il générera une paire de clés SSH (nommées ++ et + .pub +) dans le dossier + ~ / .ssh / +.

ssh-keygen -t rsa -b 4096 -f  ~/.ssh/

Il est possible que vous disposiez de davantage de clés SSH sur votre machine locale. Par conséquent, configurez le client SSH pour qu’il sache quelle clé privée SSH à utiliser lors de la connexion à votre serveur Git.

Créez un fichier de configuration SSH * sur votre ordinateur local *:

touch ~/.ssh/config

Ouvrez le fichier et ajoutez un raccourci vers votre serveur Git. Cela devrait contenir la directive + HostName + (pointant vers le nom d’hôte de votre serveur Git) et la directive + IdentityFile + (pointant vers le chemin du fichier de la clé SSH que vous venez de créer:

~ / .ssh / config

Host
   HostName
   IdentityFile ~/.ssh/

Enregistrez et fermez le fichier, puis limitez ses autorisations:

chmod 600 ~/.ssh/config

Votre client SSH saura maintenant quelle clé privée utiliser pour se connecter au serveur Git.

Affichez le contenu de votre fichier de clé publique à l’aide de la commande suivante:

cat ~/.ssh/.pub

Copiez la sortie et ajoutez la clé publique à votre serveur Git.

Si vous utilisez un service d’hébergement Git, consultez sa documentation pour savoir comment ajouter des clés SSH à votre compte:

Vous pourrez maintenant vous connecter à votre serveur Git avec votre ordinateur local. Testez la connexion avec la commande suivante:

ssh -T

Si cette commande aboutit à une erreur, vérifiez que vous avez ajouté vos clés SSH correctement en vous référant à la documentation de votre service d’hébergement Git, puis essayez à nouveau de vous connecter.

Avant de transférer l’application vers le référentiel Git distant et de la déployer, commençons par configurer le serveur de production.

Étape 3 - Configuration de l’utilisateur de l’utilisateur

Deployer utilise le protocole SSH pour exécuter de manière sécurisée des commandes sur le serveur. Pour cette raison, la première étape de la configuration du serveur de production consiste à créer un utilisateur que Deployer peut utiliser pour se connecter et exécuter des commandes sur votre serveur via SSH.

Connectez-vous à votre serveur LEMP avec un utilisateur sudo non root et créez un nouvel utilisateur appelé «* deployer *» à l’aide de la commande suivante:

sudo adduser deployer

Laravel a besoin de répertoires inscriptibles pour stocker les fichiers mis en cache et les téléchargements. Les répertoires créés par l’utilisateur * deployer * doivent donc être inscriptibles par le serveur Web Nginx. Ajoutez l’utilisateur au groupe * www-data * pour faire ceci:

sudo usermod -aG www-data deployer

L’autorisation par défaut pour les fichiers créés par l’utilisateur * deployer * doit être + 644 + pour les fichiers et + 755 + pour les répertoires. De cette façon, l’utilisateur * deployer * pourra lire et écrire les fichiers, tandis que le groupe et les autres utilisateurs pourront les lire.

Pour ce faire, définissez umask par défaut de * deployer * sur + 022 +:

sudo chfn -o umask=022 deployer

Nous allons stocker l’application dans le répertoire + / var / www / html / +, changez donc la propriété du répertoire en utilisateurs * deployer * et * www-data *.

sudo chown deployer:www-data /var/www/html

L’utilisateur * deployer * doit pouvoir modifier les fichiers et les dossiers du répertoire + / var / www / html +. Cela étant, tous les nouveaux fichiers et sous-répertoires créés dans le répertoire + / var / www / html doivent hériter de l’identifiant de groupe du dossier (* www-data *). Pour ce faire, définissez l’ID du groupe sur ce répertoire à l’aide de la commande suivante:

sudo chmod g+s /var/www/html

Deployer clonera le référentiel Git sur le serveur de production à l’aide de SSH afin que vous souhaitiez vous assurer que la connexion entre votre serveur LEMP et le serveur Git est sécurisée. Nous utiliserons la même approche que nous avons utilisée pour notre machine locale et nous générerons une clé SSH pour l’utilisateur * deployer *.

Basculez vers l’utilisateur * deployer * sur votre serveur:

su - deployer

Ensuite, générez une paire de clés SSH en tant qu’utilisateur * deployer *. Cette fois, vous pouvez accepter le nom de fichier par défaut des clés SSH:

ssh-keygen -t rsa -b 4096

Afficher la clé publique:

cat ~/.ssh/id_rsa.pub

Copiez la clé publique et ajoutez-la à votre serveur Git comme vous l’avez fait à l’étape précédente.

Votre ordinateur local communiquera également avec le serveur via SSH. Vous devez donc générer des clés SSH pour l’utilisateur * deployer * sur votre ordinateur local et ajouter la clé publique au serveur.

Sur votre * ordinateur local *, exécutez la commande suivante. N’hésitez pas à remplacer par un nom de fichier de votre choix:

ssh-keygen -t rsa -b 4096 -f  ~/.ssh/

Copiez le résultat de la commande suivante contenant la clé publique:

cat ~/.ssh/.pub

Sur * votre serveur * en tant qu’utilisateur * deployer *, exécutez les opérations suivantes:

nano ~/.ssh/authorized_keys

Collez la clé publique dans l’éditeur et appuyez sur les touches + CTRL-X +, + Y +, puis + ENTER + pour enregistrer et quitter.

Limitez les autorisations du fichier:

chmod 600 ~/.ssh/authorized_keys

Revenez maintenant à l’utilisateur sudo:

exit

Votre serveur peut maintenant se connecter au serveur Git et vous pouvez vous connecter au serveur avec l’utilisateur * deployer * de votre ordinateur local.

Connectez-vous de votre ordinateur local à votre serveur en tant qu’utilisateur * deployer * pour tester la connexion:

ssh deployer@  -i ~/.ssh/

Après vous être connecté en tant que * deployer *, testez également la connexion entre votre serveur et le serveur Git:

ssh -T

Enfin, quittez le serveur:

exit

À partir de là, nous pouvons passer à la configuration de Nginx et de MySQL sur notre serveur Web.

Étape 4 - Configuration de Nginx

Nous sommes maintenant prêts à configurer le serveur Web qui servira l’application. Cela impliquera de configurer la racine du document et la structure de répertoires que nous utiliserons pour contenir les fichiers Laravel. Nous allons configurer Nginx pour servir nos fichiers depuis le répertoire + / var / www / laravel +.

Tout d’abord, nous devons créer une configuration de bloc https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04. fichier] pour le nouveau site.

Connectez-vous au serveur en tant qu’utilisateur sudo et créez un nouveau fichier de configuration. N’oubliez pas de remplacer par votre propre nom de domaine:

sudo nano /etc/nginx/sites-available/

Ajoutez un bloc + serveur + en haut du fichier de configuration:

example.com '> / etc / nginx / sites-available /

server {
       listen 80;
       listen [::]:80;

       root /var/www/html//current/public;
       index index.php index.html index.htm index.nginx-debian.html;

       server_name  www.;
}

Les deux directives + listen + 'en haut indiquent à Nginx les ports à écouter, et la directive + root + définit la racine du document où Laravel sera installé. Le `+ courant / public + dans le chemin du répertoire racine est un lien symbolique qui pointe vers la dernière version de l’application. En ajoutant la directive + index +, nous demandons à Nginx de servir d’abord les fichiers + index.php + avant de rechercher leurs équivalents HTML lorsqu’ils demandent un emplacement de répertoire. La directive + nom_serveur + doit être suivie de votre domaine et de ses alias.

Nous devrions également modifier la manière dont Nginx traitera les demandes. Cela se fait via la directive + try_files +. Nous voulons qu’il essaie d’abord de servir la demande en tant que fichier et, s’il ne peut pas trouver un fichier portant le nom correct, il doit essayer de servir le fichier d’index par défaut pour un répertoire qui correspond à la demande. Sinon, il devrait transmettre la requête au fichier + index.php + en tant que paramètre de requête.

example.com '> / etc / nginx / sites-available /

server {
       listen 80;
       listen [::]:80;

       root /var/www/html//current/public;
       index index.php index.html index.htm index.nginx-debian.html;

       server_name  www.;

       location / {
               try_files $uri $uri/ /index.php?$query_string;
       }

Ensuite, nous devons créer un bloc qui gère l’exécution réelle de tous les fichiers PHP. Cela s’appliquera à tous les fichiers se terminant par .php. Il essaiera le fichier lui-même, puis essaiera de le transmettre en tant que paramètre au fichier + index.php +.

Nous allons définir les directives + fastcgi + pour indiquer à Nginx d’utiliser le chemin d’accès réel de l’application (résolu après avoir suivi le lien symbolique), au lieu du lien symbolique. Si vous n’ajoutez pas ces lignes à la configuration, indiquez le chemin où les points de lien symboliques seront mis en cache, ce qui signifie qu’une ancienne version de votre application sera chargée après le déploiement. Sans ces directives, vous devriez effacer manuellement le cache après chaque déploiement et les requêtes adressées à votre application pourraient éventuellement échouer. De plus, la directive + fastcgi_pass + s’assurera que Nginx utilise le socket que php7-fpm utilise pour la communication et que le fichier + index.php + est utilisé comme index pour ces opérations.

example.com '> / etc / nginx / sites-available /

server {
       listen 80;
       listen [::]:80;

       root /var/www/html//current/public;
       index index.php index.html index.htm index.nginx-debian.html;

       server_name  www.;

       location / {
               try_files $uri $uri/ /index.php?$query_string;
       }


       location ~ \.php$ {







       }

Enfin, nous voulons nous assurer que Nginx n’autorise pas l’accès aux fichiers cachés + .htaccess +. Pour ce faire, nous ajouterons un bloc d’emplacement supplémentaire appelé + location ~ / \. Ht + et, dans ce bloc, une directive spécifiant + deny all; +.

Après avoir ajouté ce dernier bloc d’emplacement, le fichier de configuration ressemblera à ceci:

example.com '> / etc / nginx / sites-available /

server {
       listen 80;
       listen [::]:80;

       root /var/www/html//current/public;
       index index.php index.html index.htm index.nginx-debian.html;

       server_name  www.;

       location / {
               try_files $uri $uri/ /index.php?$query_string;
       }


       location ~ \.php$ {
               include snippets/fastcgi-php.conf;

               fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
               fastcgi_param DOCUMENT_ROOT $realpath_root;

               fastcgi_pass unix:/run/php/php7.0-fpm.sock;

       }

       location ~ /\.ht {
               deny all;
       }

}

Enregistrez et fermez le fichier (+ CTRL-X +, '+ Y + , puis + ENTER + ), puis activez le nouveau bloc serveur en créant un lien symbolique vers le répertoire + sites-enabled + `:

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Testez votre fichier de configuration pour les erreurs de syntaxe:

sudo nginx -t

Si vous voyez des erreurs, revenez en arrière et revérifiez votre fichier avant de continuer.

Redémarrez Nginx pour appliquer les modifications nécessaires:

sudo systemctl restart nginx

Le serveur Nginx est maintenant configuré. Nous allons ensuite configurer la base de données MySQL de l’application.

Étape 5 - Configuration de MySQL

Après l’installation, MySQL crée un utilisateur * root * par défaut. Cependant, cet utilisateur a des privilèges illimités. Il est donc déconseillé d’utiliser l’utilisateur * root * pour la base de données de votre application. Au lieu de cela, nous allons créer la base de données pour l’application avec un utilisateur dédié.

Connectez-vous à la console MySQL en tant que * root *:

mysql -u root -p

Cela vous demandera le mot de passe * root *.

Ensuite, créez une nouvelle base de données pour l’application:

CREATE DATABASE  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ensuite, créez un nouvel utilisateur de base de données. Pour les besoins de ce didacticiel, nous allons appeler cet utilisateur ` avec le mot de passe `, bien que vous deviez remplacer le mot de passe par un mot de passe fort de votre choix.

CREATE USER ''@'localhost' IDENTIFIED BY '';

Accordez des privilèges sur la base de données à l’utilisateur:

GRANT ALL ON .* TO ''@'localhost';

Ensuite, rechargez les privilèges:

FLUSH PRIVILEGES;

Et enfin, quittez la console MySQL:

EXIT;

La base de données et l’utilisateur de votre application sont maintenant configurés et vous êtes presque prêt à exécuter votre premier déploiement.

Étape 6 - Déploiement de l’application

Jusqu’à présent, vous avez configuré tous les outils et programmes nécessaires au fonctionnement de Deployer. Tout ce qui reste à faire avant d’exécuter votre premier déploiement est de terminer la configuration de votre application Laravel et de Deployer lui-même, puis d’initialiser et de transférer l’application dans votre référentiel Git distant.

Ouvrez le terminal sur votre * ordinateur local * et modifiez le répertoire de travail dans le dossier de l’application à l’aide de la commande suivante:

cd

À partir de ce répertoire, exécutez la commande suivante qui crée un fichier nommé + deploy.php + dans le dossier ++, qui contiendra les informations de configuration et les tâches à déployer:

dep init -t Laravel

Ensuite, ouvrez le fichier + deploy.php + avec votre éditeur de texte ou IDE préféré. La troisième ligne comprend un script PHP contenant les tâches et les configurations nécessaires pour déployer une application Laravel:

deploy.php

<?php
namespace Deployer;

require 'recipe/laravel.php';

. . .

Ci-dessous se trouvent quelques champs que vous devez éditer pour s’aligner sur votre configuration:

  • Sous + // Nom du projet +, ajoutez le nom de votre projet Laravel.

  • Sous + // Project Repository +, ajoutez le lien à votre référentiel Git.

  • Dans la section + // Hosts +, ajoutez l’adresse IP ou le nom de domaine de votre serveur à la directive + host () +, le nom de votre utilisateur Deployer (* deployer * dans nos exemples) à + ​​user () + `directive. Vous devez également ajouter la clé SSH créée à l’étape 3 à la directive `+ identifierFile () +. Enfin, vous devez ajouter le chemin de fichier du dossier contenant votre application.

Lorsque vous avez terminé d’éditer ces champs, ils doivent ressembler à ceci:

deploy.php

...
// Project name
set('application', '');

// Project repository
set('repository', '');

. . .

// Hosts

host('')

   ->identityFile('~/.ssh/')
   ->set('deploy_path', '/var/www/html/');

Ensuite, commentez la dernière ligne du fichier, + before ('deploy: symlink', 'artisan: migrate'); +. Cette ligne indique à Deployer d’exécuter automatiquement les migrations de bases de données et en les commentant, nous les désactivons. Si vous ne le commentez pas, le déploiement échouera car cette ligne nécessite que les informations d’identification de la base de données appropriées soient sur le serveur, ce qui ne peut être ajouté qu’à l’aide d’un fichier qui sera généré lors du premier déploiement:

deploy.php

...
// Migrate database before symlink new release.

//before('deploy:symlink', 'artisan:migrate');

Avant de pouvoir déployer le projet, nous devons d’abord le transférer dans le référentiel Git distant.

Sur votre * machine locale *, changez le répertoire de travail dans le dossier de votre application:

cd

Exécutez la commande suivante dans votre répertoire ++ pour initialiser un référentiel Git dans le dossier du projet:

git init

Ensuite, ajoutez tous les fichiers du projet au référentiel:

git add .

Valider les modifications:

git commit -m ''

Ajoutez votre serveur Git au référentiel local avec la commande suivante. Assurez-vous de remplacer le texte surligné par l’URL de votre propre référentiel distant:

git remote add origin

Transférez les modifications dans le référentiel Git distant:

git push origin master

Enfin, lancez votre premier déploiement à l’aide de la commande + dep +:

dep deploy

Si tout se passe bien, vous devriez voir une sortie comme celle-ci avec + avec succès déployé! + À la fin:

Deployer's output✈︎ Deploying master on
✔ Executing task deploy:prepare
✔ Executing task deploy:lock
✔ Executing task deploy:release
➤ Executing task deploy:update_code
✔ Ok
✔ Executing task deploy:shared
✔ Executing task deploy:vendors
✔ Executing task deploy:writable
✔ Executing task artisan:storage:link
✔ Executing task artisan:view:clear
✔ Executing task artisan:cache:clear
✔ Executing task artisan:config:cache
✔ Executing task artisan:optimize
✔ Executing task deploy:symlink
✔ Executing task deploy:unlock
✔ Executing task cleanup
Successfully deployed!

La structure suivante sera créée sur votre serveur, dans le répertoire + / var / www / html / +:

├── .dep
├── current -> releases/1
├── releases
│   └── 1
└── shared
   ├── .env
   └── storage

Vérifiez cela en exécutant la commande suivante * sur votre serveur *, qui répertorie les fichiers et les répertoires du dossier:

ls /var/www/html/
Outputcurrent  .dep  releases  shared

Voici ce que chacun de ces fichiers et répertoires contient:

  • Le répertoire + releases + contient les versions de déploiement de l’application Laravel.

  • + current + est un lien symbolique vers la dernière version.

  • Le répertoire + .dep + contient des métadonnées spéciales pour Deployer.

  • Le répertoire + shared + contient le fichier de configuration + .env + et le répertoire + storage + qui sera lié symboliquement à chaque version.

Cependant, l’application ne fonctionnera pas encore car le fichier + .env + est vide. Ce fichier est utilisé pour contenir des configurations importantes telles que la clé d’application, une chaîne aléatoire utilisée pour les cryptages. S’il n’est pas défini, vos sessions utilisateur et autres données cryptées ne seront pas sécurisées. L’application dispose d’un fichier + .env + sur votre * machine locale *, mais le fichier + .gitignore + de Laravel l’exclut du référentiel Git car le stockage de données sensibles comme les mots de passe dans un référentiel Git n’est pas une bonne idée et, aussi, l’application nécessite des paramètres différents sur votre serveur. Le fichier + .env + contient également les paramètres de connexion à la base de données. C’est pourquoi nous avons désactivé les migrations de base de données pour le premier déploiement.

Configurons l’application sur votre serveur.

Connectez-vous à votre serveur en tant qu’utilisateur * deployer *:

ssh deployer@  -i ~/.ssh/

Exécutez la commande suivante * sur votre serveur *, puis copiez et collez votre fichier + .env + local dans l’éditeur:

nano /var/www/html//shared/.env

Avant de pouvoir le sauvegarder, vous devez apporter certaines modifications. Définissez + APP_ENV + sur + production,` + APP_DEBUG` sur + + faux,` + APP_LOG_LEVEL` sur + erreur + et n’oubliez pas de remplacer la base de données, l’utilisateur de la base de données et le mot de passe. Vous devriez également remplacer ++ par votre propre domaine:

/var/www/html/laravel-app/shared/.env

APP_NAME=Laravel
APP_ENV=
APP_KEY=base64:cA1hATAgR4BjdHJqI8aOj8jEjaaOM8gMNHXIP8d5IQg=
APP_DEBUG=
APP_LOG_LEVEL=
APP_URL=http://

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Enregistrez le fichier et fermez l’éditeur.

Décommentez maintenant la dernière ligne du fichier + deploy.php + sur votre ordinateur local:

deploy.php

...
// Migrate database before symlink new release.

before('deploy:symlink', 'artisan:migrate');

Pour vérifier que cette configuration fonctionne, déployez l’application une fois de plus. Exécutez la commande suivante * sur votre ordinateur local *:

dep deploy

Maintenant, votre application fonctionnera correctement. Si vous visitez le nom de domaine de votre serveur (), la page de destination suivante s’affiche:

image: https: //assets.digitalocean.com/laraveldeployer/deployerimg.png [page d’accueil de Laravel]

Il n’est pas nécessaire de modifier le fichier + .env + sur votre serveur avant tous les déploiements. Un déploiement typique n’est pas aussi compliqué que le premier et se fait en quelques commandes seulement.

Étape 7 - Exécution d’un déploiement typique

En dernier lieu, cette section couvrira un processus de déploiement simple, utilisable quotidiennement.

Commencez par modifier l’application avant de déployer à nouveau. Par exemple, vous pouvez ajouter une nouvelle route dans le fichier + routes / web.php +:

/routes/web.php

<?php

. . .

Route::get('/', function () {
   return view('welcome');
});

Commettez ces changements:

git commit -am 'Your commit message.'

Transférez les modifications dans le référentiel Git distant:

git push origin master

Et, enfin, déployez l’application:

dep deploy

Vous avez déployé avec succès l’application sur votre serveur.

Conclusion

Vous avez configuré votre ordinateur local et votre serveur pour déployer facilement votre application Laravel sans interruption de service. L’article ne couvre que les bases de Deployer et comporte de nombreuses fonctions utiles. Vous pouvez déployer sur plusieurs serveurs à la fois et créer des tâches; Par exemple, vous pouvez spécifier une tâche pour sauvegarder la base de données avant la migration. Si vous souhaitez en savoir plus sur les fonctionnalités de Deployer, vous pouvez trouver plus d’informations dans la Deployer documentation.