www.ezpublish-check.org
Translation in progress... If you want to help us mail : contact@ez-france.org

Toute aide pour traduire et contribuer est la bienvenue !


Check your eZ Publish project

Some tips and tricks to check before put an eZ Publish site in production environment.


    • Definition

      View Caching is a key cache layer, it must be enabled.

      On the one hand, templates, on the other hand content, and wrapping it all together : the layout. View Caching is responsible for caching the result of the template's interpretation, itself performing the content fetches and reads.

      Once this cache layer is enabled, the template interpretation/compilation will be performed only once, the result cached, and all subsequent requests to this specific content served the cached result. This significantly boosts performances (read: tremendously).

      View Cache expiry and regeneration is smartly handled in eZ Publish. What one needs to keep in mind is that a piece of content cache is generated per content item, further uniquified based on :

      • the view mode ( "full" and "sitemap" by default )
      • the parameters set in the requested URL ( aka $view_parameters, /(name)/value/ )
      • the language

      It is expired when :

      • the respective content is modified
      • one of the direct children nodes is modified or newly published
      • another object tagged with the same keywords is modified or newly published ( if both objects have an ezkeyword - "Keyword" attribute )
      • a directly, or reverse-related object is updated or newly published

      These rules are customizable through the SmartViewCache system.

      Enabling the View Cache

      This can be done in the site.ini.append.php file :

      [ContentSettings]
      ViewCaching=enabled

      Available resources on this topic :

    • Définition

      Les caches block sont des instructions de templates que l'on utilise le plus souvent dans le pagelayout.
      Le résultat de l'interprétation template/données à l'intérieur d'un cache-clock est stocké pour être remonté directement du cache une fois généré.

      La cache-block fonction prend donc des paramètres: la clé, la date d'expiration, ignore_content_expiry et subtree_expiry.
      Ces paramétrés permettent de définir plusieurs caches pas clés et de régler l'expiration.

      Attention, quand vous ne spécifiez uniquement le paramètre de clef, le cache-block est invalidé à chaque publication de contenu ou 2h après sa génération.

      Utilisation

      Voici un exemple de pagelayout.tpl :

      {cache-block keys=$uri_string ignore_content_expiry}
          {include uri="design:_common/_head.tpl"}
          <div id="conteneur">
              {include uri="design:_common/header.tpl"}
              <div id="content">
                  <div id="contenu">
      {/cache-block}
                      {$module_result.content}
      {cache-block keys=array($uri_string,$current_user.contentobject_id) ignore_content_expiry}
                      <br />
                  </div>
                  {include uri="design:_common/sidebars.tpl"}
                  <br />
              </div>
          </div>
          {include uri="design:_common/footer.tpl"}
      {/cache-block}

      Ressources disponibles sur les cache-block

    • Voici différents points à vérifier qui vous permettrons de maintenir une certain sécurité sur votre instance :

      • utiliser l'opérateur wash() pour éviter les attaques XSS
      • Limiter les droits sur votre base de données
        • CREATE
        • DROP
        • ALTER
        • INDEX
        • DELETE
        • INSERT
        • SELECT
        • UPDATE
        • CREATE TEMPORARY TABLES
        • LOCK TABLES
      GRANT CREATE,DROP,ALTER,INDEX,DELETE,INSERT,SELECT,
          UPDATE,CREATE TEMPORARY TABLES,LOCK TABLES
          ON ma_base_pour_ez.*
          TO 'mon_user_pour_ez'@'localhost'
          IDENTIFIED BY 'mon_super_motdepasse';
      FLUSH PRIVILEGES;
      • Désactiver les modules inutiles selon vos fonctionnalités (comme s'inscrire sur l'interface d'administration)
      [SiteAccessRules]
      Rules[]
      Rules[]=access;enable
      Rules[]=moduleall
      Rules[]=access;disable
      Rules[]=module;user/register
      Rules[]=module;user/forgotpassword
      Rules[]=module;user/activate
      Rules[]=module;user/success
      Rules[]=module;ezinfo
      • Vérifier les vues des contenus sans templates ainsi que ceux avec un template par défaut.
        Si vous avez donné le droit à l'utilisateur Anonyme de voir la section Média, il est bon (dans la plupart des cas de faire en sorte que les "Folder" dans Média ne soit pas listable)
        La vue full par défaut d'une nouvelle classe donnent des informations qui n'ont pas besoin d'être divulgués.
      • Configurer un groupe "Contributeurs" pour limiter l'accès aux fonctionnalités importantes de l'interface d'administration.
      • Mettre à jour eZ Publish au fur à mesure des sorties des versions officielles

      Ressources

    • Définission

      Certains fonctionnalités d'eZ Publish dépendent d'un ou de plusieurs scripts qui tournent en taches de fond.

      Trois blocs de scripts sont importants lors de la mise en production

      • le bloc "frequent" à mettre toutes les 15 minutes environ
        • notifications
        • workflow
      • le bloc "infrequent" à mettre toutes les semaines
        • vérification les liens du site
        • nettoyage les paniers du module shop
      • le global à mettre toutes les nuits
        • dé publication des contenus quand une date est atteinte
        • importation des flux RSS configurés
        • indexation des contenus pour le moteur de recherche
        • mise en état "caché" contenus quand une date est atteinte
        • nettoyage des cache-block qui ont le paramètre "subtree_expiry"
        • suppression les brouillons qui ne sont plus utilisés

      Configuration

      Voci un exemple de contrab qui décrit la liste ci-dessus :

      # The path to the eZ Publish directory.
      EZPUBLISH=/var/www/ezpublish
       
      # Location of the PHP command line interface binary.
      PHPCLI=/usr/local/bin/php
       
      # Le cronjob global 6:35 tous les jours
      35 6 * * * cd $EZPUBLISH && $PHPCLI runcronjobs.php -q -s example 2>&1
       
      # Le cronjob "infrequent" 5:20 tous les lundi
      20 5 * * 1 cd $EZPUBLISH && $PHPCLI runcronjobs.php infrequent -q -s example 2>&1
       
      # Le cronjob "frequent" toutes les 15 minutes
      0,15,30,45 * * * * cd $EZPUBLISH && $PHPCLI runcronjobs.php frequent -q -s example 2>&1
       

      Ressources

    • Description

      Par défaut eZ Publish nous permet d'avoir des URLs à l'image de l'arborescence des contenus.

      Cependant, souvent, il reste des améliorations possibles concernant le début de celle-ci.
      Un sans configuration, les urls d'articles dans un blog pour être du style :

      http://monblog.com/index.php/monblog/article1
      http://monblog.com/index.php/monblog/article2

      Configuration

      Activer les règles de réécritures

      Elles vont permettre de supprimer le "index.php"

      RewriteEngine On
      RewriteRule content/treemenu/? /index_treemenu.php [L]
      Rewriterule ^/var/storage/.* - [L]
      Rewriterule ^/var/[^/]+/storage/.* - [L]
      RewriteRule ^/var/cache/texttoimage/.* - [L]
      #public ajouter pour le ezoe qui necessite cette modif
           RewriteRule ^/var/[^/]+/cache/(texttoimage|public)/.* - [L]
      Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
      Rewriterule ^/share/icons/.* - [L]
      Rewriterule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
      Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
      RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
      RewriteRule ^/favicon\.ico - [L]
      RewriteRule ^/robots\.txt - [L]
        # Uncomment the following lines when using popup style debug.
        # RewriteRule ^/var/cache/debug\.html.* - [L]
        # RewriteRule ^/var/[^/]+/cache/debug\.html.* - [L]
      RewriteRule .* /index.php
       

      Supprimer le SiteAccess par défaut

      Une configuration est prévue dans les settings pour que les urls n'incluent pas le nom du SiteAccess (si on est en mode URI dans le choix des SiteAccess)

      Dans le fichier site.ini.append.php

      [SiteAccessSettings]
      RemoveSiteAccessIfDefaultAccess=enabled

      Mode Virtualhost

      Ce mode est configurable dans le même bloc de configuration que le précédent, il va permettre de définir directement que nous sommes ou non en mode "VirtualHost" c'est à dire que l'instance n'est pas dans un sous répertoire.

      [SiteAccessSettings]
      ForceVirtualHost=true

      Ressources

    • eZ Publish : var/log/error.log

      Avant la mise en production il est recommandé de vérifier que l'error.log eZ Publish ne génère pas de ligne pendant l'utilisation du site.
      SI tel est le cas, il faut corriger les erreurs

      PHP :error_log

      Ce n'est pas spécifique à eZ Publish mais en environnement de production, il faut désactiver l'affichage des erreurs et préférer garder ces éventuels erreurs dans un fichier de log, on peut configurer le serveur ainsi grâce au php.ini

      log_errors = On
      error_log = /hwxx/daxx/uwnetid/phperrors.log
    • Définition

      Les caches d'opcode se chargent de garder en mémoire l'opcode généré par PHP. L'opcode est en fait une sorte d'intermédiaire entre le script et l'exécutable. Avec un cacheur d'opcode on économise la coûteuse transformation du script en opcode.
      Ce type de cache nécessite donc une modification interne de PHP mais il permet une accélération notable des temps d'exécution des scripts.

      Installation et configuration

      La méthode d'installation et configuration se trouve dans un article d'ez.no : ici

    • Définit ce que va faire eZ Publish lorsque l'édition d'un objet qui a une version de brouillons plus récents que la version actuelle.
      Utilisez "showversions" pour sélectionner la version à éditer, ou "usecurrent" pour toujours modifier la version actuelle.

      Dans le site.ini.append.php

      [ContentSettings]
      EditDirtyObjectAction=usecurrent
    • In eZ Publish 4.1, a new file "config.php" is present in the archive under the name config.php-RECOMMENDED

      In production environment, there is two lines very interesting to improve performances.

      define( 'EZP_USE_BUNDLED_COMPONENTS', true );

      Enable eZ Publish do not check on each time if eZ Components is available.

      define( 'EZP_INI_FILEMTIME_CHECK', false );

      This new parameters define if eZINI must check if the .ini files have changed.

      Ce nouveau paramètre détermine si eZINI doit vérifier si les paramètres ont été mis à jour dans les fichiers *. ini *. Si cette case est désactivée eZ Publish va toujours utilisé le cache des valeurs, en réduisant le montant des appels aux fichiers et donc augmentater en performances.
      Vous pouvez aussi la mettre le nom d'un fichier ini, pour définir de toujours vérifier celui-ci mais pas le reste.