Projet

Général

Profil

Multisite » Historique » Version 4

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