tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
ISIMA
  • twitter
  • linkedin
  • viadeo

git push web

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 ?