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.

Je suppose que vous avez mis en place un mécanisme pour ne pas saisir tout le temps votre mot de passe en connexion ssh comme je l'explique

Préparation commune

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 (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)

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"
$ git push web +master:refs/heads/master

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 ?