Retourner en haut de la page Aller au bas de la page
Logo de mon site
Logo de mon site

Yasser Arafat

Item 1 Description

Yasser Arafat

Hugo Chávez

Item 1 Description

Hugo Chávez

Mikhaïl Gorbatchev

Item 1 Description

Mikhail Sergueievitch Gorbatchev

L'Abbé Pierre

Item 1 Description

Abbe Pierre

Salvadore Allende

Item 1 Description

Salvadore Allende

Angela Yvonne Davis

Item 1 Description

Angela Yvonne Davis

Jean Moulin

Item 1 Description

Jean Moulin

Nelson Mandela

Item 1 Description

Nelson Mandela

Martin Luther King

Item 1 Description

Martin Luther King

Gamal Abdel Nasser

Item 1 Description

Gamal Abdel Nasser

Richard Stallman

Item 1 Description

Richard Stallman

Simone Veil

Item 1 Description

Simone Veil

Hand Shake

Item 1 Description

Hand Shake

Wangari Muta Maathai

Item 1 Description

Wangari Muta Maathai

Michel Colucci

Item 1 Description

Coluche

Mère Teresa

Item 1 Description

Mère Térésa

Charles de Gaulle

Item 1 Description

Charles de Gaulle

Che Guevara

Item 1 Description

Ernesto Rafael Guevara

Mohandas Gandhi

Item 1 Description

Mohandas Karamchand Gandhi

Lech Walesa

Item 1 Description

Lech Walesa

Linus Benedict Torvalds

Item 1 Description

Linus Benedict Torvalds

Sous-commandant Marcos

Item 1 Description

Sous commandant Insurge Marcos

Ahmed Shah Massoud

Item 1 Description

Ahmed Shah Massoud

Luxpopuli / eZ Publish / Trucs & astuces / eZ Publish : créer un multi-site I





Right menu

OBLIGATOIRE

Un professeur témoigne

La brigade canine dans un collège du Gers.
Réaction d'une internaute Québécoise:
«quand on est rendu à accepter que (...) les autorité mettent leurs sales pattes dans les culottes de vos enfants (...) il est temps (...) de vous réveiller.»
OBLIGATOIRE

Les mensonges de R. Dati

La note de recadrage statistique du sociologue L. Mucchielli recadre également les mensonges de la propagande sécuritaire dont on nous rabat les oreilles depuis déjà trop longtemps et dont les mineurs de France sont à présents la cible.
Le rapport de L. Mucchielli
OBLIGATOIRE

L'aveu de Jean-Marc Sylvestre

«Le système financier s'effondre aujourd'hui comme un jeu de carte... parce que... il a été géré d'une part.... par les États-Unis sans règle... et il a été d'autre part géré... par une bande de voyous... qui se sont gouinfrés... au détriment des autres.»
VOIR LES VIDÉOS

OBLIGATOIRE

prev prev prev prev


eZ Publish : créer un multi-site I

Date de publication: le dimanche 10 juin 2007 Ă  01h51
Dernière modification: par Pascal BOYER le samedi 25 avril 2009 à 10h32
« Article précédent: eZ Publish : installer JW Desktop Player (lecteur flash video avec liste de lecture)
» Article suivant: eZ Publish : utiliser les brouillons

kézako un multi-site

Créer un multi-site c’est créer/héberger, à partir d’une même et seule version installée de eZ publish , plusieurs sites pouvant, ou non, ne rien avoir en commun les uns avec les autres.

avant-propos

Cet article condense les multiples informations que j’ai trouvées sur le net (beaucoup proviennent du site officiel de eZ publish , forums, documentation etc...) et de mon expérience personnelle.

Si vous souhaitez apporter votre pierre à l’édifice (remarques, précisions, corrections etc...) surtout ne vous gênez pas !

Les doc en français ne sont pas légions. Aussi, faites profiter les autres de vos connaissances.

deux sites

Dans la suite de l’article nous allons créer deux sites:

  • site_1 qui sera considĂ©rĂ© comme le site installĂ© lors de l’installation de eZ publish
  • site_2 qui sera le deuxième site.

