Imaginez que vous ayez envie d'utiliser git pour gérer votre site web sur public_html
. L'idée est d'utiliser le serveur de fichiers
de l'ISIMA comme dépôt principal (plutôt que votre machine). Nous allons mettre en place une structure pour que les informations git
ne soient pas disponibles par le web (si c'est ce que vous voulez faire, c'est encore plus simple)
Cette page est une adaptation de celle-ci.
Préalable
Saisie des mots de passe
Il est pénible de saisir en permanence son mot de passe. Pour se faciliter la vie, vous pouvez suivre le tuto...
VPN
La connexion à un serveur à l'ISIMA nécessite la mise en place et l'utilisation d'un VPN. Toutes les informations sont disponibles ici
Configuration pour git pour les deux machines
Les deux machines (locale et serveur) doivent être paramétrées pour l'usage de git), par exemple :
$ git config --global user.name "loic"
$ git config --global user.email loic@isima.fr
Machine locale
Le répertoire où le site web est stocké doit être défini comme un dépot git. Si ce n'est pas fait, voilà comment faire :
$ git init
$ git add .
$ git ls-files
$ git commit -m "Initialisation du depot GIT du site"
$ git status
À partir de là, on a accès à toutes les manipulations git.
Serveur distant
Utilisation du serveur web
Les informations de ce paragraphe sont valides au 01/01/2025 pour les personnels. Les manipulations sont peut-être différentes pour un étudiant.
La machine distante qui vient natuellement à l'esprit est le serveur web : https://perso.isima.fr
Votre identifiant est bien entendu login
.
$ ssh login@perso.isima.fr
Si le répertoire public_html
n'est pas créé, il faut le faire :
$ mkdir $HOME/public_html
$ chmod 755 $HOME/public_html
$ chmod 755 $HOME
N'hésitez pas à jeter un coup d'œil à la documentation officielle
Créer un répertoire pour être le dépôt principal de votre site web :
$ mkdir $HOME/site.git
$ cd $HOME/site.git
$ git init --bare
Attention, ne nommez pas le répertoire public_html.git
, cela fait planter toute la manipulation, cela donne une
erreur du type Could not jump back into original cwd
On va placer une directive (hook) qui va permettre de mettre à jour automatiquement public_html
à chaque push
.
Pour cela, il faut aller dans le répertoire hooks
et modifier (ou créer) le fichier post-receive
#!/bin/sh
GIT_WORK_TREE="/home/local.isima.fr/login/public_html" git checkout -f
Il ne faut pas oublier de donner les droits d'exécution au script :
$ chmod +x post-receive
Dans ce fichier, il faut mettre toutes les opérations à refaire à chaque mise à jour (une vérification de droits par exemple)
Alternatives
Si la manipulation du paragraphe précédent ne marche pas, vous pouvez utiliser un autre serveur comme ADA (tant que celui-ci est encore vivant) ou bien une des deux machines virtuelles mises à votre disposition (machines opérationnelles)
$ ssh login@vm-login.local.isima.fr
Il faut alors transposer les explications ci-dessus au travers du répertoire shared
et mettre à jour
GIT_WORK_TREE
après un petit pwd
.
$ cd shared/public_html
$ pwd
# par exemple /home/login/shared/public_html
Retour sur la machine locale
On configure un nom pour le couple (serveur distant/dépôt) et on demande le transfert des fichiers :
$ git remote add web "ssh://login@perso.isima.fr/~/site.git"
# OU git remote add web "ssh://login@vm-login.isima.fr/~/shared/site.git"
$ git push web +master:refs/heads/master
Cette commande alimente le fichier config
du répertoire de configuration caché .git
Si tout se passe bien, un simple
$ git push web
doit permettre de sauvegarder sur la machine distante le site web local et le publier sur public_html
en même temps.
Cool, non ?