Sommaire
Il est question de déplacer une trentaine de sites sous Moodle d'un hébergement mutualisé vers un serveur dédié mieux cloisonné.
Infrastructure
- serveur dédié OVH : ns235989.ovh.net
- Proxmox 2
- Les CT sont sur une plage IP 192.168.0.0
un CT pour le frontal web (ProxyPass via le module mod_proxy d'apache2)
- un CT pour MYSQL (mutualise les bases Moodle)
- un CT pour Syslog (centralise les logs des CT)
- x CT pour les sites Moodles
Modèles pour les CT
Template de base
- nom : template1.tar.gz
- locales
vim par défaut : update-alternatives --config editor
Comptes des administrateurs et groupe admin
- auf-git-etc
- exim4-daemon-light
mailname: fr.refer.org
- envoi par un smarthost; pas de courriel en local
- Exim4 sur les CT et redirection vers un smarthost (lequel ???)
/etc/resolv.conf : nameserver 192.168.0.1
Template CT-moodle (obsolet)
- nom template : templace-ct-moodle
- installation apache2, php5
création dossiers /srv/{moodledata,sources,www}
moodledata pour les données de la plateforme qui doit appartenir à www-data
sources pour le code moodle à utiliser (par défaut)
www étant le dossier web pour la plateforme
config.php accessible seulement en lecture à www-data
- réglages vhost
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName xxxx.auf-foad.org ServerAlias ct-xxx.openvz #ça peut servir ... DocumentRoot /srv/www/moodle-xxxx <Directory /srv/www/moodlexxxx> Options None AllowOverride FileInfo Order allow,deny allow from All </Directory> ErrorLog ${APACHE_LOG_DIR}/moodle-xxxx_error.log Redirect permanent /moodleXXXX http://xxxx.auf-foad.org/ LogLevel warn CustomLog ${APACHE_LOG_DIR}/moodle-xxxx_access.log combined </VirtualHost>
dans /etc/crontab l'un des scripts suivants :
*/5 * * * * www-data /usr/bin/php /srv/www/moodle-xxxx/admin/cron.php
ou */5 * * * * www-data /usr/bin/php /srv/www/moodle-xxxx/admin/cli/cron.php pour moodle > 2.0
dans /etc/php5/apache2/php.ini
upload_max_filesize = 100M
Template CT-moodle
Ce template repose sur l'installation du paquet moodle fournit par Debian squeeze, en l'occurence moodle-1.9.9.dfsg2-2.1+squeeze3
vérifier adresse de l'interface dans /etc/network/interfaces
/etc/dbconfig-common/moodle.conf
dbc_dbtype='mysql' dbc_dbuser='xxxx' dbc_dbpass='xxxx' dbc_dbserver='ct110.openvz' dbc_dbname='moodleNOMDUSITE' dbc_dbadmin='root'
exécutez dpkg-reconfigure moodle
- url du site
pas de configuration de la BD (elle est faite manuellement sur le CT-MySQL)
- garder la version actuellement installée
pour apache.vhost.conf, accepter la version du responsable du paquet (ou modifier ultérieurement si nécessaire)
faire un lien symbolique pour le vhost sudo ln -s /etc/moodle/apache.vhost.conf /etc/apache2/sites-enabled/moodle-medecine
Afin d'envoyer les logs au CT de supervision, attribuer à la directive ErrorLog la valeur syslog:local7
se rassurer que tous les droits sont corrects notamment dans le moodledata qui est /var/lib/moodle
pas besoin de cron.. le paquet debian en installe un dans /etc/cron.d/moodle
Template CT-moodle-wheezy
Avex proxmox il n'est pas aisé de configurer les paramètres des CTs en se servant de vzctl . Il est préférable de faire un debootstrap se servant de wheezy et puis archiver le contenu et le stocker dans /var/lib/vz/template/cache avant de continuer.
De là, démarrer une instance qu'on peut configurer en se basant sur ce qui a été fait pour le ct-moodle squeeze.
CT MySQL
- IP : 192.168.0.10
- une base de données par moodle
- un utilisateur avec des droits sur cette base
create database moodleNomDuSite; grant SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP, INDEX, ALTER ON moodleNomDuSite.* to xxx@ctxxx.openvz IDENTIFIED BY 'xxxxx';
Web frontal
- IP : 192.168.0.200
- apache2 avec modules: proxy,proxy_http
- tous les sites seront sur ce modèle de vhost
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName xxxx.foad-auf.org ProxyPass / http://xxxx.foad-auf.org/ ProxyPassReverse / http://xxxx.foad-auf.org/ ErrorLog ${APACHE_LOG_DIR}/moodle-xxxx_error.log CustomLog ${APACHE_LOG_DIR}/moodle-xxxx_access.log combined </VirtualHost>
dans /etc/hosts une ligne par CT-moodle avec son ip
CT supervision
- IP : 192.168.0.21
utile pour centraliser les logs grâce à rsyslog
Lire ZA/Montréal/Supervision/CentralisationDesLogs et JeanChristopheAndré/Notes/rsyslog
Appliqué : JeanChristopheAndré/Notes/rsyslog
- Ce qui donne comme particularités:
sur les clients un fichier /etc/rsyslog.d/local.conf qu'on créé avec avec l'adresse IP du ct-syslog: ici ct105.openvz
#emplacement des logs de tous les niveaux de priorité pour la facility 7 local7.* /var/log/local7 #envoi des logs en UDP sur le CT de supervision *.* @ct105.openvz
Les extraits importants dans /etc/rsyslog.d/local.conf
$ModLoad imudp $UDPServerRun 514 # pour les templates $template DynFile,"/var/log/host/%fromhost%/all.log" *.* ?DynFile
Réseau
- vmbr0 (adresse publique)
- vmbr1 (adresse privée) - 192.168.0.0/24
- DNAT depuis l'hôte du port 80 vers le frontal web
Filtrage
- Voir préconisation JC
Autoriser les Ct-moodle à interroger le web frontal sur http://xxxx.auf-foad.org/ ( pour le cron qui s'éxécute dans chaque CT)
Permettre l'accès par ssh aux conteneurs afin de pouvoir éventuellement répartir l'administration technique sans devoir passer par l'hôte
NS
/etc/hosts à modifier sur le ct-frontal et sur ct-mysql dans le but de faire la correspondance entre les IP privées et les noms de domaine (
Mettre sur pied un petit serveur DNS dans un CT ?? ) --)
Serveur DNS installé sur l'hôte pour les différents CTs. Domaine : .openvz
Mise en place
- créer au besoin les entrées DNS requises sur le serveur hôte pour le nouveau CT qui accueillira la plateforme moodle
copier le dump de la base de données dans le CT dédié à MySQL (ct110.openvz)
- attribuer les droits nécessaires à l'utilisateur ayant accès
- créer le CT depuis l'interface de Proxmox en sachant que les id des CTs commencent à 120 en prenant soit un template-debian-squeeze soit un template-debian-wheezy suivant la version de la plateforme à migrer
copier le repertoire de données (moodledata) dans le dossier /var/lib/vz/private/CTID/var/lib/moodle du CT correspondant
- démarrez le CT pour continuer les réglages
- Ajustez certains fichiers de configuration
/etc/dbgconfig-common/moodle.conf
dpkg-reconfigure moodle
- pas de modification de la base de données
accepter version du responsable du paquet pour apache.vhost.conf et config.php
Vérifier /etc/moodle/apache.vhost.conf et /etc/moodle/config.php
si nécessaire, récupérer la chaine de hachage de l'ancien fichier de configuration et la mettre dans une variable type
ex: $CFG->passwordsaltalt1 = 'IO.u86.[L[d},%^8ZXM+2gNKof3]TwI' ;
- rechargez la configuration du serveur web
- vérifier au niveau du frontal l'autorisation d'accès à ce CT
- test depuis l'interface web du site
mise à jour de la base de données le cas échéant à appliquer en suivant la procédure
- si ok, rentrer en contact avec les responsables de l'espace pour qu'ils valident avant production
Discussions
Versions de Moodle
Certaines fonctions présentes dans les versions de moodle inférieures à 2 ne sont pas compatibles avec la version de php (5.3.3-7+squeeze13) du serveur squeeze
La démarche est la suivante:
si la plateforme à déplacer a une version <= 1.9.9 , on utilise le paquet debian squeeze
si la plateforme à déplacer a une version > 1.9.9, on utilise le paquet debian wheezy
Que faire avec les plateformes étant entre la version 1.9 et la version 2.0 ? Le souci étant que pour certaines formations, le passage à la version 2 ne permet plus d'utiliser certaines plugins. De ce fait, il ne serait pas commode de changer de version majeure sans informer les responsables des conséquences.
probleme de liens en dur !
(16:19:24) willy.manga: car tous ont des urls avec l'ancienne URL http://www.auf-foad.org/moodleCEFEB/xxxx.pdf (16:19:28) progfou: ok (16:19:31) progfou: donc (16:19:36) progfou: on revoit la règle de redirect (16:20:03) willy.manga: je me suis dit que c'est du au fait que dans l'ancien serveur, le dossier des ressources était au sein du dossier web (16:20:08) progfou: RedirectMatch permanent (.*) http://moodle1.auf-foad.org/$1 (16:20:17) willy.manga: ce qui est interdit par moodle quand j'ai lu la doc (16:20:17) progfou: RedirectMatch permanent ^(.*)$ http://moodle1.auf-foad.org/$1 (16:20:39) progfou: en insérant un chemin supplémentaire au besoin (16:22:54) progfou: ou bien on renvoie carrément vers un traitement spécifique à l'arrivée, par exemple : RedirectPermanent ^/*$ http://moodle1.auf-foad.org/ RedirectPermanent ^([^/]*\.[^/]*)$ http://moodle1.auf-foad.org/fichiers/$1
Voir ../Maintenance#Changement_d.27adresse_.28de_domaine.29
Les modules non présents dans le paquet debian
Il existe des modules qui ne sont pas fournis par le paquet livré dans debian. Ex: book,choicegroup,dataform, groupselect,questionnaire . Certainement parce qu'ils ne sont pas officiels .
La documentation officielle recommande de les décompresser dans le repertoire mod : http://docs.moodle.org/20/en/Installing_contributed_modules_or_plugins . Ca pourrait être source de soucis lors d'éventuelles mises à jour du système.