une base de données pour chaque site

Chaque site doit disposer de sa propre base de données.

Le premier site, site_1 , la possède déjà puisqu’elle a été créée lors de l’installation de eZ publish .

Nous allons donc créer la base de données du deuxième site. Pour cela, commençons par nous connecter au serveur MySQL:

mysql -u root -p

Enter password: On tape le mot de passe de l’admin de MySQL
mysql>

Puis on crée une base de données:

mysql> CREATE DATABASE bd_site_2;

Query OK, 1 row affected (0.02 sec)

On crée ensuite un utilisateur (toto) et son mot de passe (totopwd) et on lui affecte les privilèges d’administrateur (GRANT ALL) pour cette nouvelle base de données (bd_site_2.*):

On évite ainsi qu’un administrateur d’un site puisse effectuer une quelconque opération dans la base de données d’un site dont il n’a pas l’administration.

mysql> GRANT ALL ON bd_site_2.* TO toto@localhost IDENTIFIED BY ’totopwd’;

Query OK, 0 rows affected (0.00 sec)

Et on ferme la connexion:

mysql> QUIT;

Bye

Les scripts kernel_schema.sql et cleandata.sql

Maintenant que la nouvelle base de données est créée, il faut l’ initialiser à l’aide des deux scripts suivants:

  • kernel/sql/mysql/ kernel_schema.sql
  • kernel/sql/mysql/ cleandata.sql

~# cd kernel/sql/mysql/

Puis on se connecte au serveur MySQL avec l’utilisateur toto:

~# mysql -u toto -p

Enter password: On tape le mot de passe de toto
mysql>

On sélectionne le base de données que l’on vient de créer:

mysql> USE bd_site_2;

Database changed

...et on lance d’abord ce script pour créer les 95 tables que contient toute base de données sous eZ publish :

mysql> SOURCE kernel_schema.sql;

..
 ..
 Query OK, 0 rows affected (0.01 sec)
 Query OK, 0 rows affected (0.00 sec)
 Query OK, 0 rows affected (0.00 sec)
 Query OK, 0 rows affected (0.00 sec)
 Query OK, 0 rows affected (0.00 sec)
 mysql>

On poursuit avec le deuxième script:

mysql> SOURCE cleandata.sql;

...
 ...
 Query OK, 5 rows affected (0.01 sec)
 Records: 5 Duplicates: 0 Warnings: 0

Query OK, 4 rows affected (0.00 sec)
 Records: 4 Duplicates: 0 Warnings: 0

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)
 mysql>

Et on ferme la connexion:

mysql> QUIT;

Bye

Création des répertoires des siteaccess

On commence par créer le nouveau siteaccess du nouveau site site_2 .

cd ../../../settings/siteaccess/

...où l’on crée le siteaccess du site public:

cp -pR site_1/ site_2

...puis le siteaccess de la partie interface d’administration du site:

cp -pR site_1_admin/ site_2_admin

ls -la site_2/

total 64
drwxrwxrwx 2 www-data www-data  4096 2006-01-03 01:44 .
drwxrwxr-x 8 www-data www-data  4096 2006-01-02 18:18 ..
-rw-rw-rw- 1 www-data www-data   231 2006-01-02 02:47 content.ini.append.php
-rw-rw-rw- 1 www-data www-data   250 2006-01-02 02:47 design.ini.append.php
-rw-rw-rw- 1 www-data www-data   646 2006-01-02 02:47 fetchalias.ini.append.php
-rw-rw-rw- 1 www-data www-data    79 2006-01-02 02:47 forum.ini.append.php
-rw-rw-rw- 1 www-data www-data  1018 2006-01-02 02:47 image.ini.append.php
-rw-rw-rw- 1 www-data www-data   652 2006-01-02 02:47 menu.ini.append.php
-rw-rw-rw- 1 www-data www-data 11499 2006-01-02 02:47 override.ini.append.php
-rw-rw-rw- 1 www-data www-data   735 2006-01-03 01:44 site.ini.append.php
-rw-rw-rw- 1 www-data www-data   235 2006-01-02 02:47 toolbar.ini.append.php
-rw-rw-rw- 1 www-data www-data    87 2006-01-02 02:47 viewcache.ini.append.php

