Automatiser le déploiement de votre site web sur votre VPS via GitHub Actions
Objectif
Automatiser le déploiement de votre site web sur un VPS simplifie considérablement la gestion de vos mises à jour. Avec GitHub Actions, vous pouvez configurer un pipeline de déploiement automatique, évitant ainsi les déploiements manuels. Cette méthode garantit un déploiement rapide et fiable, tout en réduisant les risques d'erreurs humaines. Que vous soyez développeur débutant ou expérimenté, ce tutoriel vous permettra de mettre en place une solution professionnelle adaptée à vos besoins.
Découvrez comment automatiser le déploiement de vos applications web avec GitHub Actions sur un VPS OVHcloud.
Prérequis
- Un VPS fonctionnel dans votre compte OVHcloud
- Un compte GitHub actif
- Un dépôt contenant le code de votre site web (facultatif)
- Un VPS configuré avec les services nécessaires (ex. Apache/Nginx, PHP, SGBD, etc.)
- Disposer d'un accès administrateur au VPS (via SSH)
Si besoin, consultez notre guide « Débuter avec un VPS » avant de poursuivre la lecture de ce guide.
En pratique
Afin d'être sûr de remplir les prérequis, consultez les guides « Installer un environnement de développement web sur un VPS ou un serveur dédié » et « Sécuriser un VPS ».
Les étapes principales du guide seront les suivantes :
- Configurer l'accès SSH pour GitHub Actions
- Ajouter la clé privée à GitHub
- Initialiser le dépôt GitHub (facultatif)
- Configurer GitHub Actions pour le déploiement automatique
- Vérifier et tester le workflow GitHub Actions
- Conclusion
Configurer l'accès SSH pour GitHub Actions
Si votre site web existe déjà, identifiez le chemin du répertoire où il est hébergé. Par exemple, sur un VPS OVHcloud, il peut s'agir de /var/www/html. Conservez ce chemin en mémoire, afin de l'utiliser lors de la configuration du pipeline GitHub Actions.
Pour permettre à GitHub Actions de déployer automatiquement votre site web, configurez un accès SSH sécurisé à votre VPS.
Créer une paire de clés SSH
Connectez-vous à votre VPS via SSH et générez une paire de clés SSH dédiée pour GitHub Actions :
Remplacez <user> par l'utilisateur configuré pour se connecter à votre VPS.
Appuyez sur Entrée lorsqu'une passphrase vous est demandée (laisser la passphrase vide facilite l'automatisation du déploiement avec GitHub Actions. Cependant, cela nécessite de sécuriser la clé privée en la limitant à cet usage et en la stockant de manière sécurisée).
Vous obtenez deux fichiers :
/home/<user>/.ssh/deploy_key: clé privée/home/<user>/.ssh/deploy_key.pub: clé publique
Configurer la clé publique sur le VPS
Pour permettre à GitHub Actions de se connecter à votre VPS via SSH et d'y déployer le code de votre site web, ajoutez la clé publique générée à la liste des clés autorisées sur le VPS.
1. Créer le répertoire .ssh :
2. Ajouter la clé publique au fichier authorized_keys :
3. Tester la connexion SSH
Testez la connexion SSH avec la clé privée pour confirmer que l'accès est fonctionnel :
Remplacez <user> par l'utilisateur configuré pour se connecter à votre VPS et <VPS_IP> par l'IP de votre VPS.
Ajouter la clé publique à GitHub
Après avoir configuré la clé publique sur votre VPS, ajoutez-la à votre compte GitHub. Copiez le contenu de la clé publique générée sur votre VPS avec :
Suivez les étapes de la section « Ajout d'une nouvelle clé SSH à votre compte » de la documentation officielle de GitHub pour ajouter votre clé publique à votre compte GitHub.
Configurer l'accès SSH à GitHub sur le VPS
Pour garantir que GitHub utilise la clé privée générée pour établir une connexion SSH sécurisée, configurez le fichier ~/.ssh/config. Cette étape facilite les commandes ultérieures en évitant d'avoir à spécifier manuellement la clé privée à chaque interaction avec GitHub.
Sur votre VPS, créez ou modifiez le fichier ~/.ssh/config :
Ajoutez cette configuration pour l'accès à GitHub :
Sauvegardez et quittez l'éditeur.
Testez la connexion SSH avec GitHub :
Vous devriez voir un message tel que celui-ci :
Ajouter la clé privée à GitHub
Copiez le contenu de la clé privée générée sur votre VPS avec :
Pour permettre à GitHub Actions de se connecter automatiquement à votre VPS, ajoutez la clé privée dans un dépôt secret sur GitHub. Cela permettra à GitHub de déployer votre site web via SSH. Suivez les étapes de la section « Création de secrets pour un dépôt » de la documentation officielle de GitHub.
Initialiser le dépôt GitHub (facultatif)
Si vous possédez déjà un dépôt GitHub contenant le code de votre site web, passez à l'étape suivante.
Créer un dépôt GitHub
Pour créer un dépôt GitHub, suivez les étapes de la page « Création d'un dépôt » de la documentation officielle de GitHub.
Initialiser le dépôt Git sur le VPS
1. Connectez-vous à votre VPS via SSH :
2. Installez Git :
3. Initialisez un dépôt Git dans le répertoire de votre site web :
Remplacez <github_user> par votre nom d'utilisateur GitHub et <repository_name> par le nom de votre dépôt GitHub.
4. Ajoutez les fichiers et effectuez un premier commit :
Configurer GitHub Actions pour le déploiement automatique
Créez et configurez un workflow pour synchroniser automatiquement le code de votre site web entre GitHub et le VPS.
Créer le fichier de workflow GitHub Actions
1. Créez un répertoire pour les workflows
Sur votre VPS, créez le répertoire .github/workflows dans le dossier contenant votre projet Git (c'est-à-dire le répertoire contenant le code de votre site web) :
2. Créez un fichier de workflow
Créez un fichier deploy.yml dans le répertoire .github/workflows :
3. Configurez le fichier deploy.yml.
Pour configurer le pipeline de déploiement, ajoutez le contenu suivant au fichier deploy.yml :
Remplacez les éléments suivants :
<VPS_IP>: par l'adresse IP de votre VPS.<user>: par l'utilisateur SSH configuré sur votre VPS.DEPLOY_KEY: par le nom du secret dans les paramètres de votre dépôt GitHub.
4. Ajoutez le fichier de workflow au dépôt GitHub
Une fois le fichier de workflow configuré, ajoutez-le à votre dépôt Git et poussez-le vers GitHub :
Vérifier et tester le workflow GitHub Actions
Vérifier l'exécution du premier workflow
Rendez-vous dans l'onglet Actions de votre dépôt GitHub et vérifiez que votre premier workflow s'est bien exécuté.
Si une erreur survient, cliquez sur le workflow échoué pour consulter les logs. Assurez-vous que votre clé privée est correctement ajoutée comme secret dans votre dépôt GitHub et que votre clé publique est bien ajoutée dans le fichier .ssh/authorized_keys.
Permissions insuffisantes
Lors du premier déploiement, des erreurs peuvent survenir concernant les permissions (Permission denied (13), rsync: failed to set times, etc.)
1. Vérifiez que l'utilisateur a les permissions nécessaires
Assurez-vous que l'utilisateur SSH configuré sur votre VPS a les droits d'écriture sur tout le répertoire Git (/var/www/html) et ses sous-répertoires :
2. Testez localement avec rsync
Avant de relancer le workflow GitHub Actions, testez la commande rsync manuellement à partir de votre machine locale. Cela vous permettra de confirmer que les permissions sont correctement configurées :
Si cette commande réussit, relancez ensuite le workflow sur GitHub.
Déclenchement du workflow avec git push
Lorsqu'un git push est effectué sur la branche main (ou toute autre branche spécifiée dans votre fichier deploy.yml), le workflow exécute les étapes définies dans le fichier deploy.yml :
- Clonage du dépôt GitHub dans l'environnement GitHub Actions.
- Configuration de la clé SSH pour établir une connexion avec votre VPS.
- Synchronisztion des fichiers depuis le dépôt GitHub vers le répertoire
/var/www/htmlde votre VPS viarsync.
Tester le workflow
1. Clonez le dépôt GitHub dans un répertoire de test sur le VPS
Créez un répertoire temporaire sur votre VPS pour simuler un autre environnement utilisateur. Par exemple :
2. Clonez le dépôt GitHub dans ce répertoire
Si votre dépôt est déjà en HTTPS , mettez-le à jour pour utiliser SSH :
3. Effectuez une modification dans le dépôt de test
Ajoutez un nouveau fichier ou modifiez un fichier existant dans le répertoire de test et faites un git push sur votre dépôt GitHub :
4. Vérifiez l'exécution du workflow sur GitHub
Rendez-vous dans l'onglet Actions de votre dépôt GitHub et vérifiez que le workflow a été déclenché automatiquement après le git push. Si le workflow réussit, les modifications seront synchronisées dans le dossier de votre site web (/var/www/html).
5. Confirmer la synchronisation dans /var/www/html
Retournez dans votre répertoire principal de déploiement (/var/www/html) et vérifiez que le fichier testfile.txt est bien présent :
Conclusion
En suivant ce guide, vous avez mis en place un pipeline de déploiement automatique entre votre dépôt GitHub et votre VPS OVHcloud à l’aide de GitHub Actions. Ce workflow optimise considérablement la gestion des mises à jour de votre site web, en éliminant les déploiements manuels chronophages.
Aller plus loin
Pour des prestations spécialisées (référencement, développement, etc), contactez les partenaires OVHcloud.
Échangez avec notre communauté d'utilisateurs.