<> 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 {{{ ServerAdmin webmaster@localhost ServerName xxxx.auf-foad.org ServerAlias ct-xxx.openvz #ça peut servir ... DocumentRoot /srv/www/moodle-xxxx Options None AllowOverride FileInfo Order allow,deny allow from All 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 }}} * 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 ` * {i} 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 {{{ 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 }}} * --(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 ( {i} 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]T`wI' `; * 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.