29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don




Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : Mettre à jour un site mutualisé -- 3

Date de publication: le jeudi 2 août 2007 à 23h11
Dernière modification: par Pascal BOYER le mardi 7 août 2007 à 21h46
« Article précédent: eZ Publish : Mettre à jour un site mutualisé -- 2

Cet article récapitule, toujours au travers de l'exemple réel du site entre-lac-et-montagne.com , les différentes étapes de la procédure de mise à jour décrite par le document eZ Publish : mettre à jour de 3.8.x vers 3.9.0

Vous trouverez donc ci-dessous l'ensemble des commandes à exécuter ainsi que les sorties qu'elles renvoient, des messages d'erreur que l'on peut rencontrer et la solution à apporter.

:
En aucun cas ce document dispense de la lecture de l'article eZ Publish : mettre à jour de 3.8.x vers 3.9.0

Répertoire temporaire

On crée un répertoire temporaire à la racine du serveur Apache:

mkdir ezp390

On désarchive dedans la version 3.9.0

bunzip ezpublish-3.9.0-gpl.tar.bz2

tar xfv ezpublish-3.9.0-gpl.tar -C /usr/local/www/ezp390/

Si besoin, on modifie le propriétaire et le groupe pour préserver l'accès du serveur au répertoire:

chown -R www-data:www-data ezp390

Problème avec le script correctxmltext.php

Comme l'indique la doc eZ Publish : mettre à jour de 3.8.x vers 3.9.0 , il faut modifier le script

update/common/scripts/3.9/correctxmltext.php

...dont la ligne 309:

$doc =& $xml->domTree( $text, array( "TrimWhiteSpace" => false ) );

...doit être remplacée par ceci:

$doc =& $xml->domTree( $text, array( "TrimWhiteSpace" => false, "SetParentNode" => true ) );

Les répertoires de la version 3.8

A présent, il faut copier, dans le répertoire temporaire, les répertoires de la version 3.8.x contenant des fichiers spécifiques.

Les design

Par défaut, la version 3.9.0 ne contient que ces 3 designs:

ls -la ezp390/design/

total 20
 drwxrwxr-x  5 www-data www-data 4096 2006-12-18 20:36 .
 drwxr-sr-x 19 www-data www-data 4096 2007-08-02 22:02 ..
 drwxrwxr-x  6 www-data www-data 4096 2006-12-18 20:36 admin
 drwxrwxr-x  6 www-data www-data 4096 2006-12-18 20:36 base
 drwxrwxr-x  7 www-data www-data 4096 2006-12-18 20:36 standard

Donc il suffit de copier les designs suivants:

ls -la rep_tempo/design/

total 28
 drwxrwxrwx  7 www-data www-data 4096 2007-01-30 18:11 .
 drwxrwx--- 20 www-data www-data 4096 2007-08-01 13:50 ..
 drwxrwxrwx  6 www-data www-data 4096 2007-01-29 13:13 admin
 drwxr-xr-x  6 www-data www-data 4096 2007-01-30 18:13 admin_bis     <==== Lui !!
 drwxrwxrwx  6 www-data www-data 4096 2007-01-29 13:13 base
 drwxrwxrwx  9 www-data www-data 4096 2007-06-07 17:50 plain_site    <==== Lui !!
 drwxrwxrwx  7 www-data www-data 4096 2007-01-29 13:13 standard

Les icônes

Comme je modifie régulièrement le fichier:

share/icons/crystal-admin/icon.ini

...je n'oublie pas de le copier:

Les siteaccess

Par défaut voici ce qui est présent dans la version 3.9.0

ls -la ezp390/settings/siteaccess/

total 16
 drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:37 .
 drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:42 ..
 drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:44 admin
 drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:37 setup

Donc on copie ceci:

ls -la rep_tempo/settings/siteaccess/

