Outils pour utilisateurs

Outils du site


symfony5:deploiement_avec_git_et_ssh

Déploiement avec GIT et SSH

Configurer l'accès SSH sur le serveur

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

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
symfony5/deploiement_avec_git_et_ssh.txt · Dernière modification: 2021/04/10 18:16 par marclebrun