Parlons Informatique logo
Hébergement

Déployer votre projet avec deployer

par Guy-roland ASSALE - 12/11/2020 100 lecture(s) 0 commentaire
Déployer votre projet avec deployer

Le déploiement d’une application web et une tache qu’on effectue tout le temps. C’est une tâche qui prend énormément de temps et devient rébarbative si on a doit faire des dizaines et des dizaines de déploiement.

Le processus de publication, lorsqu’il est rapide, sécurisé et tolérant aux pannes, peut vous faire gagner énormément du temps pour développer d’autres choses intéressantes. Et la bonne nouvelle, c’est qu’il existe de nombreux outils formidables pour automatiser son déploiement.

Dans cet article, je vais vous présenter un outil de déploiement appelé Deployer. J’aime l’utiliser car il est écrit en PHP, est facile à configurer et possède de nombreuses fonctionnalités pratiques pour intégrer le processus de déploiement dans votre flux de travail.

 

Le processus de déploiement avec WordPress
Tout d’abord, voyons la structure du processus de déploiement avec Deployer. Il se compose de trois parties principales: un serveur de déploiement pour lancer le déploiement, un serveur de production pour héberger votre application et un dépôt git pour stocker le code de votre application.

Lorsque vous lancez un processus de déploiement, vous exécutez un script de déploiement sur le serveur de déploiement. Après cela, le serveur de déploiement se connecte au serveur de production avec SSH et effectue les tâches de maintenance à partir du serveur de production, comme le clonage du code à partir d’un référentiel git, la mise à jour des dépendances de composer et d’autres éléments dont vous avez besoin pour réussir la publication.

 

Installation des clefs SSH

Nous devons créer une clé d’authentification SSH sur un serveur de production et la partager avec un dépôt git. Si vous ne disposez d’aucune clé d’authentification SSH sur votre serveur de déploiement, exécutez la commande ssh-keygen et suivez les instructions. Keygen créera une clé publique dans le fichier ~/.ssh/id_rsa.pub.

 

Vous pouvez maintenant l’installer sur le compte de votre dépôt. En outre, il est préférable de créer une clé SSH sur votre serveur de déploiement pour obtenir la confiance sur la machine de production. Utilisez ces commandes pour établir une connexion SSH sans mot de passe entre les serveurs de déploiement et de production.


vagrant@localserver:~$ ssh-keygen

vagrant@localserver:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub www-data@my_project.com

 

Une fois tous les certificats installés, nous sommes prêts à installer Deployer.

 

Installation de deployer

L’installation de Deployer est aussi simple que l’installation de composer. Vous devez télécharger l’archive PHP et en faire une commande globale:


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

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

chmod +x /usr/local/bin/dep

 

Vérifions la version de Deployer pour voir si tout est correctement installé:


vagrant@localserver:~$ dep --version

Deployer 6.0.3

 

