Table des matières

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"

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.

/home/marc/monprojet.git/hooks/post-receive
#!/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