Les paramètres par défaut de l'application sont définis dans le fichier ezstaticexport.ini situé dans extension/ezstaticexport/settings. L'idéal serait de ne pas modifier le fichier par défaut afin de permettre une migration plus facile vers une éventuelle nouvelle version. Cela est possible en surchargeant ce fichier globalement, dans settings/override/ezstaticexport.ini.append.php. Le fichier n'existant pas, il sera nécessaire de le créer.
Ces paramètres sont généraux à tous les exports.
Définit le le hostname utilisé pour capturer les pages du site. Doit etre connu du serveur web (DNS ou fichiers hosts), accessible (attention aux restrictions d'IP, mot de passe, routage...). Utiliser lynx depuis le serveur pour vérifier l'accessibilité.
Dossier dans lequel seront placés les fichiers exportés. L'utilisateur du serveur web doit avoir accès en écriture à ce dossier.
Ce paramètre permet d'utiliser le module d'export statique lorsque le site est accessible via un sous dossier, par exemple localhost/dev/voyazine (eZ est situé dans le dossier voyazine). Dans ce cas précis, il faudra indiquer dev/voyazine/index.php/ comme FolderPrefix. Si les règles de rewrite sont correctement configurées, le index.php ne sera pas nécessaire. Si le site a son propre nom de domaine avec rewrite, ce paramètre sera vide.
Ce bloc de configuration permet de définir les cibles d'export. La directive TargetServer contenue dans ce bloc est un tableau définissant les cibles. Il est recommandé de surcharger cette directive pour chaque installation afin de ne pas conserver les cibles fournies par défaut. Le DefaultTargetServer _ défini plus bas _ ne fait pas partie de cette liste et sera toujours défini.
Ce bloc définit les paramètres de la cible d'exporation par défaut.
Nom de la cible. Indicatif, n'est pas utilisé au niveau systeme.
URL de la cible. Indicatif, n'est pas utilisé au niveau systeme.
Tableau définissant les cibles de publication de l'export statique de la cible. Chaque entrée de ce tableau définit une cible. Les paramètres de la cible sont indiqués via une syntaxe de type URI. Voir la partie concernant la publication pour le détail de cette configuration.
Pour chaque entrée dans [TargetServerList].TargetServer, un bloc TargetServer- doit être créé afin de définir la cible. Le bloc doit être nommé TargetServer-cible, cible étant le nom d'une des entrées dans [TargetServerList].TargetServer.
Si ce bloc est configuré:
[TargetServerList] TargetServer[] TargetServer[]=cible1 TargetServer[]=cible2
deux blocs devront être créés:
[TargetServer-cible1] [TargetServer-cible2]
Chacun de ces blocs contiendra 3 directives: TargetServerName, TargetServerName et PublishingTargets.
Nom de la cible. Indicatif, n'est pas utilisé au niveau systeme.
URL de la cible. Indicatif, n'est pas utilisé au niveau systeme.
Tableau définissant les cibles de publication de l'export statique de la cible. Chaque entrée de ce tableau définit une cible. Les paramètres de la cible sont indiqués via une syntaxe de type URI. Voir la partie concernant la publication pour le détail de cette configuration.
Les cibles de publication sont définies via la directive PublishingTargets des cibles d'export. Chaque entrée définit une cible de publication, cette cible étant paramétrée via une syntaxe de type URI:
protocol://login@host:/path/to/folder/;option1,option2,optionN
Le seul protocole actuellement disponible est rsync.
Login à utiliser pour la connexion au serveur distant.
Nom de l'hote de publication
Chemin ou seront placés les fichiers de l'export statique.
Une liste d'options à transmettre au protocole de publication, séparées par des virgules. Ces options sont définies par protocole. Voir la documentation du driver rsync ci-dessous pour les options disponibles et la définition de nouvelles options.
rsync est à l'heure actuelle le seul protocole de transfert supporté par l'extension.
Il est configuré via le bloc [DriverSettings-rsync].
Définit le chemin d'accès au binaire rsync. Il est bien sur impératif que l'utilisateur exécutant le cronjob ait accès en exécution à rsync.
Définit les options passées à rsync. Chaque entrée est indexée par le nom de l'option tel qu'utilisable dans le fichier INI, et reçoit comme valeur le paramètre ligne de commande (nommage paramètre long, avec --).
Par exemple:
DriverArgs[simulation]=dry-run
Définit une option nommée simulation, qui ajoutera --dry-run à la ligne de commande.
Les options définies par défaut devraient être suffisantes, mais l'ajout de nouvelles options ne pose aucun probleme.
La seule manière avec les options prédéfinies d'utiliser rscync en publication est actuellement de passer par une clé SSH publique/privée, et donc un transfert rsync via SSH.
La publication a été testée via cette méthode et fonctionne correctement.
Rsync est également utisable pour une publication locale au serveur. Il suffit d'utiliser une syntaxe de ce type:
rsync://localhost/path/to/folder/;recursive,update,compress
Un évènement de workflow personnalisé a été développé pour permettre le blocage de la publication de contenu pendant un export statique. Afin d'etre actif, celui-ci doit etre associé à un workflow, et ce workflow associé au trigger pre/publish (exactement comme un évènement de type approve).
Une configuration des cronjobs est nécessaire au bon fonctionnement de l'application.
Ce script gère les exports planifiés et immédiats et leur publication.
Ce script est utilisé pour interrompre un éventuel export immédiat dans le cas ou un export planifié (ayant donc une priorité supérieure) doit s'exécuter.
Ces deux scripts sont automatiquement utilisables une fois l'extension activée. Deux groupes de workflow personnalisés sont créés: staticexport, et prestaticexport. Toute exécution de cronjob doit automatiquement exécuter ces deux groupes, d'abord prestaticexport, suivi de staticexport. Le premier prend soin d'interrompre un éventuel export immédiat pour laisser la priorité à un export planifié.
Avec une syntaxe similaire à celle de ezpublish.cron, la configuration cron est similaire à ceci:
0,15,30,45 * * * * cd $EZPUBLISHROOT && $PHP runcronjobs.php prestaticexport -q 2>&1 && $PHP runcronjobs.php staticexport -q 2>&1
Cela assurera que prestaticexport est toujours exécuté avant staticexport. Les deux scripts ne peuvent pas faire partie du meme process du au token d'execution des crons qui empeche le chevauchement de deux crons.
Lors de l'ajout d'une nouvelle cible, il est nécessaire d'initialiser celle-ci. Les éléments de design, hors templates, nécessaires au fonctionnement du site (images, feuilles de style, javascript) doivent pour cela etre copiés depuis leur emplacement initial vers le dossier current de la cible.
Dans le cas d'une cible nommée "cible1", le dossier suivant doit etre créé:
var/staticexport/cible1/current
Dans ce dossier doivent etre copiés tous les sous éléments de l'intégralité des design utilisés par le site, hors templates/ et override/templates.
Nous trouverons donc dans ce dossier des chemins semblables à:
var/staticexport/cible1/current/design/mondesign/images/monimage.png