====== Déploiement avec GIT et SSH ======
===== Configurer l'accès SSH sur le serveur =====
Source : [[https://medium.com/@stadja/tout-sur-comment-se-connecter-%C3%A0-un-serveur-ssh-sans-mot-de-passe-b2cc5c0a86e1]]
==== Générer une clé SSH ====
Si on n'en a pas encore une, créer une paire de clés avec cette commande :
ssh-keygen -t rsa -b 2048 -C "mon-adresse@email"
* **Chemin de la sauvegarde** : accepter le chemin et le nom du fichier proposés.
* **passphrase** : ne pas mettre de passphrase sinon il faudra l'entrer à chaque fois qu'on voudra utiliser cette paire de clés.
Deux fichiers sont créés :
/home/marc/.ssh/id_rsa # clé privée
/home/marc/.ssh/id_rsa.pub # clé publique
==== Envoyer la clé publique sur le serveur ====
ssh-copy-id marc@SERVEUR
Entrer le mot de passe de cet utilisateur sur le serveur.
==== Tester la connexion ====
ssh marc@SERVEUR
Normalement l'accès est maintenant autorisé sans entrer de mot de passe.
===== Configurer le déploiemement =====
Source: [[https://medium.com/@stadja/comment-d%C3%A9ployer-sur-un-serveur-distant-en-une-commande-git-pas-%C3%A0-pas-bdcf5aaf172d]]
==== Créer le dépôt distant ====
Sur le serveur, se placer dans le dossier **home** de l'utilisateur,
et initialiser un dépôt vide.
cd /home/marc
git init --bare monprojet.git
==== Écrire le script de réception ====
Dans le dépôt distant, ajouter un script **/home/marc/monprojet.git/hooks/post-receive**
Quand le dépôt recevra un **push**, il exécutera ce script pour déplacer
les fichiers vers leur destination.
Dans cet exemple, la destination est **/var/www/monsite** => ce dossier
doit exister et l'utilisateur doit avoir les droits en écriture.
#!/bin/bash
TARGET="/var/www/monsite"
GIT_DIR="/home/marc/monprojet.git"
BRANCH="master"
while read oldrev newrev ref
do
if [[ $ref = refs/heads/$BRANCH ]];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to preprod..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout $BRANCH -f
chown www-data:www-data -R $TARGET
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done
Rendre ce fichier exécutable :
chmod a+x /home/marc/monprojet.git/hooks/post-receive
==== Utiliser le dépôt distant ====
Sur la machine de développement, ajouter le serveur de production comme dépôt distant,
que l'on va nommer **prod** :
git remote add prod marc@SERVEUR:/home/marc/monprojet.git
===== Premier déploiement =====
Faire un déploiement vers le dépôt **prod** :
git push prod master