total 20
 drwxrwxrwx 5 www-data www-data 4096 2007-05-28 15:18 .
 drwxrwxrwx 4 www-data www-data 4096 2007-01-29 13:13 ..
 drwxrwxrwx 2 www-data www-data 4096 2007-08-01 20:23 accueil_paysan    <=== Lui !!
 drwxrwxrwx 2 www-data www-data 4096 2007-08-01 20:22 plain_admin       <=== Lui !!
 drwxrwxrwx 2 www-data www-data 4096 2007-01-29 13:16 setup

Surcharge générale

Par défaut, le répertoire de surcharges générales est vide:

ls -la ezp390/settings/override/

total 8
 drwxrwxr-x 2 www-data www-data 4096 2006-12-18 20:42 .
 drwxrwxr-x 4 www-data www-data 4096 2006-12-18 20:42 ..

Donc on peut tout copier:

ls -la rep_tempo/settings/override/

total 24
 drwxrwxrwx 2 www-data www-data 4096 2007-08-02 20:52 .
 drwxrwxrwx 4 www-data www-data 4096 2007-01-29 13:13 ..
 -rw-rw-rw- 1 www-data www-data   77 2007-01-30 15:51 i18n.ini.append.php
 -rw-rw-rw- 1 www-data www-data   73 2007-01-30 15:51 image.ini.append.php
 -rw-rw-rw- 1 www-data www-data  424 2007-08-01 20:34 site.ini.append.php

Extensions

Par défaut voici les extensions présentes dans la version 3.9.0:

ls -la ezp390/extension/

total 20
 drwxrwxr-x  5 www-data www-data 4096 2006-12-18 20:43 .
 drwxr-sr-x 19 www-data www-data 4096 2007-08-02 22:02 ..
 drwxrwxr-x  9 www-data www-data 4096 2006-12-18 20:44 ezdhtml
 drwxrwxr-x 10 www-data www-data 4096 2006-12-18 20:44 ezodf
 drwxrwxr-x  5 www-data www-data 4096 2006-12-18 20:44 ezpaypal

Donc je ne copie que celle-ci:

ls -la rep_tempo/extension/

total 20
 drwxrwxrwx  5 www-data www-data 4096 2007-05-28 15:34 .
 drwxrwx--- 20 www-data www-data 4096 2007-08-01 13:50 ..
 drwxrwxrwx  9 www-data www-data 4096 2007-01-29 13:14 ezdhtml
 drwxrwxrwx  5 www-data www-data 4096 2007-01-29 13:13 ezpaypal
 drwxr-xr-x  6 www-data www-data 4096 2007-05-28 14:29 googlesitemaps  <=== Lui !!

Le répertoire var/

Par défaut, le répertoire var/ de la version 3.9.0 est presque vide:

ls -la ezp390/var/

total 16
 drwxrwxr-x  4 www-data www-data 4096 2006-12-18 20:42 .
 drwxr-sr-x 19 www-data www-data 4096 2007-08-02 22:02 ..
 drwxrwxr-x  2 www-data www-data 4096 2006-12-18 20:42 cache
 drwxrwxr-x  3 www-data www-data 4096 2006-12-18 20:43 storage

Je copie donc tout cela:

ls -la rep_tempo/var/

total 24
 drwxrwxrwx  6 www-data www-data 4096 2007-03-16 21:30 .
 drwxrwx--- 20 www-data www-data 4096 2007-08-01 13:50 ..
 drwxrwxrwx  2 www-data www-data 4096 2007-08-02 21:41 cache
 drwxrwxr-x  2 www-data www-data 4096 2007-07-24 09:37 log            <=== Lui !!
 drwxrwxr-x  5 www-data www-data 4096 2007-02-01 14:35 plain_site     <=== Lui !!
 drwxrwxrwx  3 www-data www-data 4096 2007-01-30 15:43 storage        <=== Lui !!

.htaccess

Penser éventuellement à ce fichier

Mise à jour de la base de données

Modification du fichier dbupdate-3.8.0-to-3.9.0.sql

Comme indiqué dans la doc officielle, et puisque je met à jour une version 3.8.6, je dois supprimer les deux parties de ce fichier qui commencent, l'une par:

4 -- START: from 3.8.1

...et se termine par:

13 -- END: from 3.8.1

Et l'autre par:

79 -- START: from 3.8.5