ls -la site_2_admin/

total 32
drwxr-xr-x 2 root     root     4096 2006-01-02 23:13 .
drwxrwxr-x 8 www-data www-data 4096 2006-01-02 18:18 ..
-rw-rw-rw- 1 www-data www-data  203 2006-01-02 02:47 content.ini.append.php
-rw-rw-rw- 1 www-data www-data   90 2006-01-02 02:47 icon.ini.append.php
-rw-rw-rw- 1 www-data www-data 3338 2006-01-02 02:47 override.ini.append.php
-rw-rw-rw- 1 www-data www-data 1337 2006-01-02 22:07 site.ini.append.php
-rw-rw-rw- 1 www-data www-data 1247 2006-01-02 02:47 toolbar.ini.append.php
-rw-rw-rw- 1 www-data www-data   87 2006-01-02 02:47 viewcache.ini.append.php

Création des siteaccess

Editons à présent le fichier suivant:

vi site_2/site.ini.append.php

1 <?php /* #?ini charset="iso-8859-1"?
2
3 [DatabaseSettings]
4 DatabaseImplementation=ezmysql
5 Server=localhost
6 User=toto          <============ MODIFIÉ !!!
7 Password=totopwd   <============ MODIFIÉ !!!
8 Database=bd_site_2 <============ MODIFIÉ !!!
9 Charset=
10 Socket=disabled
11
12 [InformationCollectionSettings]
13 EmailReceiver=
14
15 [SiteSettings]
16 SiteName=Site 2                                      <============ MODIFIÉ !!!
17 SiteURL=www.linuxorable.net/monsite/index.php/site_2 <============ MODIFIÉ !!!
18 LoginPage=embedded
19
20 [UserSettings]
21 RegistrationEmail=
22
23 [SiteAccessSettings]
24 RequireUserLogin=false
25 ShowHiddenNodes=false
26
27 [DesignSettings]
28 SiteDesign=site_2                     <============ MODIFIÉ !!!
29 AdditionalSiteDesignList[]=site_2_base <============ MODIFIÉ !!!
30
31 [RegionalSettings]
32 Locale=fre-FR
33 ContentObjectLocale=fre-FR
34 TextTranslation=enabled
35
36 [FileSettings]
37 VarDir=var/site_2 <============ MODIFIÉ !!!
38
39 [ContentSettings]
40 TranslationList=eng-GB;por-BR
41
42 [MailSettings]
43 AdminEmail=pascal@linuxorable.net
44 EmailSender=
45 */ ?>

cadre 1

Puis également celui-ci:

vi ../override/site.ini.append.php

...pour y ajouter ces lignes:

10 [SiteSettings]
11 DefaultAccess=site_1
12 SiteList[]
13 SiteList[]=site_1

16
17 [SiteAccessSettings]
18 CheckValidity=false
19 AvailableSiteAccessList[]
20 AvailableSiteAccessList[]=site_1
21 AvailableSiteAccessList[]=site_1_admin
22 AvailableSiteAccessList[]=site_2       <============ AJOUTÉE !!!
23 AvailableSiteAccessList[]=site_2_admin <============ AJOUTÉE !!!

cadre 2

Et on termine avec:

vi site_2_admin/site.ini.append.php

