Projet

Général

Profil

Multisite » Historique » Version 7

Stéphane Boireau, 08/05/2016 19:00

1 2
h1. Gepi en multisite
2
3 4 Stéphane Boireau
h2. Principes
4 1
5 4 Stéphane Boireau
Il s'agit de n'utiliser qu'une seule arborescence de Gepi pour plusieurs établissements. 
6
Chaque établissement possède sa propre base de données qui est appelée par une information en GET dans l'url. 
7
Ensuite un cookie contenant le RNE de l'établissement en question permet de faire suivre cette information. 
8
Il est donc souhaitable que le système d'authentification soit centralisé (comme un LDAP ou CAS,...), 
9
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.
10 1
11 4 Stéphane Boireau
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,...
12 1
13
14 4 Stéphane Boireau
h2. Que faut-il faire
15 1
16 6 Stéphane Boireau
Il faut commencer par lire les fichiers connect.cfg et multisite.ini.php où tout est expliqué... mais pas forcément très clair... d'où la documentation qui suit (merci à Bertrand Lods pour le compte-rendu).
17 1
18 4 Stéphane Boireau
L'installation STANDARD et l'installation MULTISITE sont distinct :
19 1
20 4 Stéphane Boireau
> Soit on fait l'installation STANDARD
21
> Soit on fait l'installation MULTISITE
22
23
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.
24
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).
25
26
Il faut commencer par lire les fichiers :
27
>/secure/modeles/connect-modele.inc.php
28
>/secure/modeles/multisite-modele.ini.php
29
Ce sont les fichiers qui serviront de modèles à ceux qu'il faudra copier et compléter manuellement en
30
>/secure/connect.inc.php
31
>/secure/multisite.ini.php
32
33
34
*1.* Transfert de fichier par ftp dans /var/ftp/pub/public :
35
36
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)
37
38
39
*2.* Transfert du répertoire vers /var/www/html :
40
41
[root@applietab1 html]# mv /var/ftp/pub/public/gepi-1.6.8/ /var/www/html/gepi
42
43
44
*3.* Rendre apache propriétaire du répertoire gepi :
45
46
[root@applietab1 html]# chown apache:apache -R gepi/
47
48
49
*4.* Installation MULTISITE:
50
51
52
h3. Fichier connect.inc.php
53
54
Les déclarations des variables 
55
>$dbHost="localhost";
56
>$dbDb="gepi";
57
>$dbUser="gepi";
58
>$dbPass="gepi";
59
>$gepiPath="/gepi";
60
en début de fichier ne seront *pas prises en compte* dans une installation multisite.
61
Vous pouvez ne pas modifier ces valeurs.
62
Vous pouvez même commenter ces lignes.
63
64
C'est la deuxième partie du fichier qu'il va falloir paramétrer:
65
66
<pre>
67
# ============
68
# Deuxième cas : vous êtes en configuration multi-site
69
# (une installation de Gepi / plusieurs établissements)
70
#
71
# 1- Passez la variable $multisite à "y",
72
#    Remplacez "n" par "y" dans la ligne [$multisite = "n";]
73
#    située au 1- du premier cas ci-dessus
74
#    ou dé-commentez -retirez le "# " en début de ligne- la ligne ci-dessous
75
$multisite = "y"; => Décommenter la ligne
76
#
77
</pre>
78
79
Et décommentez toute la portion de code suivante pour le multisite
80
81
<pre>
82
/*
83
if ($multisite == "y" AND $_SERVER["SCRIPT_NAME"] != "/login.php") {
84
    $RNE = isset($_REQUEST['rne']) ? $_REQUEST['rne'] : (isset($_REQUEST['RNE']) ? $_REQUEST['RNE'] : (isset($_REQUEST['organization']) ? $_REQUEST['organization'] : (isset($_COOKIE['RNE']) ? $_COOKIE['RNE'] : NULL)));
85
    if (!isset($RNE) || $RNE == 'RNE') {
86
        echo 'Erreur : Numero d\'etablissement manquant dans la requete (parametre rne ou organization).'; die();
87
    } else {
88
        setcookie('RNE', $RNE, null, '/');
89
        $_COOKIE['RNE'] = $RNE;
90
        $init = parse_ini_file(dirname(__FILE__)."/../secure/multisite.ini.php", TRUE);
91
        if (    !isset($init[$RNE]["nomhote"]) ||
92
            !isset($init[$RNE]["nombase"]) ||
93
            !isset($init[$RNE]["mysqluser"]) ||
94
            !isset($init[$RNE]["mysqlmdp"]) ||
95
            !isset($init[$RNE]["pathname"])
96
            ) {
97
            echo 'Erreur : Numero d\'etablissement '.$RNE.' non trouve dans la configuration'; die();
98
        }
99
        $dbHost        = $init[$RNE]["nomhote"];
100
        $dbDb        = $init[$RNE]["nombase"];
101
        $dbUser        = $init[$RNE]["mysqluser"];
102
        $dbPass        = $init[$RNE]["mysqlmdp"];
103
        $gepiPath    = $init[$RNE]["pathname"];
104
    }
105
}
106
 */
