Dans un post précédent j’avais montré comment synchroniser son site web avec Git et cPanel avec Scaleway, maintenant je vais montrer l’équivalent avec Infomaniak.
Infomaniak ne dispose pas de cPanel, mais on peut y arriver quand même via l’interface maison. La première chose à faire est de créer sur le PC local une clé Ed25519 avec la commande ssh-keygen -t ed25519. Sur la console Infomaniak on veillera à ce que SSH soit bien activé à partir du même login que pour la connexion FTP.
On pourra se connecter avec l’onglet Console SSH
On pourra également se connecter à distance en ligne de commande (avec les indications données dans le premier écran ci-dessus) :
ssh login@XXXXX.ftp.infomaniak.com
Dans le répertoire distant .ssh, on créera un fichier authorized_keys contenant la clé publique Ed25519 créé précédemment localement. On doit les droits 600 à ce fichier avec chmod. Toujours dans le shell distant, on va créer le dépôt Git avec les commandes suivantes :
uidXXXXXX@YYYYYYYY:~$ cd uidXXXXXX@YYYYYYYY:~$ ls -l total 20 drwxr-sr-x 2 root gidXXXXXX 10 Oct 25 19:20 backups drwxr-sr-x 2 vector vector 4096 Jan 2 00:00 ik-logs drwxrwsr-x 4 uidXXXXXX gidXXXXXX 62 Oct 30 19:51 sites drwxrwsrwt 2 uidXXXXXX gidXXXXXX 12288 Jan 2 16:21 tmp uidXXXXXX@YYYYYYYY:~$ mkdir git_depot uidXXXXXX@YYYYYYYY:~$ cd git_depot/ uidXXXXXX@YYYYYYYY:~/git_depot$ git init --bare hoarau.org.git hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /home/clients/XXXXXX/git_depot/hoarau.org.git/
Localement on va créer le dépôt Git de référence au niveau du répertoire contenant les fichiers du site :
$ cd /ultra/data/homepage/www.hoarau.org/ $ git init Dépôt Git vide initialisé dans /ultra/data/homepage/www.hoarau.org/.git/
git branch -M master git push --set-upstream origin master Enter passphrase for key '/home/olivier/.ssh/id_ed25519': X11 forwarding request failed on channel 0 Énumération des objets: 3159, fait. Décompte des objets: 100% (3159/3159), fait. Compression par delta en utilisant jusqu'à 4 fils d'exécution Compression des objets: 100% (3152/3152), fait. Écriture des objets: 100% (3159/3159), 581.67 Mio | 13.38 Mio/s, fait. Total 3159 (delta 95), réutilisés 0 (delta 0), réutilisés du paquet 0 (depuis 0) remote: Resolving deltas: 100% (95/95), done. To ssh://XXXXXX.ftp.infomaniak.com:/home/clients/XXXXXX/git_depot/hoarau.org.git * [new branch] master -> master la branche 'master' est paramétrée pour suivre 'origin/master'.
On donnera le mot de passe de la clé Ed25519 locale. Pour le clonage initial du site on tapera dans le shell distant :
cd cd sites rm -Rf hoarau.org git clone /home/clients/XXXXXX/git_depot/hoarau.org.git hoarau.org/ Cloning into 'hoarau.org'... done. Updating files: 100% (3072/3072), done.
Maintenant pour une mise à jour du site, on travaillera sur les fichiers hébergés localement. Le travail terminé, on tapera localement (avec un exemple avec 3 fichiers modifiés) :
git push Enter passphrase for key '/home/olivier/.ssh/id_ed25519': X11 forwarding request failed on channel 0 Énumération des objets: 10, fait. Décompte des objets: 100% (10/10), fait. Compression par delta en utilisant jusqu'à 4 fils d'exécution Compression des objets: 100% (6/6), fait. Écriture des objets: 100% (6/6), 3.95 Kio | 505.00 Kio/s, fait. Total 6 (delta 4), réutilisés 0 (delta 0), réutilisés du paquet 0 (depuis 0) To ssh://XXXXXX.ftp.infomaniak.com:/home/clients/XXXXXXX/git_depot/hoarau.org.git d6e7c30..8e2756c master -> master
C’est toujours le mot de passe de la clé Ed25519 qu’il faut donner. Ce n’est pas fini, maintenant il faut synchroniser avec les pages visibles sur internet, on tapera :
cd mkdir deploy_tmp cd deploy_tmp git clone /home/clients/XXXXXX/git_depot/hoarau.org.git . rsync -a --delete ./ ../sites/hoarau.org cd rm -rf deploy_tmp
L’avantage de passer par un répertoire intermédiaire est que ça ne provoque pas d’interruption de service et la commande rsync ne copiera que les fichiers mis à jour, l’option –delete permet de supprimer les fichiers du site qui ont disparu du dépôt Git. Avantage d’Infomaniak par rapport à Scaleway, on dispose de la commande rsync qui simplifie grandement la synchronisation.
Maintenant on pourra créer un script bash deploy sur le répertoire distant en créant préalablement le répertoire bin à la racine. Le fichier contiendra :
#/bin/bash cd # 1. Nettoyer et créer le dossier temporaire rm -rf deploy_tmp mkdir -p deploy_tmp # 2. Clonage vers le dossier temporaire cd deploy_tmp git clone /home/clients/XXXXXXXX/git_depot/hoarau.org.git . # 3. Synchroniser avec le dossier sites rsync -a --delete ./ ../sites/hoarau.org # 5. Nettoyage final du temporaire cd rm -rf deploy_tmp
On le rend ensuite exécutable avec un chmod et on l’appellera en se connectant en tapant bin/deploy au shell.
Quelques pages qui ont pu m’être utiles pour mettre en place cette synchronisation via Git :