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
L'exemple ci-dessous correspond à l'installation d'une version 4.1.x rattachée à la branche « MOODLE_401_STABLE ». Pour tout autre version, veuillez adapter la branche (par exemple 4.4.x => « MOODLE_404_STABLE »).
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_401_STABLE origin/MOODLE_401_STABLE (3) git checkout MOODLE_401_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_401_STABLE, qui pourra être synchronisée ultérieurement avec la branche MOODLE_401_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
- Enregistrer et quitter le serveur.
- Lancer l'installation par l’intermédiaire d'un navigateur ou en ligne de commande, comme pour tout autre type d'installation : accès à la documentation sur l'installation
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_404_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_404_STABLE).
$ cd /chemin/vers/votre/moodle/ $ git checkout MOODLE_404_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