Déployer avec Git sur un VPS
Git permet de déployer exactement la version testée, sans écraser des fichiers à la main en FTP. Sur un VPS, l'approche la plus simple est un clone du dépôt dans /var/www, mis à jour par git pull. Elle demande une clé de déploiement en lecture seule, des permissions propres et une règle claire : le serveur ne modifie jamais le code.
Préparer une clé de déploiement
En tant qu'utilisateur de déploiement, par exemple deploy :
ssh-keygen -t ed25519 -C "deploy@vps" -f ~/.ssh/deploy_key -N ""
cat ~/.ssh/deploy_key.pubDans GitHub ou GitLab, ajoutez la clé publique comme deploy key en lecture seule, limitée à ce dépôt. Un compte machine avec accès à tous les dépôts est inutile ici. Déclarez l'alias :
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/deploy_key
IdentitiesOnly yesIdentitiesOnly yes empêche SSH d'essayer d'autres clés. Testez avec ssh -T [email protected] : le message attendu confirme l'authentification, sans shell.
Cloner dans /var/www
sudo mkdir -p /var/www
sudo chown deploy:www-data /var/www
git clone [email protected]:compte/depot.git /var/www/app
cd /var/www/appNe clonez pas dans /root, et évitez de servir directement un dossier contenant .git, node_modules ou des tests. Pour un site statique, pointez Nginx vers le sous-dossier public. Les permissions restent : dossiers 750, fichiers 640, propriétaire deploy, groupe www-data.
Mettre à jour sans écraser
git fetch --prune
git status
git pull --ff-only--ff-only refuse une fusion locale implicite : la mise à jour échoue plutôt que de créer un commit inattendu. Ne modifiez pas les fichiers à la main sur le serveur, sinon le prochain pull sera bloqué. Pour revenir à un état connu, git log --oneline identifie le commit sain ; après avoir vérifié qu'aucune modification locale n'existe, git reset --hard <commit> replace la copie de travail, puis redémarrez le service.
Un petit script évite les oublis :
#!/bin/sh
set -eu
cd /var/www/app
git pull --ff-only
npm ci --omit=dev
sudo systemctl restart appAdaptez la commande de dépendances et de redémarrage à votre stack : composer install --no-dev pour PHP, l'environnement virtuel pour Python.
Secrets et vérification
.env, clés privées et sauvegardes ne vont jamais dans Git. Créez-les sur le serveur avec chmod 600. Une clé de déploiement compromise permet de lire le dépôt, pas d'y écrire : gardez ce périmètre et révoquez la clé si nécessaire.
Après déploiement, vérifiez git log -1 --oneline, systemctl status et une route de santé avec curl. Sauvegardez la base avant toute migration. Si le dépôt est privé, testez le clone depuis le VPS avant de supprimer l'ancien déploiement : un problème de clé se voit immédiatement.
Publicité
Cet article vous a-t-il aidé ?
À lire aussi
- Installer et sécuriser RedisInstaller Redis, le limiter à l'écoute locale, ajouter une authentification et sauvegarder ses données.
- Installer Python et un environnement virtuelCréer un environnement virtuel Python, y installer les dépendances et lancer l'application avec systemd.
- Installer PHP-FPM pour un siteRelier Nginx à PHP 8.4-FPM par socket Unix, avec les bonnes permissions et une page de test.