Projet

Général

Profil

Multisite » Historique » Révision 5

Révision 4 (Stéphane Boireau, 08/05/2016 15:00) → Révision 5/7 (Stéphane Boireau, 08/05/2016 16:43)

h1. Gepi en multisite 

 h2. Principes 

 Il s'agit de n'utiliser qu'une seule arborescence de Gepi pour plusieurs établissements.  
 Chaque établissement possède sa propre base de données qui est appelée par une information en GET dans l'url.  
 Ensuite un cookie contenant le RNE de l'établissement en question permet de faire suivre cette information.  
 Il est donc souhaitable que le système d'authentification soit centralisé (comme un LDAP ou CAS,...),  
 mais ce n'est pas une obligation car il est peu probable qu'un utilisateur avec le même login et le même mot de passe existe sur deux bases différentes. 

 Un professeur nommé sur plusieurs établissements pourra se retrouver avec plusieurs comptes et des mots de passe pas nécessairement identiques... sauf s'il prend soin de mettre le même mot de passe pour les différents établissements, ou, mieux, si l'authentification est effectuée par via un serveur LDAP, CAS,... 


 h2. Que faut-il faire 

 Il faut commencer par lire les fichiers connect.cfg et multisite.ini.txt où tout est expliqué... mais pas forcément très clair... d'où la documentation qui suit (merci à Bertrand Lods pour le compte-rendu). 

 *[à terminer]* 

 L'installation STANDARD et l'installation MULTISITE sont distinct : 

 > Soit on fait l'installation STANDARD 
 > Soit on fait l'installation MULTISITE 

 Dans le cas d'une installation Standard, le fichier /secure/connect.inc.php est généré automatiquement d'après les saisies dans l'interface web. 
 Dans le cas d'une installation Multisite, il faudra renseigner manuellement les fichiers,... créer la structure de la base et son contenu initial manuellement (ou via phpMyAdmin). 

 Il faut commencer par lire les fichiers : 
 >/secure/modeles/connect-modele.inc.php 
 >/secure/modeles/multisite-modele.ini.php 
 Ce sont les fichiers qui serviront de modèles à ceux qu'il faudra copier et compléter manuellement en 
 >/secure/connect.inc.php 
 >/secure/multisite.ini.php 


 *1.* Transfert de fichier par ftp dans /var/ftp/pub/public : 

 Le compte-rendu a été effectué avec    la dernière version stable à la date de rédaction: gepi-1.6.8-4297f2a.tar.gz (20 Avril 2016) 


 *2.* Transfert du répertoire vers /var/www/html : 

 [root@applietab1 html]# mv /var/ftp/pub/public/gepi-1.6.8/ /var/www/html/gepi 


 *3.* Rendre apache propriétaire du répertoire gepi : 

 [root@applietab1 html]# chown apache:apache -R gepi/ 


 *4.* Installation MULTISITE: 


 h3. Fichier connect.inc.php 

 Les déclarations des variables  
 >$dbHost="localhost"; 
 >$dbDb="gepi"; 
 >$dbUser="gepi"; 
 >$dbPass="gepi"; 
 >$gepiPath="/gepi"; 
 en début de fichier ne seront *pas prises en compte* dans une installation multisite. 
 Vous pouvez ne pas modifier ces valeurs. 
 Vous pouvez même commenter ces lignes. 

 C'est la deuxième partie du fichier qu'il va falloir paramétrer: 

 <pre> 
 # ============ 
 # Deuxième cas : vous êtes en configuration multi-site 
 # (une installation de Gepi / plusieurs établissements) 
 # 
 # 1- Passez la variable $multisite à "y", 
 #      Remplacez "n" par "y" dans la ligne [$multisite = "n";] 
 #      située au 1- du premier cas ci-dessus 
 #      ou dé-commentez -retirez le "# " en début de ligne- la ligne ci-dessous 
 $multisite = "y"; => Décommenter la ligne 
 # 
 </pre> 

 Et décommentez toute la portion de code suivante pour le multisite 

 <pre> 
 /* 
 if ($multisite == "y" AND $_SERVER["SCRIPT_NAME"] != "/login.php") { 
     $RNE = isset($_REQUEST['rne']) ? $_REQUEST['rne'] : (isset($_REQUEST['RNE']) ? $_REQUEST['RNE'] : (isset($_REQUEST['organization']) ? $_REQUEST['organization'] : (isset($_COOKIE['RNE']) ? $_COOKIE['RNE'] : NULL))); 
     if (!isset($RNE) || $RNE == 'RNE') { 
         echo 'Erreur : Numero d\'etablissement manquant dans la requete (parametre rne ou organization).'; die(); 
     } else { 
         setcookie('RNE', $RNE, null, '/'); 
         $_COOKIE['RNE'] = $RNE; 
         $init = parse_ini_file(dirname(__FILE__)."/../secure/multisite.ini.php", TRUE); 
         if (      !isset($init[$RNE]["nomhote"]) || 
             !isset($init[$RNE]["nombase"]) || 
             !isset($init[$RNE]["mysqluser"]) || 
             !isset($init[$RNE]["mysqlmdp"]) || 
             !isset($init[$RNE]["pathname"]) 
             ) { 
             echo 'Erreur : Numero d\'etablissement '.$RNE.' non trouve dans la configuration'; die(); 
         } 
         $dbHost          = $init[$RNE]["nomhote"]; 
         $dbDb          = $init[$RNE]["nombase"]; 
         $dbUser          = $init[$RNE]["mysqluser"]; 
         $dbPass          = $init[$RNE]["mysqlmdp"]; 
         $gepiPath      = $init[$RNE]["pathname"]; 
     } 
 } 
  */ 
 </pre> 

 h3. Renseigner le fichier /secure/multisite.ini.php 

 Il va s'agir de renseignez le fichier /secure/multisite.ini.php 
 Copier/renommer le ficher /secure/modeles/multisite-modele.ini.php vers /secure/multisite.ini.php 

 Il faut déclarer dans multisite.ini.php une base par établissement  

 <pre> 
 [RNE] 
 nomhote          =  
 mysqluser        =  
 mysqlmdp        = 
 nombase          =  
 pathname        =  
 nometablissement =  
 </pre> 

 Par exemple: 
 <pre> 
 [012345A] 
 nomhote          = localhost 
 mysqluser        = gepiuser1 
 mysqlmdp        = Ce_que_vous_voulez_de_bien_secure 
 nombase          = gepidb1 
 pathname        = /gepi1 
 nometablissement = Collège Georges Brassens 
 </pre> 
 où 012345A est le RNE de l'établissement. 
 localhost sera le serveur de base de données si le serveur web héberge aussi le serveur de bases de données. 

 Comme mentionné plus haut, il faut effectuer un certain nombre d'opérations manuellement ou via phpMyAdmin: 
 # créer la base associée et l'utilisateur de la base : 
 > mysql -uroot -p  
 > CREATE DATABASE gepidb1; 
 > GRANT ALL PRIVILEGES ON gepidb1.* TO gepiuser1@localhost IDENTIFIED BY 'Ce_que_vous_voulez_de_bien_secure'; 
 > FLUSH PRIVILEGES; 

 # Créer la structure de tables dans la base d'après le fichier structure_gepi.sql  
 > mysql -ugepiuser1 -p < CHEMIN_GEPI/sql/structure_gepi.sql 
 en remplaçant CHEMIN_GEPI par le chemin relatif ou absolu vers l'arborescence Gepi. 

 # Importer les données initiales de la base d'après le fichier data_gepi.sql  
 > mysql -ugepiuser1 -p < CHEMIN_GEPI/sql/data_gepi.sql 

 # Dans la table setting passer la valeur « multisite » à    « y » 
 > mysql -ugepiuser1 -p 
 > UPDATE setting SET value='y' WHERE name='multisite'; 

 Procéder de la même façon dans le multisite.ini.php pour les autres établissements: 

 <pre> 
 [RNE2] 
 nomhote          =  
 mysqluser        =  
 mysqlmdp        = 
 nombase          =  
 pathname        =  
 nometablissement =  
 </pre> 

 Par exemple: 
 <pre> 
 [098765B] 
 nomhote          = localhost 
 mysqluser        = gepiuser2 
 mysqlmdp        = Ce_que_vous_voulez_de_bien_secure 
 nombase          = gepidb2 
 pathname        = /gepi2 
 nometablissement = Collège Jacques Brel 
 </pre> 

 # créer la base associée et l'utilisateur de la base : 
 > mysql -uroot -p  
 > CREATE DATABASE gepidb2; 
 > GRANT ALL PRIVILEGES ON gepidb2.* TO gepiuser2@localhost IDENTIFIED BY 'Ce_que_vous_voulez_de_bien_secure'; 
 > FLUSH PRIVILEGES; 

 # Créer la structure de tables dans la base d'après le fichier structure_gepi.sql  
 > mysql -ugepiuser2 -p < CHEMIN_GEPI/sql/structure_gepi.sql 
 en remplaçant CHEMIN_GEPI par le chemin relatif ou absolu vers l'arborescence Gepi. 

 # Importer les données initiales de la base d'après le fichier data_gepi.sql  
 > mysql -ugepiuser2 -p < CHEMIN_GEPI/sql/data_gepi.sql 

 # Dans la table setting passer la valeur « multisite » à    « y » 
 > mysql -ugepiuser2 -p 
 > UPDATE setting SET value='y' WHERE name='multisite'; 

 Etc. 

 [[utilisateurs|retour au menu]]