107
</pre>
108
109
h3. Renseigner le fichier /secure/multisite.ini.php
110
111
Il va s'agir de renseignez le fichier /secure/multisite.ini.php
112
Copier/renommer le ficher /secure/modeles/multisite-modele.ini.php vers /secure/multisite.ini.php
113
114
Il faut déclarer dans multisite.ini.php une base par établissement 
115
116
<pre>
117
[RNE]
118
nomhote        = 
119
mysqluser      = 
120
mysqlmdp      =
121
nombase        = 
122
pathname      = 
123
nometablissement = 
124
</pre>
125
126
Par exemple:
127
<pre>
128
[012345A]
129
nomhote        = localhost
130
mysqluser      = gepiuser1
131
mysqlmdp      = Ce_que_vous_voulez_de_bien_secure
132
nombase        = gepidb1
133
pathname      = /gepi1
134
nometablissement = Collège Georges Brassens
135
</pre>
136
où 012345A est le RNE de l'établissement.
137
localhost sera le serveur de base de données si le serveur web héberge aussi le serveur de bases de données.
138
139
Comme mentionné plus haut, il faut effectuer un certain nombre d'opérations manuellement ou via phpMyAdmin:
140
# créer la base associée et l'utilisateur de la base :
141
> mysql -uroot -p 
142
> CREATE DATABASE gepidb1;
143
> GRANT ALL PRIVILEGES ON gepidb1.* TO gepiuser1@localhost IDENTIFIED BY 'Ce_que_vous_voulez_de_bien_secure';
144
> FLUSH PRIVILEGES;
145
146
# Créer la structure de tables dans la base d'après le fichier structure_gepi.sql 
147
> mysql -ugepiuser1 -p < CHEMIN_GEPI/sql/structure_gepi.sql
148
en remplaçant CHEMIN_GEPI par le chemin relatif ou absolu vers l'arborescence Gepi.
149
150
# Importer les données initiales de la base d'après le fichier data_gepi.sql 
151
> mysql -ugepiuser1 -p < CHEMIN_GEPI/sql/data_gepi.sql
152
153
# Dans la table setting passer la valeur « multisite » à  « y »
154
> mysql -ugepiuser1 -p
155
> UPDATE setting SET value='y' WHERE name='multisite';
156
157
Procéder de la même façon dans le multisite.ini.php pour les autres établissements:
158
159
<pre>
160
[RNE2]
161
nomhote        = 
162
mysqluser      = 
163
mysqlmdp      =
164
nombase        = 
165
pathname      = 
166
nometablissement = 
167
</pre>
168
169
Par exemple:
170
<pre>
171
[098765B]
172
nomhote        = localhost
173
mysqluser      = gepiuser2
174
mysqlmdp      = Ce_que_vous_voulez_de_bien_secure
175
nombase        = gepidb2
176
pathname      = /gepi2
177
nometablissement = Collège Jacques Brel
178
</pre>
179
180
# créer la base associée et l'utilisateur de la base :
181
> mysql -uroot -p 
182
> CREATE DATABASE gepidb2;
183
> GRANT ALL PRIVILEGES ON gepidb2.* TO gepiuser2@localhost IDENTIFIED BY 'Ce_que_vous_voulez_de_bien_secure';
184
> FLUSH PRIVILEGES;
185
186
# Créer la structure de tables dans la base d'après le fichier structure_gepi.sql 
187
> mysql -ugepiuser2 -p < CHEMIN_GEPI/sql/structure_gepi.sql
188
en remplaçant CHEMIN_GEPI par le chemin relatif ou absolu vers l'arborescence Gepi.
189
190
# Importer les données initiales de la base d'après le fichier data_gepi.sql 
191
> mysql -ugepiuser2 -p < CHEMIN_GEPI/sql/data_gepi.sql
192
193
# Dans la table setting passer la valeur « multisite » à  « y »
194
> mysql -ugepiuser2 -p
195
> UPDATE setting SET value='y' WHERE name='multisite';
196
197
Etc.
198 3 Stéphane Boireau
199 7 Stéphane Boireau
h2. Se connecter
200
201
Pour se connecter, l'utilisateur (sans CAS) doit accéder à:
202
>https://SERVEUR_GEPI/CHEMIN_GEPI/login.php?rne=012345A
203
c'est-à-dire préciser en barre d'adresse le RNE de l'établissement.
204
*Attention* :  La chaine *rne=* doit être en minuscules.
205
206 3 Stéphane Boireau
[[utilisateurs|retour au menu]]