Git pour administrateurs

Cette page a pour but d'aider les administrateurs amateurs à installer et maintenir Moodle avec Git.

Rappel : faites des sauvegardes (fichiers et BDD) avant de faire des modifications de vos installations.

Quezaco ?

Git est un système qui permet d'héberger du code source et de publier ses modifications très rapidement. Du coup, plusieurs personnes peuvent travailler sur un même projet et centraliser leur travail pour leurs utilisateurs.

Un administrateur d'un site Moodle se contentera d'aller chercher le code qui l'intéresse pour l'installation, puis de faire les mises à jour rapidement. Moodle encourage d'ailleurs à utiliser ce système.

L'avantage par rapport au système FTP : c'est plus simple, plus sûr et plus rapide !

Se connecter au serveur

Vous pouvez utiliser Git en ligne de commande, c'est le plus simple.

Pour avoir accès en ligne de commande à votre serveur, il faut une liaison SSH.

  • Sous Windows, vous pouvez utiliser Putty.
  • Sous Linux, le terminal fait l'affaire.
ssh votre_nom@ip_du_serveur

Installer Git

Si Git n'est pas disponible sur votre serveur, il faut l'installer.

  • Serveur type Debian / Ubuntu... (deb) :
sudo apt-get install git
  • Serveur type Centos / Fedora... (rpm) :
yum install git

Première installation par Git

Pour utiliser Git, il faut ouvrir les ports 9418 TCP & UDP de votre serveur. Puis :

cd /var/www/html/                                               (1)
git clone git://git.moodle.org/moodle.git                       (2)
cd moodle
git branch --track MOODLE_35_STABLE origin/MOODLE_35_STABLE     (3)
git checkout MOODLE_35_STABLE                                   (4)
  • (1) On se place dans le répertoire parent (à adapter à votre serveur).
  • (2) Installe Moodle via Git : le dossier moodle sera créé et les fichiers y seront téléchargés. L'opération dure plusieurs minutes, car la totalité de l'historique de Moodle est téléchargée.
  • (3) Crée une branche locale appelée MOODLE_35_STABLE, qui pourra être synchronisée ultérieurement avec la branche MOODLE_35_STABLE du code source original.
  • (4) Utilise la branche locale nouvellement créée.

La suite de l'installation se fait comme pour une installation habituelle :

  • Copier le fichier de configuration modèle :
cp config-dist.php config.php
  • Modifier le fichier de configuration avec vos paramètres
nano config.php

Nota : si vous voulez installer Moodle dans un dossier spécifique, utiliser cette commande au lieu de la commande (2) ci-dessus :

git clone git://git.moodle.org/moodle.git mon_dossier

Erreur de connexion

Si Git renvoie une erreur de connexion, par exemple

fatal: unable to connect to git.moodle.org:
git.moodle.org[0: 34.210.133.53]: errno=Connection refused
remplacer la commande
git clone git://git.moodle.org/moodle.git
par
git clone https://git.in.moodle.com/moodle/moodle.git
.

Git derrière un pare-feu (firewall)

Git utilise un protocole (SSH) utilisant un port qui est bloqué par certains pare-feu (port 9418). Si vous avez ce problème, utilisez l'adresse
https://git.in.moodle.com/moodle/moodle.git
au lieu de
git://git.moodle.org/moodle.git
. C'est cependant un peu plus lent, donc à n'utiliser que si nécessaire.

Mise à jour par Git

Lors d'une mise à jour, Git va comparer le code qui est dans votre serveur et le code hébergé chez le fournisseur de code, supprimer certaines lignes et en ajouter d'autres, idem pour les fichiers et répertoires.

Pour mettre à jour votre version de Moodle à la dernière version stable (branche stable MOODLE_35_STABLE), une fois connecté à votre serveur et placé dans le dossier contenant votre installation de Moodle, il suffit de lancer :

$ cd /chemin/vers/votre/moodle/
$ git pull

Sur un site en production, n'oubliez pas de faire des sauvegardes avant toute mise à jour.

Il reste à visiter la page de mise à jour avec un navigateur (page Notification), ou utiliser la ligne de commande adaptée.

Si la branche désirée n'est pas listée dans les branches présentes dans votre dossier, utiliser les commandes suivantes pour mettre à jour (dans cet exemple, à la branche stable MOODLE_35_STABLE).

$ cd /chemin/vers/votre/moodle/
$ git checkout MOODLE_35_STABLE
$ git pull

Si vous ne voyez pas la branche souhaitée, il faudra lancer au préalable (une fois dans le dossier Moodle) les commandes Git suivantes :

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git fetch origin

En cas d'installation de plugins, thèmes ou code personnel

Si vous installez du code supplémentaire sur votre Moodle (quelque soit le moyen de le faire), il faut demander à Git de ne pas vérifier les répertoires contenant ce code.

Pour cela, il faut tenir à jour un fichier qui liste les répertoires à ne pas superviser par Git.

  • Se connecter au serveur :
ssh votre_nom@ip_du_serveur
  • Modifier le fichier :
nano /var/www/html/moodle/.git/info/exclude
  • Ajouter à la fin de ce fichier la liste des répertoires à ne pas superviser, par exemple pour un mod, un thème et un bloc :
/mod/mon_mod_ajouté/
/theme/mon_thème_ajouté/
/blocks/mon_bloc_ajouté/
  • Enregistrez et quittez le serveur.
exit

Installation de plugins, thèmes ou code personnel par Git

Si vous voulez dans votre Moodle installer du code par Git, la marche à suivre est la même : aller dans le répertoire parent, récupérer le code, aller dans le dossier créé, choisir votre branche.

N'oubliez pas de demander à Git de ne pas superviser les répertoires créés.

La particularité est qu'en cas de mise à jour il faudra vérifier le code de Moodle et le code des plugins installés par Git indépendamment (si vous souhaitez tout mettre à jour) :

cd /var/www/html/moodle/
git pull
cd /var/www/html/moodle/mod/mon_mod_ajouté/
git pull
cd /var/www/html/moodle/theme/mon_thème_ajouté/
git pull
cd /var/www/html/moodle/blocks/mon_bloc_ajouté/
git pull

Sécurité

Il est conseillé d'interdire le listage du dossier .git par le biais des navigateurs. Pour savoir si vous êtes concerné, allez sur http://www.votremoodle.org/.git

Plus globalement, il est conseillé d'interdire le listage des dossiers sur tout le site, voir même sur tout le serveur (et donc tous les sites hébergés).

Bloquer le listage par la configuration d'apache

Pour tous les sites

Dans le fichier httpd.conf d'apache, dans la section Directory, passez le paramètre Options à -Indexes.

<Directory />
...
Options -Indexes ...
...
</Directory>

Pour un site en particulier

En fin du fichier httpd.conf vous avez les sites publiés de votre serveur. Passez la variable Options Indexes en Options -Indexes dans le site concerné.

Bloquer le listage par un fichier .htaccess

Il faut créer un fichier .htaccess à la racine de votre site. C'est une solution pratique quand on n'a pas accès au paramétrage du serveur (serveur mutualisé par exemple).

  • Se connecter au serveur :
ssh votre_nom@ip_du_serveur
  • Modifier le fichier .htaccess (le créer s'il n'existe pas)
nano /var/www/html/moodle/.htaccess
  • Ajouter à la fin de ce fichier la directive pour interdire le listage des dossiers :
Options -Indexes
  • Enregistrez et quittez le serveur.
exit