title | excerpt | updated |
---|---|---|
Automatiser le déploiement de votre site web sur votre VPS via GitHub Actions |
Découvrez comment déployer et automatiser le code de votre site web via GitHub Actions sur un VPS OVHcloud |
2025-01-21 |
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.
- 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)
Warning
Si besoin, consultez notre guide « Débuter avec un VPS » avant de poursuivre la lecture de ce guide.
[!primary] 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
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.
Connectez-vous à votre VPS via SSH et générez une paire de clés SSH dédiée pour GitHub Actions :
ssh-keygen -t rsa -b 4096 -C "github-actions" -f /home/<user>/.ssh/deploy_key
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
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
:
mkdir -p /home/<user>/.ssh
chmod 700 /home/<user>/.ssh
2. Ajouter la clé publique au fichier authorized_keys
:
cat /home/<user>/.ssh/deploy_key.pub >> /home/<user>/.ssh/authorized_keys
chmod 600 /home/<user>/.ssh/authorized_keys
3. Tester la connexion SSH
Testez la connexion SSH avec la clé privée pour confirmer que l'accès est fonctionnel :
ssh -i /home/<user>/.ssh/deploy_key <user>@<VPS_IP>
Remplacez <user>
par l'utilisateur configuré pour se connecter à votre VPS et <VPS_IP>
par l'IP de votre VPS.
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 :
cat /home/<user>/.ssh/deploy_key.pub
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.
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
:
nano ~/.ssh/config
Ajoutez cette configuration pour l'accès à GitHub :
Host github.com
HostName github.com
User git
IdentityFile /home/<user>/.ssh/deploy_key
Sauvegardez et quittez l'éditeur.
Testez la connexion SSH avec GitHub :
ssh -T [email protected]
Vous devriez voir un message tel que celui-ci :
Hi <user-github>! You've successfully authenticated, but GitHub does not provide shell access.
Copiez le contenu de la clé privée générée sur votre VPS avec :
cat /home/<user>/.ssh/deploy_key
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.
[!primary] Si vous possédez déjà un dépôt GitHub contenant le code de votre site web, passez à l'étape suivante.
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{.external}.
1. Connectez-vous à votre VPS via SSH :
ssh <user>@<VPS_IP>
2. Installez Git :
sudo apt update && sudo apt install git -y
3. Initialisez un dépôt Git dans le répertoire de votre site web :
cd /var/www/html
sudo git init
sudo git remote add origin [email protected]:<github_user>/<repository_name>.git
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 :
git add .
git commit -m "Initial commit"
git branch -M main
git push -u origin main
Créez et configurez un workflow pour synchroniser automatiquement le code de votre site web entre GitHub et le VPS.
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) :
cd /var/www/html
mkdir -p .github/workflows
2. Créez un fichier de workflow
Créez un fichier deploy.yml
dans le répertoire .github/workflows
:
nano .github/workflows/deploy.yml
3. Configurez le fichier deploy.yml
.
Pour configurer le pipeline de déploiement, ajoutez le contenu suivant au fichier deploy.yml
:
name: Deploy to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Copy files to VPS
env:
SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H <VPS_IP> >> ~/.ssh/known_hosts
rsync -avz --delete ./ <user>@<VPS_IP>:/var/www/html/
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 :
git add .github/workflows/deploy.yml
git commit -m "Ajout du workflow GitHub Actions pour le déploiement"
git push origin main
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
.
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 :
sudo chown -R <user>:www-data /var/www/html
sudo chmod -R 775 /var/www/html
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 :
rsync -avz --no-times --exclude='.git*' -e "ssh -i ./deploy_key -o StrictHostKeyChecking=no" ./ <user>@<VPS_IP>:/var/www/html/
Si cette commande réussit, relancez ensuite le workflow sur GitHub.
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/html
de votre VPS viarsync
.
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 :
mkdir /home/<user>/test-github-actions
cd /home/<user>/test-github-actions
2. Clonez le dépôt GitHub dans ce répertoire
git clone [email protected]:<github_user>/github-actions.git .
Si votre dépôt est déjà en HTTPS , mettez-le à jour pour utiliser SSH :
git remote set-url origin [email protected]:<github_user>/github-actions.git
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 :
echo "Test depuis l'utilisateur numéro 2 du VPS" >> testfile.txt
git add testfile.txt
git commit -m "Ajout d'un test depuis le VPS"
git push origin main
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 :
ls /var/www/html
cat /var/www/html/testfile.txt
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.
Pour des prestations spécialisées (référencement, développement, etc), contactez les partenaires OVHcloud.
Échangez avec notre communauté d'utilisateurs.