1 <?php /* #?ini charset="iso-8859-1"?
2
3 [DatabaseSettings]
4 DatabaseImplementation=ezmysql
5 Server=localhost
6 User=toto          <=========== MODIFIÉ !!!
7 Password=totopwd   <=========== MODIFIÉ !!!
8 Database=bd_site_2 <=========== MODIFIÉ !!!
9 Charset=
10 Socket=disabled
11
12 [InformationCollectionSettings]
13 EmailReceiver=
14
15 [SiteSettings]
16 SiteName=Site 2 admin                                      <=========== MODIFIÉ !!!
17 SiteURL=www.linuxorable.net/monsite/index.php/site_2_admin <=========== MODIFIÉ !!!
18 LoginPage=custom
19
20 [UserSettings]
21 RegistrationEmail=
22
23 [SiteAccessSettings]
24 RequireUserLogin=true
25 ShowHiddenNodes=true
26
27 [DesignSettings]
28 SiteDesign=admin
29
30 [RegionalSettings]
31 Locale=fre-FR
32 ContentObjectLocale=fre-FR
33 TextTranslation=enabled
34
35 [FileSettings]
36 VarDir=var/site_2 <=========== MODIFIÉ !!!
37
38 [ContentSettings]
39 CachedViewPreferences[full]=admin_navigation_content=0;admin_navigation_details=0;admin_navigation_languages=0;admin_navigation_locations=0;
    admin_navigation_relations=0;admin_navigation_roles=0;admin_navigation_policies=0;admin_navigation_content=0;admin_navigation_translations=0;
     admin_children_viewmode=list;admin_list_limit=1;admin_edit_show_locations=0;admin_leftmenu_width=10;admin_url_list_limit=10;
     admin_url_view_limit10;admin_section_list_limit=1;admin_orderlist_sortfield=user_name;admin_orderlist_sortorder=desc;admin_search_stats_limit=1;
     admin_treemenu=1;admin_bookmarkmenu=1;admin_left_menu_width=13
40 TranslationList=eng-GB;por-BR
41
42 [MailSettings]
43 AdminEmail=pascal@linuxorable.net
44 EmailSender=
45 */ ?>

cadre 3

Création du répertoire de design

Puisque nous créons un siteaccess il est intéressant que celui-ci ait aussi ses propres templates voires ses propres templates de surcharge.

Par défaut, le fichier settings/siteaccess/site_1/ site.ini.append.php mentionne ceci:

27 [DesignSettings]
 28 SiteDesign=plain
 29 AdditionalSiteDesignList[]=base

Si décidément, le système ne trouve pas son bonheur dans ce dernier répertoire, alors en dernier recours, c’est le répertoire design/standard/ qui sera parcouru.

Partant, on peut en déduire que l’on peut créer, pour site_2 , deux répertoires design ainsi:

On se place dans le répertoire design :

cd ../../design/

...pour y créer les deux designs suivants (voir les modifs du cadre 1):

cp -pR plain/ site_2

cp -pR base/ site_2_base

On peut contrôler la provenance des templates utilisés en paramétrant le mode debug (voir Le mode debug ).

Création des répertoires de cache

cd ../var

...où l’on crée les trois sous-répertoires suivants:

mkdir site_2

mkdir site_2/storage

mkdir site_2/cache

à savoir Le sous-répertoire site_2/ storage/ contiendra les fichiers multimédia (voir le paragraphe LES REPERTOIRES DE STOCKAGE de l’article Quelques notions de base pour plus d’information).

Et on n’oublie pas d’affecter les droits requis:

chown -R www-data:www-data site_2/

On tape dans Firefox l’URI suivante:

http://www.linuxorable.net/monsite/index.php/site_2 

...et on obtient ce message d’erreur:

IMAGE

Fig. 1: Erreur / kernel (3) - Objet non disponible

Bof... pas terrible comme résultat pour tout ce travail !

Pas de panique.

Problème lié au choix de la langue

En lisant les forums on découvre que cette erreur est due à un problème de langue engendré par le script cleandata.sql .

En effet, ce script initialise l’anglais comme langue d’environnement. Or, si lors de l’installation de eZ publish une autre langue par défaut est choisie (voir figure 5 de l’article Installer eZ publish ) alors on est gratifié du joli message d’erreur présenté par la figure 1 ci-dessus.

Pour remédier à ce problème, toujours en lisant les forums et les docs, on apprend qu’il faut lancer deux commandes MySQL.

On se connecte au serveur MySQL:

mysql -u toto -p

Enter password: On tape le mot de passe de toto
mysql> 

Puis on sélectionne le base de données que l’on vient de créer:

mysql> USE bd_site_2;

