Utiliser Git dans cPanel grâce au terminal
Si cPanel offre une fonctionnalité Git Version Control, j’ai toujours préféré avoir le plein contrôle via une fenêtre de terminal. Il est d’ailleurs très simple d’intégrer Git sur un tel serveur et cet article en décrit les étapes.
Vous aurez besoin :
- D’un dépôt Git (évidemment);
- D’un accès terminal via cPanel (parfois, il faut demander à votre hébergeur de déverrouiller cette fonction);
- Un répertoire public vide pour pousser le code (généralement public_html, mais si c’est un sous-domaine, ce sera le répertoire public_html/sousdomaine.)
Étape 1 : création ou récupération d’une clé SSH
La clé SSH permet de vous identifier auprès du dépôt Git. Habituellement, aucune clé n’existe dans un serveur d’hébergement nouvellement constitué. Pour vérifier, ouvrez le terminal du cPanel.
Tapez les commandes suivantes :
cd ~/.ssh
cat id_rsa.pub
Vous devriez recevoir le message : no such file or directory.
Créez une clé en donnant un identifiant significatif, ex. : “monblogue”
ssh-keygen -t rsa -C "monblogue"
Une fois générée, lisez la clé :
cat id_rsa.pub
Un texte s’affichera que vous devez copier dans son intégralité.
Étape 2 : ajouter la clé SSH dans la configuration du dépôt Git
Maintenant qu’on a la clé, on peut ajouter celle-ci dans la configuration du dépôt Git. Il est conseillé de n’ajouter que les droits de lecture, étant donné qu’on ne veut pas que le serveur web puisse faire des commits/push vers le dépôt.
Étape 3 : Initialiser Git dans le serveur et le configurer
Retournez aux terminal de cPanel.
À l’invite, taper ls
. Si le dossier repositories
n’existe pas, créez-le : mkdir repositories
. Puis entrez dans ce dossier : cd repositories
.
Supposons que notre projet est monblogue. Créez un dossier mkdir monblogue
. Entrez dans ce dossier : cd monblogue
.
Initialisez Git :
git init
On obtient quelque chose comme : Initialized empty Git repository in /myblog .git/.
Connectez le dépôt en remplaçant CHEMIN/VERS/DEPOT par le chemin donné dans votre projet Git.
git remote add origin CHEMIN/VERS/DEPOT
Si l’on ne vous le demande pas, identifiez-vous tout de même :
git config user.name "VOTRE NOM"
git config user.email "VOTRE ADRESSE ÉLECTRONIQUE"
On lance !
git fetch
Le contenu du dépôt Git peut maintenant être récupéré.
Si nous étions dans une installation normale où le répertoire .git serait dans le même répertoire que le répertoire web, nous ne ferions que git pull origin master
. Cependant, on se rappellera qu’on a installé le Git dans /repositories/monblogue
et non dans le répertoire public de notre hébergement, généralement public_html
.
Il faut donc plutôt utiliser ceci pour nos commandes Git :
git --git-dir=/home/YOUR_ACCOUNT/repositories/monblogue/.git --work-tree=/home/YOUR_ACCOUNT/public_html VOTRE COMMANDE GIT
Cette commande s’interprète ainsi :
git --git-dir=CHEMIN/DU/GIT --work-tree=CHEMIN/PUBLIC VOTRE COMMANDE
Cela paraît fastidieux à écrire, mais rappelez-vous qu’un terminal se souvient toujours des commandes que vous avez effectuées lors d’une précédente session… Cependant, notez la commande initiale quelque part, au cas où. De plus, il est possible d’inscrire ce chemin dans la configuration. Je préfère cependant toujours voir où s’en vont les choses. Alors j’y vais avec la commande.
Pour terminer notre installation, il suffit de taper :
git --git-dir=/home/YOUR_ACCOUNT/repositories/myblog/.git --work-tree=/home/YOUR_ACCOUNT/public_html pull origin master
Votre code devrait être maintenant dans public_html
tandis que votre Git est en lieu sûr dans le dossier caché repositories
.
C’est tout! Vous pouvez dorénavant pousser vos changements via le terminal cPanel. N’oubliez pas que le dépôt Git chez votre hébergeur est en lecture seulement. C’est plus sécuritaire. Ainsi, si vous travaillez sur un site web du genre Wordpress ou ProcessWire, ne faites aucune mise à jour en ligne de votre code (par exemple via l’explorateur de fichiers de cPanel ou par le terminal), mais optez pour des mises à jour faites sur votre serveur de développement, code qui sera par la suite poussé via Git vers le site en ligne.