...et se termine par:

123 -- END: from 3.8.5

Problème du moteur de table

Par défaut, le serveur MySQL de Haisoft utilie le moteur de table innoDB et non, celui par défau, MyISAM. Il faut donc, comme le demande la documentation, modifier le fichier dbupdate-3.8.0-to-3.9.0.sql.

La modification,qui consiste à ajouter la commande TYPE = InnoDB en fin de requête CREATE TABLE, porte uniquement sur les 4 requêtes de création de nouvelles tables que contient le fichier.

Voici les 4 modifications:

15 CREATE TABLE ezcontentobject_trash (
16   contentobject_id int(11) default NULL,
17   contentobject_version int(11) default NULL,
18   depth int(11) NOT NULL default '0',
19   is_hidden int(11) NOT NULL default '0',
20   is_invisible int(11) NOT NULL default '0',
21   main_node_id int(11) default NULL,
22   modified_subnode int(11) default '0',
23   node_id int(11) NOT NULL,
24   parent_node_id int(11) NOT NULL default '0',
25   path_identification_string longtext,
26   path_string varchar(255) NOT NULL default '',
27   priority int(11) NOT NULL default '0',
28   remote_id varchar(100) NOT NULL default '',
29   sort_field int(11) default '1',
30   sort_order int(11) default '1',
31   PRIMARY KEY  (node_id)
32 )TYPE = InnoDB;                              <=== ICI !!!
47 CREATE TABLE ezcontentclass_name
48 (
49     contentclass_id int NOT NULL default '0',
50     contentclass_version int NOT NULL default '0',
51     language_locale varchar(20) NOT NULL default '',
52     language_id int NOT NULL default '0',
53     name varchar(255) NOT NULL default '',
54     PRIMARY KEY (contentclass_id, contentclass_version, language_id)
55 )TYPE = InnoDB;                                                            <=== ICI !!!
73 CREATE TABLE `ezsearch_search_phrase_new` (
74   `id` int(11) NOT NULL auto_increment PRIMARY KEY ,
75   `phrase` varchar(250) default NULL,
76   `phrase_count` int(11) default '0',
77   `result_count` int(11) default '0'
78 )TYPE = InnoDB;                              <=== ICI !!!
94 CREATE TABLE `ezsearch_return_count_new` (
95   `id` int(11) NOT NULL auto_increment   PRIMARY KEY,
96   `phrase_id` int(11) NOT NULL default '0',
97   `time` int(11) NOT NULL default '0',
98   `count` int(11) NOT NULL default '0'
99 )TYPE = InnoDB;                              <=== ICI !!!

Appliquer la mise à jour

mysql -u monidentifiant -pmonmotdepasse mabasededonnees < update/database/mysql/3.9/dbupdate-3.8.0-to-3.9.0.sql

Un des résultats de l'application du fichier de mise à jour de la base de données est la création des quatres nouvelles tables suivantes:

ezcontentobject_trash
ezcontentclass_name
ezsearch_search_phrase
ezsearch_return_count

Restauration du dump en cas de problème:

S'il vous arrive quoi que ce soit, vous pouvez très facilement retrouver le stade initial de votre base de données en commençant par supprimer toutes ses tables puis en restaurant le dump (le fichier de sauvgarde) avec cette commande:

mysql -u monidentifiant -pmonmotdepasse -D mabasededonnees < entre-lac-et-montagne.com0731173723.mysql

Le script updateclasstranslations.php

Message d'erreur

L'application de ce script avec la commande ci-dessous peut entrainer un message d'erreur:

/usr/bin/php update/common/scripts/3.9/updateclasstranslations.php -s accueil_paysan --language=fre-FR

Using siteaccess 'accueil_paysan' for translation update
 Updating Folder class
 
 Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 42 bytes) in
                  /usr/local/www/ezp390/lib/ezxml/classes/ezdomdocument.php on line 271
 Allowed memory size of 33554432 bytes exhausted (tried to allocate 34 bytes)

Il semble donc que j'ai un problème de quantité de mémoire insuffisante allouée à l'exécution du script. Pourtant, mon fichier php.ini contient:

