Capistrano
Capistrano est un outil open-source permettant d'exécuter des scripts sur les serveurs distants. Le plus souvent, il est utilisé pour déployer des applications via une connexion SSH. Capistrano est écrit en Ruby comme un composant du framework Ruby on Rails, il est donc largement utilisé pour le déploiement d'applications Ruby. Néanmoins, il peut facilement fonctionner avec d'autres langages de programmation, par exemple PHP.
Ainsi, dans cette instruction, nous découvrirons comment déployer une application PHP à distance, via l'outil Capistrano. Dans un premier temps, vous aurez besoin :
- D'un environnement PHP déjà créé avec le serveur d'application Apache ;
- D'une clé publique SSH générée et ajoutée à votre tableau de bord RAGNARØKKR ;
- D'un dépôt GIT avec l'application PHP que vous souhaitez déployer (pour l'instant, l'outil Capistrano 3 ne prend en charge que le type GIT VCS) ;
- D'une copie locale de ce projet sur votre ordinateur.
Note : toutes les commandes ci-dessous doivent être exécutées chez l'utilisateur de votre machine locale, comme celle que vous avez utilisée lors de la génération de la paire de clés SSH, afin d'éviter les erreurs de permission/connexion.
Installer Capistrano
1. Pour utiliser Capistrano, vous devez avoir installé Ruby sur votre ordinateur local. Par conséquent, exécutez la commande appropriée :
2. Ensuite, installez l'outil Capistrano en entrant la commande suivante :
3. Assurez-vous d'avoir le dossier config dans le répertoire local avec votre projet (car il s'agit d'un dossier par défaut avec les configurations pour Ruby on Rails). Créez ce dossier si vous ne l'avez pas.
Capifier votre application
Après l'installation, vous devez capifier votre application, c'est-à-dire configurer Capistrano pour le déploiement de l'application. Pour ce faire, naviguez jusqu'au dossier racine de votre projet PHP local et exécutez la commande suivante :
Cela permettra de créer de nouveaux fichiers et répertoires dans votre projet :
- Capfile : fichier Capistrano principal qui prend en charge les configurations et les globs nécessaires pour les tâches personnalisées
- config/deploy/ : avec deux fichiers (production.rb et staging.rb) pour les paramètres de déploiement spécifiques à un environnement
- config/deploy.rb : script Ruby qui contient les configurations des applications et les instructions Capistrano
- lib/capistrano/tasks/ : dossier pour vos tâches personnalisées
On aura donc la structure suivante :
Définir des configurations personnalisées
1. Naviguez jusqu'au fichier config/deploy.rb et configurez-le en fonction de vos paramètres. Au départ, il ressemble à ce qui suit :
Modifiez les chaînes suivantes :
- Entrez un nom pour votre application :
- Indiquez l'URL du dépôt du VCS avec votre code d'application PHP :
Note : vous devez avoir une clé publique SSH attachée à votre compte GIT (la même que celle que vous avez ajoutée au tableau de bord RAGNARØKKR). Sinon, vous obtiendrez l’erreur « Permission refusée » lorsque vous essayerez de déployer votre application.
Vous pouvez également utiliser le lien https: du type suivant :
Dans ce cas, l'authentification n'est pas nécessaire et vous pouvez indiquer une URL vers n'importe quel référentiel PHP open-source que vous souhaitez déployer.
- Décommentez la ligne suivante et indiquez le répertoire dans lequel votre application sera déployée (cette valeur est celle par défaut pour les serveurs d'applications PHP de RAGNARØKKR) :
- Décommentez les lignes suivantes :
- Supprimez les chaînes avec le code tasks à la fin du fichier (à partir de la commande namespace : deploy do) et coller les lignes suivantes à la place :
Vous pouvez également configurer des paramètres supplémentaires dans ce fichier (par exemple, spécifier une branche de dépôt ou lier des fichiers/dossiers supplémentaires) si cela est nécessaire.
Enregistrez les modifications que vous avez apportées.
2. Ensuite, naviguez vers le fichier config/deploy/staging.rb. Le contenu par défaut est :
Tout d'abord, modifiez trois rôles : les chaînes dans la section Simple Role Syntax en collant {nodeid-uid@gate.app.rag-control.hosteur.com} à la place de {deploy@example.com}. Utilisez les valeurs suivantes :
- nodeid : valeur de l'ID nœud du conteneur du serveur d'application Apache dans votre environnement ;
- uid : nombre avant le symbole @ dans votre chaîne de connexion SSH.
Dans la section Extended Server Syntax, modifiez la ligne des paramètres du serveur :
- Remplacez ‘example.com’ par votre hôte SSH (‘gate.app.rag-control.hosteur.com’)
- Entrez la valeur ‘{nodeid}-{uid}’ pour le paramètre utilisateur, par exemple ‘1417-185’
Ainsi, la ligne des paramètres de votre serveur ressemblera à ce qui suit :
server 'gate.app.rag-control.hosteur.com’, user: ‘1417-185’, roles: %w{web app}, my_property: :my_value
Enfin, indiquez le port du serveur qui sera utilisé pour la connexion SSH :
N'oubliez pas de sauvegarder ces configurations personnalisées.
3. Ouvrez le fichier Capfile (situé dans le dossier racine de votre projet local) et ajoutez-y la ligne suivante :
Configurer l'agent SSH
1. Assurez-vous que votre ssh-agent est opérationnel dans votre système.
2. Ajoutez votre clé SSH privée à l'agent. Elle doit correspondre à la clé publique que vous avez ajoutée au tableau de bord.
3. Vous pouvez également vérifier si la bonne clé a été ajoutée en entrant la commande ssh-add -l.
Vérifier les configurations
Maintenant, assurons-nous que tout a été configuré correctement.
Naviguez jusqu'au dossier racine de votre projet local et exécutez la commande ci-dessous :
Capistrano se connectera au conteneur distant, créera les dossiers requis dans le répertoire de déploiement (indiqué dans le paramètre set :deploy_to), et vérifiera sur les serveurs locaux et distants la présence de tous les fichiers nécessaires, les droits requis, les outils, etc.
S’il manque quelque chose, vous recevrez un message d'erreur correspondant.
Déployer l'application
Enfin, procédez au déploiement de l'application. Pour ce faire, exécutez la commande ci-dessous dans le dossier racine du projet :
Lorsque cette opération est terminée avec succès, naviguez jusqu'à l'URL de votre environnement et assurez-vous que votre application a été déployée.