Database changed

...et on lance cette commande absconse:

mysql> UPDATE ezcontentobject_name SET content_translation=’fre-FR’,real_translation=’fre-FR’ WHERE content_translation=’eng-GB’ OR real_translation=’eng-GB’;

Query OK, 19 rows affected (0.10 sec)

Rows matched: 19 Changed: 19 Warnings: 0

...qui "initialise" le français dans la table ezcontentobject_name à la place de l’anglais.

Puis on lance cette deuxième commande:

mysql> UPDATE ezcontentobject_attribute SET language_code=’fre-FR’ WHERE language_code=’eng-GB’;

Query OK, 75 rows affected (0.11 sec)

Rows matched: 75 Changed: 75 Warnings: 0

...et on se déconnecte du serveur MySQL:

mysql> QUIT;

Bye

Si on réactualise la page http://www.linuxorable.net/monsite/index.php/site_2 on obtient cette fois-ci:

IMAGE

Fig. 2: Affichage du site après application des deux commandes MySQL ci-dessus

important Pour se loguer en tant qu’admin sur la page http://www.linuxorable.net/monsite/index.php/ site_2_admin :

login: admin password: publish

Ce que l’on remarque en premier lieu sur les figures 1 et 2 c’est l’absence de menu. Et c’est normal.

Lors d’une installation graphique, un menu et du contenu de démonstration ou d’exemple sont crées et insérés dans la base de données. Ce qui n’est pas le cas ici. Il faut donc créer de toute pièce un menu et son contenu via l’interface d’administration.

Séparer les répertoires de fichiers et de cache

La documentation officielle de eZ publish 3.6 est très claire:

Dans le cas d’un multi-site basé sur le siteaccess il est préférable de séparer les répertoires de cache et de stockage des fichiers.
Ceci rend l’administration des sites moins "bordélique" et donc plus aisée. 
 
 Or par défaut, eZ publish stocke les caches et les fichiers de tous les sites dans un même répertoire. 
 
 Ceci pose problème si l’on souhaite, par exemple, migrer, dans le futur, un site sur un autre serveur. 
 (traduction par moi-mĂŞme ;-) )

La solution proposée est alors d’ajouter aux fichiers settings/sitaccess/ site_2 /site.ini.append.php et settings/sitaccess/ site_2_admin /site.ini.append.php , par exemple, les deux lignes suivantes:

[FileSettings]
 StorageDir=site_2/storage
 CacheDir=site_2/cache

important La doc officielle de eZ publish 3.6 insiste sur le fait qu’il est important que les parties publique et d’administration d’un même site stockent leurs fichiers dans les mêmes répertoires.

Cependant, et quoi qu’en dise la documentation officielle, à la fin d’une installation de eZ publish on peut remarquer que la section [FileSettings] du fichier monsite/site.ini.append.php ne contient pas ces deux lignes mais celle-ci:

[FileSettings]
 VarDir=var/plain

Et pourtant, le répertoire var/plain/ contient les deux sous-répertoires cache et storage qui ne sont pas vides !

Il semble donc que l’on puisse opter pour l’une ou l’autre syntaxe, les deux ayant le même effet: placer les bons fichiers dans les bon répertoires.

Gestion du cache

IMAGE

Fig. 3: Le module Vider le cache dans l’interface d’administration

...n’affecte que le cache relatif au siteaccess utilisé.

Pour s’en convaincre, il suffit d’afficher dans son navigateur deux pages d’accueil de deux sites différents puis, à partir d’une interface d’administration, de vider tous les caches.

Ensuite, dans une console, on se place dans le répertoire var/ et on lance cette commande:

grep -R "SiteName" *

On remarque alors que parmi tous les fichiers cache retournés par la commande aucun ne correspond au site dont on vient de vider tous les caches. Et bien sûr, les fichiers cache des autres sites sont encore présents.

Lien vers l'article précédent
eZ Publish : installer JW Desktop Player (lecteur flash video avec liste de lecture)
eZ Publish : utiliser les brouillons
Lien vers l'article suivant

Commentaires