vi /etc/php4/apache/php.ini

238 ;;;;;;;;;;;;;;;;;;;
239 ; Resource Limits ;
240 ;;;;;;;;;;;;;;;;;;;
241
242 ;max_execution_time = 30     ; Maximum execution time of each script, in seconds
243 max_execution_time = 600
244 max_input_time = 120 ; Maximum amount of time each script may spend parsing request data
245 ;memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)
246 memory_limit = 128M

Solution 1

La première solution consiste à exécuter la commande avec l'option suivante:

/usr/bin/php -dmemory_limit=128M update/common/scripts/3.9/updateclasstranslations.php -s accueil_paysan --language=fre-FR

Using siteaccess 'accueil_paysan' for translation update
 Updating Folder class
 Updating Article class
 Updating User group class
 Updating User class
 Updating Image class
 Updating Link class
 Updating File class
 Updating Comment class
 Updating Common ini settings class
 Updating Template look class
 Updating Dossier Lac et Montagne class
 Updating Article Lac et Montagne class
 Updating Nouvelle Classe class
 Updating Galerie 1 Simple slideshow class
 Updating Image Simple slideshow class
 Done

Solution 2

En fait le problème provient du fait que lorsqu'on utilise CLI (et avec certaines distributions Linux dont Debian) le fichier de configuration utilisé n'est pas:

/etc/php4/apache/php.ini

mais:

/etc/php4/cli/php.ini

Il convient donc de s'assurer des valeurs suivantes dans ce dernier fichier:

max_execution_time = 300     ; Maximum execution time of each script, in seconds
max_input_time = 120 ; Maximum amount of time each script may spend parsing request data
memory_limit = 60M      ; Maximum amount of memory a script may consume (32MB)

Il n'est pas nécessaire de relancer le serveur Apache après avoir modifié le fichier de configuration de PHP CLI car ce n'est pas le serveur web qui exécute ces scripts mais le système.

Le script cor rectxmltext.php

Pour appliquer ce script, j'utilise la commande suivante:

/usr/bin/php update/common/scripts/3.9/correctxmltext.php --global

Element 'td': class 'justifier_texte' is added to the list.
 Element 'paragraph': class 'saut_de_ligne' is added to the list.
 Element 'table': class 'tableau_2' is added to the list.
 Element 'embed': class 'padding_right_object' is added to the list.
 Element 'embed': class 'padding_left_object' is added to the list.
 Element 'header': class 'centre' is added to the list.
 Element 'paragraph': class 'indent30' is added to the list.
 Element 'td': class 'centrer_texte' is added to the list.
 Element 'table': class 'tableau_1' is added to the list.
 Element 'td': class 'texte_a_gauche' is added to the list.
 Element 'strong': class 'orange1' is added to the list.
 Element 'strong': class 'bleu1' is added to the list.
 Element 'strong': class 'rose1' is added to the list.
 Element 'strong': class 'vert1' is added to the list.
 Element 'strong': class 'bleu5' is added to the list.
 
 Settings file 'settings/override/content.ini.append' has been updated.
 
 XML text blocks: OK
 
 Done.

Le script updatetypedrelation.php

Pour appliquer ce script, j'utilise la commande suivante (dont la sortie est très très verbeuse, en l'occurrence 1092 lignes):

/usr/bin/php update/common/scripts/3.9/updatetypedrelation.php -s accueil_paysan

...
...
...
Added embed relation. Object ID 408( ver. 9 ) => ID 424
Added embed relation. Object ID 408( ver. 9 ) => ID 425
Added embed relation. Object ID 408( ver. 9 ) => ID 426
Added embed relation. Object ID 408( ver. 9 ) => ID 427
Added embed relation. Object ID 408( ver. 9 ) => ID 428
Total: 1092 relation(s) detected at 29 objects.

Dernières étapes

On renomme le répertoire rep_tempo/

mv rep_tempo rep_tempo_orig

Puis le répertoire ezp390/

mv ezp390 rep_tempo

On test la nouvelle version du site.

Site public:

Accès interface d'administration

Commentaires