Modifications entre les versions 1 et 37 (s'étendant sur 36 versions)
Version 1 à la date du 2012-06-01 14:29:36
Taille: 34
Éditeur: AlexandreDomont
Commentaire:
Version 37 à la date du 2018-03-01 07:51:29
Taille: 10381
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
#acl GroupeAUF:read,write,delete <<TableOfContents()>>

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 `
  * {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
{{{
<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 ( {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.

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 

    • {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

<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

#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]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.

ZEO/Paris/SitesMoodle/MigrationPhysique (dernière édition le 2018-03-01 07:51:29 par JeanChristopheAndré)