Tout semble parfait et nous sommes prêts à créer notre premier script de déploiement. Si ce n’est pas le cas, allez sur la page d’installation de Deployer (https://deployer.org/docs/installation.html) pour en apprendre davantage.

 

Votre premier script de déploiement

Pour initialiser Deployer pour votre projet, exécutez dep init. Cela exécutera un utilitaire pour générer un script de déploiement, qui vous demandera un type de projet et un lien de dépôt et créera le fichier deploy.php dans le répertoire actuel. Jetons un coup d’œil à ce fichier et aux principales fonctions utilisées dans une recette.
Les fonctions set and get fonctionnent avec les valeurs de configuration, et un raccourci d’un getter peut être utilisé avec une commande run:


set('current_path', '~/my_application');

run('rm {{current_path}}/runtime/*');

 

Utilisateur SSH pour votre application dans notre script de déploiement:


host('my_project.com')

->ser('www-data')

->set('deploy_path', '~/{{application}}');

 

Pour définir vos propres tâches, utilisez la fonction task et run pour exécuter une commande sur le serveur de production:

 


task('disk_free', function() {

run('df -h /');

writeln($df);

});

 

Et puis exécutez-le avec dep et le nom de la fonction en tant que paramètre:


vagrant@localserver:/vagrant/deployer$ dep disk_free

Executing task disk_free

Filesystem    Size    Used    Avail    Use%    Mounted   on

/dev/md0      7.4G     4.7G   2.4 67% /

ok

Vous pouvez maintenant parcourir le fichier de déploiement et modifier tous les paramètres nécessaires pour la configuration de votre application.

 

Déployer en production

Nous avons déjà installé Deployer, installé des certificats SSL sur les serveurs de déploiement et de production, et créé le script de déploiement. Il est donc enfin temps de tout rassembler et de faire le premier déploiement en production.

Pour déployer votre application, appelez simplement dep deploy
Si quelque chose ne va pas, vous pouvez revenir à la version précédemment déployée en une seule étape:

 


vagrant@localserver:~$ dep rollback

Executing task rollback

 

Voyons maintenant ce qui a été créé sur notre serveur de production. Grâce à Deployer, nous pouvons le faire facilement avec des commandes de raccourci. Essayez dep ssh pour vous connecter directement à un serveur en utilisant la configuration du script de déploiement, ou exécutez à distance une commande via le tunnel SSH avec dep run. De plus, cette commande prend en charge les variables que nous avons définies dans le script.

 

L’essentiel est le répertoire releases, où Deployer stocke les dernières versions de notre application. Après chaque déploiement ou rollback réussi, il lie la version actuelle à la version activée. Enfin, nous avons un répertoire partagé, qui stocke les fichiers et les dossiers des shared_dirs et shared_files que nous avons définis dans le fichier de script.

 

Lors du premier déploiement, Deployer copiera ces fichiers dans un répertoire partagé et créera un lien entre le répertoire des versions et le répertoire partagé. La prochaine fois, il ajoutera simplement un lien entre les fichiers de version et les fichiers et dossiers du répertoire partagé. De plus, vous pouvez modifier n’importe quel fichier dans un répertoire partagé et Deployer le conservera sans changement à chaque déploiement – par exemple, cela est utile pour les fichiers de configuration.

 

De plus, si vous avez un fichier composer.json à la racine de votre projet, Deployer appellera composer pour créer un répertoire fournisseur et mettre à jour toutes les dépendances nécessaires. Si vous ne stockez pas le fichier composer dans le répertoire racine, vous pouvez créer une tâche personnalisée pour le mettre à jour.

Ajout d’une tache personnalisée

Chaque équipe a ses propres configurations de déploiement et processus à automatiser, de sorte que Deployer dispose d’outils simples pour étendre la configuration standard et ajouter des tâches personnalisées. Par exemple, votre hébergement peut avoir la règle de stocker les applications et la racine Web à différents endroits, sans droit de modifier la configuration d’Apache ou de Nginx.

Mais il existe un moyen de contourner cette règle: utilisez des liens symboliques. Nous allons donc ajouter une tâche pour cela:

 


task('deploy:public_html', function() {

run('ln -sf {{deploy_path}}/current/web /var/www/my_application.com');

});

 

Et puis ajoutez-le à la tâche de déploiement principale deploy dans le cadre d’un cycle de publication:

 


task('deploy', [
// ...
'deploy:public_html',
// ...
]);

 

Maintenant, exécutez à nouveau le script de déploiement et vérifiez si tout est correct avec
dep ssh
.

 

Recettes tierces

 

Deployer a de nombreuses recettes tierses à intégrer qui peuvent étendre les fonctionnalités de base. Nous pouvons utiliser composer pour les installer:

 

  composer require deployer/recipes --dev  

 

J’aime utiliser la recette de notification Slack. Pour l’activer, nous devons aller sur la page de recette Slack, cliquer sur le bouton Ajouter à Slack et sélectionner le canal pour envoyer des notifications. Ensuite, nous obtiendrons le webhook Slack et ajouterons ce code au déploiement.

 


/ require slack recipe
require 'recipe/slack.php';

// set slack webhook
set('slack_webhook', /* your slack webhook*/);

 

// notify slack after successful deploy
after('success', 'slack:notify:success');

 

Après ces modifications, Deployer enverra un message comme celui-ci au canal de déploiement:

 

Dans ce tutoriel, nous avons installé Deployer et créé un script de déploiement qui peut être utilisé pour déployer notre application à partir d’un dépot git vers un serveur de production en un seul clic.
En outre, il peut être intégré aux processus d’équipe. Par exemple, une application peut être déployée automatiquement après des modifications dans la branche principale et une notification peut être effectuée sur un canal Slack en cas de déploiement réussi.
Si vous avez des questions, n’hésitez pas à poser des questions dans les commentaires de l’article.



Laisser un commentaire

Votre adresse email ne sera pas publier. Les champs requis sont suivis d'un *

Bulletin d'information

Recevez tous les derniers contenus directement dans votre boite e-mail.