Pour répondre à des besoins d'installation et de mise à jour de Dynacase sur diverses plateforme, de manière simple via une interface WEB, DYNACASE-CONTROL est né.
Dynacase-control rend l'installation et la mise à jour de Dynacase indépendant de la distribution Linux présente sur le serveur.
Dynacase-control en quelques lignes :
Dynacase-control permet donc de réaliser simplement une première installation de Dynacase.
Les informations fournies ci-dessous, le sont à titre indicatif et peuvent varier en fonction de la distribution linux cible (nom des extensions par exemple).
Ces informations sont fournies pour la version stable de dynacase.
Pour les composants requis (apache, postgresql, php, …) la version validée est la version avec laquelle les tests de dynacase sont joués.
La version utilisable est éventuellement indiquée : elle est sensée fonctionner avec dynacase. Toutefois, l'ensemble des fonctionnalités dynacase n'ont pas été validé avec cette version.
Les informations relatives aux composants sont exhaustives (utilisée par certain modules) et nécessaires pour une installation standard faite par défaut.
| stable 3.0 | 3.1 | |
|---|---|---|
| PHP | > 3.0.12 version 5.3 >= 3.0.4 version 5.3 (fonctionne avec une version 5.2 si les composants extui ne sont pas utilisés) < 3.0.4 : version 5.2 | 5.3 |
| PostgreSQL | 8.3 ou 8.41) | 8.4 |
| ExtJS | 3.1 | 3.2 |
Pour voir le détail des paquets aptitude à installer sous Debian, reportez-vous à la page Résolution des principales dépendances.
La version Dynacase 3.0 est fonctionnelle avec les navigateurs suivants :
version validée : 2.2
Les modules notés (core) sont normalement inclus de manière statique dans PHP.
AllowOverride All” positionné au niveau de la configuration Apache.
max_execution_time” de votre installation PHP est trop bas (inférieur à 5 minutes), il sera peut être nécessaire d'augmenter celui-ci dans votre `php.ini'.
Se connecter 'root'. Déplacer vous dans un répertoire accessible via apache (dans votre DocumentRoot décrit dans vos fichiers de configuration apache - par exemple). Dans ce répertoire sera installé Dynacase-control.
# cd /var/www/html
Télécharger l'installer ici http://eec.anakeen.com/public/control/dynacase-control-current.tar.gz :
# wget http://eec.anakeen.com/public/control/dynacase-control-current.tar.gz
Extraire l'archive :
# tar xfz dynacase-control-current.tar.gz
Modifier le propriétaire de l'arborescence crée :
# chown -R apache: dynacase-control-x.y-z/
Remarque : Le user apache dépend de votre distribution (www-data sous Debian)
Créer un raccourci
# ln -s dynacase-control-x.y-z dynacase-control
Se connecter à l'URL Dynacase Control (dépend de son dossier d'installation et de la configuration apache) :
Installer `php-dom' et/ou `php-xml'.
Installer `php-zip'.
Installer `php-json'.
Voir Message ”PHP function 'json_encode' not found.”.
Un contexte regroupe tout ce qui est nécessaire au fonctionnement de Dynacase-platform : bases, modules Dynacase (logiciel), paramètres de configuration, etc…
Un même serveur peut fournir plusieurs contextes Dynacase-platform, chacun des contextes étant totalement autonome en terme de logiciel et de source, vous pouvez donc avoir 2 versions de Dynacase-platform installées simultanément sur votre serveur.
Les différents éléments nécessaires à l'initialisation d'un contexte sont :
Ces éléments sont à préparer par un administrateur système ayant les accès super-utilisateur (root) sur le serveur.
C'est le répertoire dans lequel sera installé l'instance de Dynacase-platform.
Ce répertoire doit être sous le ”DocumentRoot” de votre serveur Apache, et accessible en lecture/écriture par Apache.
Vous pouvez rentrer un chemin absolu ou un chemin relatif. Dans le cas d'un chemin relatif, celui-ci sera relatif au répertoire dans lequel vous aurez installé Dynacase-control.
Si le répertoire renseigné n'existe pas, Dynacase-control essayera de le créer. Pour cela, il faut que l'utilisateur Apache ait le droit d'écriture dans le répertoire parent du répertoire que vous voulez créer.
Si le répertoire existe déjà, Dynacase-control vérifiera qu'il ne contient pas d'installation existante. Dans le cas contraire, une erreur sera retourné et vous devrez sélectionner un autre répertoire.
La base de donnée dédiée à votre contexte Dynacase doit être propriété d'un rôle (au sens postgresql) SUPERUSER sur la base du contexte Dynacase.
Exemple :
[root@server ~]# su postgres [postgres@server ~]# psql postgres=# CREATE ROLE dynacaseowner WITH LOGIN ENCRYPTED PASSWORD 'password' SUPERUSER; postgres=# CREATE DATABASE dynacase OWNER dynacaseowner;
Note:
La configuration de Dynacase est par la suite basée sur le service (au sens postgresql). Exemple :
[root@server ~]# more $PGSYSCONFDIR/pg_service.conf [dynacase] host=localhost port=5432 user=dynacaseowner password=password dbname=dynacase
Le répertoire $PGSYSCONFDIR dans lequel est stocké le fichier pg_service.conf est dépendant de votre distribution et sa valeur peut être trouvée à l'aide de la commande pg_config. Exemple :
[root@server ~]# pg_config --sysconfdir /etc/sysconfig/pgsql/pg_service.conf
# pg_config --sysconfdir /etc/postgresql-common
Pour vérifier que les paramètres associés au service sont correct on pourra essayer de se connecter à la base avec la commande `psql' :
[root@server ~]# PGSERVICE=dynacase psql dynacase=#
Pour créer un contexte, il faut cliquer sur le lien “Create Context” et renseigner les champs indiqués.
Pour installer Dynacase-platform, il faut juste cliquer sur le bouton `Install Selection'. En effet tous les composants de base de Dynacase-platform sont déjà automatiquement sélectionnés. Ceci entrainera l'installation des modules de base de Dynacase-platform et toutes leur dépendances.
Certains modules (ex : Dynacase-platform) nécessite la saisie de paramètres obligatoires qui seront demandés avant l'installation :
Pour freedom-toolbox, il faut donc renseigner les paramètres suivants :
Avant l'installation de chaque module, Dynacase-control vérifie que tout les pré-requis sont installés sur le système.
Un écran apparait indiquant les contrôles effectués. Si un pré-requis est absent, l'installation s'interromp et peut-être ensuite relancée (bouton “retry”) une fois le problème résolu (en général installation d'un paquet) :
Le tableau ci-dessous indique comment résoudre les dépendances pour une installation de base sous Debian Lenny.
| Message | Commandes pour résoudre les dépendances |
|---|---|
| Checking if the PHP function 'pg_connect' exists You might need to install a php-pg package from your distribution in order to have Postgresql support in PHP. | aptitude install php5-pgsql /etc/init.d/apache2 reload |
| Checking if the command 'zip' is in the PATH | aptitude install zip |
| Checking if the command 'dot' is in the PATH | aptitude install graphviz |
| Checking if the command 'dot' is in the PATH | aptitude install imagemagick |
| Checking if the command 'html2ps' is in the PATH | aptitude install html2ps |
| Checking if the command 'php' is in the PATH | aptitude install php5-cli |
| Warning : Checking if the command 'ldapdelete' is in the PATH | |
| Checking if the command 'msgcat' is in the PATH | aptitude install gettext |
| Checking if the PHP function 'imagegd' exists You might need to install a php-gd package from your distribution in order to have GD support in PHP. | aptitude install php5-gd/etc/init.d/apache2 reload |
| Checking if the PHP function 'ldap_connect' exists You might need to install a php-ldap package from your distribution in order to have LDAP support in PHP. | aptitude install php5-ldap /etc/init.d/apache2 reload |
| Warning : Checking if the PHP function 'ncurses_init' exists You might need to install a php-ncurses package from your distribution in order to have ncurses support in PHP. | Rien à faire sous Debian |
| Checking if the PHP function 'pspell_new' exists You might need to install a php-pspell package from your distribution in order to have spelling support in PHP. | aptitude install php5-pspell /etc/init.d/apache2 reload |
| Checking if the class 'Crypt_CHAP' is available in include file 'Crypt/CHAP.php' You might need to run : pear install Crypt_CHAP | aptitude install php-pear pear install Crypt_CHAP /etc/init.d/apache2 reload |
| Checking if the class 'Net_SMTP' is available in include file 'Net/SMTP.php' You might need to run : pear install Net_SMTP | pear install Net_SMTP /etc/init.d/apache2 reload |
| Checking if the class 'Mail_mime' is available in include file 'Mail/mime.php' You might need to run : pear install Mail_Mime | pear install Mail_Mime /etc/init.d/apache2 reload |
| Checking if the Apache module 'mod_expires' is loaded You might need to install and/or activate the Apache mod_expires module. | a2enmod expires/etc/init.d/apache2 restart |
| Checking if the class 'XSLTProcessor' is available in include file '' You might need to install a php-xsl package form your distribution in order to have XSLT support in PHP. | aptitude install php5-xsl /etc/init.d/apache2 reload |
| Checking if the class 'XML_Parser' is available in include file 'XML/Parser.php' You might need to install a php-pear-XML_Parser package from your distribution, or run 'pear install XML_Parser', in roder to have XML_Parser support in PHP. | pear install XML_Parser/etc/init.d/apache2 reload |
| Checking if the class 'XML_RSS' is available in include file 'XML/RSS.php' You might need to install a php-pear-XML_RSS package form your distribution, or run 'pear install XML_RSS', in order to get RSS parsing support in PHP. | aptitude install php-xml-rss/etc/init.d/apache2 reload |
| Checking if the PHP function 'imap_open' exists You might need to install a php-imap package from your distribution in order to get IMAP support in PHP. | aptitude install php5-imap/etc/init.d/apache2 reload |
En résumé et toujours sous Debian Lenny, il faut donc exécuter ces commandes :
# aptitude install zip unzip graphviz imagemagick html2ps php5-cli # aptitude install php-pear gettext php5-pgsql php5-gd php5-xsl # aptitude install php5-ldap php5-pspell # pear install Crypt_CHAP # aptitude install php-net-smtp php-mail-mime # a2enmod expires # /etc/init.d/apache2 restart
apt-get install zip unzip dot graphviz html2ps imagemagick ghostscript gettext php5-gd php5-ldap php5-pspell php-pear php5-xsl php-xml php-xml-rss php5-imap php5-mcrypt /etc/init.d/apache2 restart pear install Crypt_CHAP pear install Net_SMTP pear install Mail_Mime a2enmod expires /etc/init.d/apache2 force-reload ## required by module freedom-dav a2enmod expires /etc/init.d/apache2 force-reload
apt-get install postgresql apache2 php5 zip unzip graphviz html2ps imagemagick ghostscript gettext php5-gd php5-ldap php5-pspell php-pear php5-xsl php-xml-rss php5-imap php5-mcrypt php5-pgsql recode pear install Crypt_CHAP Net_SMTP Mail_Mime XML_Parser a2enmod expires rewrite service apache2 force-reload
Votre installation de Dynacase-platform de base est alors pleinement opérationnelle.
Dynacase-platform sera ensuite disponible à l'adresse indiquée dans votre contexte. Exemple :
Seul les dépôts stables de la version 3.0 sont configurés par défaut.
Si vous avez un compte entreprise EEC, vous pouvez supprimer les dépôts fournis par défaut et ajouter les dépôts correspondants à votre compte EEC.
Pour ajouter un dépot, il suffit de se rendre dans le setup de dynacase-control. Dans ce setup, vous pouvez paramétrer le mode d'accès à internet (utilisation d'un proxy avec ou sans authentification), ajouter autant de dépots que nécessaires : Control > Setup > Repositories
Pour la recherche des mises à jour de dynacase-control, vous pouvez renseigner votre dépôt EEC avec les paramètres “wiff-update-host” et “wiff-update-path” : Control > Setup > Parameters
La mise à jour automatique est en cours de réalisation. Une très prochaine version de Dynacase-control intègrera cette fonctionnalité.
Lorsque Dynacase-control détecte qu'une nouvelle version de l'installeur est disponible, une demande de mise-à-jour apparait :
Cliquer sur le bouton [Yes] pour télécharger et mettre à jour l'installeur, et cliquer sur [No] pour ne pas effectuer la mise-à-jour. La mise-à-jour sera proposée de nouveau au prochain chargement de l'installeur.
Pour les mises à jour en mode console, se reporter à la documentation du CLI DYNACASE-CONTROL.
Lors de la consultation d'un contexte Dynacase, Dynacase-control présente les modules installés et ceux qui disposent d'une version supérieure sur le repository sont précédés de l'icône
:
Dans l'exemple ci-dessus, le modules `dynacase-platform' a une mises-à-jour disponible.
Pour installer les mises-à-jour, il suffit de cocher les modules que vous souhaitez mettre à jour (case à cocher au début de la ligne), et valider ensuite en cliquant sur le bouton [Upgrade Selection].
En cliquant sur la case de la barre de titre, toute les mises à jour faisables seront sélectionnées (comme dans l'exemple).
PHP 5.x(cli) et extension pgsql
`dynacase-te' est écrit en PHP et nécessite donc l'interpréteur PHP (php-cli) et l'extension pgsql.
Java Runtime Environment 6
`dynacase-te' nécessite un environnement Java 6 pour utiliser l'API Java d'OpenOffice en mode serveur (http://openjdk.java.net/install/, http://www.oracle.com/technetwork/java/javase/downloads/index.html).
OpenOffice.org 3.2.1
`dynacase-te' est préconfiguré pour fonctionner avec OpenOffice.org 3.2.1 tels que livré par les paquets du site officiel OpenOffice.org (installé par défaut dans `/opt/openoffice.org3').
tika-app-0.9.jar
`dynacase-te' utilise l'outils `tika-app', du projet Apache Tika, pour l'extraction de texte (c.f. tika-app).
Xvfb
`dynacase-te' nécessite le serveur X virtual-frame-buffer (Xvfb) pour exécuter OpenOffice.org.
SimpleXML
`dynacase-te' nécessite SimpleXML (installé par défaut avec php5-cli sur Debian Squeeze).
a2ps et ps2pdf14
`dynacase-te' utilise l'outils `a2ps' (fournit par a2ps) et `ps2pdf14' (fournit avec Ghostscript), pour les conversions texte → PDF.
recode
`dynacase-te utilise recode (fournit par GNU recode).
perl
`dynacase-te utilise perl (fournit par Perl).
convert
`dynacase-te utilise l'outil de conversion d'image convert (fournit par ImageMagick).
zip/unzip
`dynacase-te utilise zip et unzip (fournit par Info-ZIP).
`dynacase-te' est disponible sous forme d'archive à installer sur un serveur dédié (ou non) qui assurera la fonction de serveur de transformation pour un serveur Dynacase.
# wget http://eec.anakeen.com/public/tengine/dynacase-te-current.tar.gz # tar zxvf dynacase-te-current.tar.gz
L'archive se décompresse et crée un sous-répertoire `dynacase-te-{VERSION}-{RELEASE}' avec le numéro de {VERSION} et de {RELEASE} de dynacase-te.
Exemple d'install dans `/opt/dynacase-te' :
# TE_HOME=/opt/dynacase-te # mv dynacase-te-1.0.0-1 $TE_HOME
Le répertoire `/opt/dynacase-te' sera par la suite référencé dans la documentation par `$TE_HOME'.
# su postgres -c psql postgres=# CREATE DATABASE "te" WITH OWNER "dynacaseowner";
# vi $PGSYSCONFDIR/pg_service.conf ... [te] host=127.0.0.1 port=5432 user=dynacaseowner password=password dbname=te
Note: La valeur de `$PGSYSCONFDIR est dépendante de votre distribution, et peut être trouvée avec la commande : `pg_config –sysconfdir'.
# PGSERVICE=te psql te=# \q
L'archive `tika-app-0.9.jar' peut être obtenue en compilant les sources de Apache Tika 0.9, ou bien sous forme pré-compilée sur notre dépôt `third-party' : http://ftp.dynacase.org/third-party/tika-app-0.9.jar.
La compilation de `apache-tika-0.9-src.zip' avec maven (`mvn') peut nécessiter l'augmentation des limites mémoire de la JVM :
$ cd apache-tika-0.9 $ MAVEN_OPTS=-Xmx2048m mvn -e clean install
L'archive JAR de `tika-app' doit ensuite être déposée dans le sous-répertoire `$TE_HOME/lib/engines' :
# cp tika-app/target/tika-app-0.9.jar $TE_HOME/lib/engines/
Les paramètres du serveur TE sont définis dans le fichier `$TE_HOME/etc/te.conf'.
Lors de la première utilisation il vous faudra copier le fichier d'exemple `te.conf.sample' dans `te.conf :
# cp $TE_HOME/etc/te.conf.sample $TE_HOME/etc/te.conf
Les paramètres à ajuster en fonction de votre environnement sont :
REQUEST_DIRECTORY=/var/tmp | Répertoire temporaire de travail du serveur request et des scripts engines. |
RENDERING_DIRECTORY=/var/tmp | Répertoire temporaire de travail du serveur rendering. |
LISTEN_ADDRESS=0.0.0.0 | Adresse d'écoute du serveur TE. |
PORT=51968 | Port d'écoute du serveur TE. |
TE_PG_SERVICE=te | Contient le le nom du service pour l'accès à la base `te'. |
URL_CALLBACK_LOGIN=te | Login dans le cas ou le serveur Dynacase est derrière une authentification HTTP Basic non gérée par dynacase (frontal/reverse proxy HTTP avec authentification HTTP Basic par exemple). |
URL_CALLBACK_PASSWORD=secret | Le mot de passe associé au login URL_CALLBACK_LOGIN pour l'authentification HTTP Basic. |
root TE_SERVER_USER=root | L'utilisateur sous lequel lancer les serveurs de TE (root par défaut). |
Note : Il est recommandé de ne pas lancer les serveurs de TE sous le compte root mais d'utiliser plutôt un compte utilisateur dédié.
TE_OOO_BASE_DIR=/opt/openoffice.org3 | Le chemin d'accès au répertoire racine d'installation de OpenOffice.org. |
TE_OOO_SERVER_PYTHON=${TE_OOO_BASE_DIR}/program/python | Le chemin d'accès à l'interpréteur Python de OpenOffice.org. |
TE_OOO_SERVER_SOFFICE=${TE_OOO_BASE_DIR}/program/soffice | Le chemin d'accès au programme `soffice' de OpenOffice.org. |
TE_OOO_SERVER_UNOPKG=${TE_OOO_BASE_DIR}/program/unopkg | Le chemin d'accès au programme `unopkg' de OpenOffice.org. |
TE_OOO_CLASSPATH=“${TE_OOO_BASE_DIR}/basis-link/program/classes/unoil.jar:${TE_OOO_BASE_DIR}/basis-link/ure-link/share/java/juh.jar:${TE_OOO_BASE_DIR}/basis-link/ure-link/share/java/jurt.jar:${TE_OOO_BASE_DIR}/basis-link/ure-link/share/java/ridl.jar” | Le classpath Java pour accéder aux librairies Java d'OpenOffice. Les classes nécessaires sont contenus dans `unoil.jar', `juh.jar', `jurt.jar' et `ridl.jar'. |
TE_OOO_JVM_OPTS=”” | Variable pour positionner des paramètres spécifiques pour la JVM si besoin. |
TE_OOO_SERVER_HOST=127.0.0.1 | L'adresse IP d'écoute du serveur TE. |
TE_OOO_SERVER_PORT=8123 | Le port d'écoute du serveur TE. |
TIKA_APP_JAR=“${TE_HOME}/lib/engines/tika-app-0.9.jar” | Le chemin d'accès à l'archive `tika-app-0.9.jar'. |
Une fois les éléments installés, il vous faut initialiser la base de données TE.
# $TE_HOME/bin/ted init * Initializing ted service: OK
L'initialisation crée les tables `engine' et `task' dans la base TE.
TE démarre trois services qui sont :
# $TE_HOME/bin/ted start Starting OOO server... 27023 Starting te_request_server... 27041 Starting te_rendering_server... 27043 * Starting ted service: OK
Le script `ted s'occupe de lancer les trois composants, et affiche leur PID.
# $TE_HOME/bin/ted status Request server running (27041) Rendering server running (27043) OOO server running (27023)
Le script `ted' affiche pour chacun des trois composants s'ils tournent ou non, et leur PID.
Le script `ted' permet de lancer une vérification des moteurs de transformations. Pour cela, il faut démarrer les composants (voir `ted start' ci-dessus), et ensuite exécuter la commande suivante :
# $TE_HOME/bin/ted check * Checking conversion from ODT to PDF... Ok: '/tmp/test.odtn27155.pdf' (7957 bytes) * Checking conversion from ODT to PDF/A-1... Ok: '/tmp/test.odtQ27176.pdfa' (14430 bytes) * Checking conversion from ODT to TXT... Ok: '/tmp/test.odtu27199.txt' (22 bytes) * Checking conversion from ODT to MS-Word... Ok: '/tmp/test.odtSy4BuE.doc' (9216 bytes) * Checking conversion from HTML to ODT... Ok: '/tmp/test.htmlF27220.odt' (9067 bytes) * Checking conversion from HTML to PDF... Ok: '/tmp/test.htmlj27253.pdf' (8066 bytes) * Checking conversion from HTML to PDF/A-1... Ok: '/tmp/test.htmlW27300.pdfa' (14764 bytes) * Checking conversion from HTML to TXT... Ok: '/tmp/test.htmll27348.txt' (39 bytes) * Checking conversion from PDF to TXT... Ok: '/tmp/test.pdfq27356.txt' (22 bytes) * Checking conversion from TXT to PDF... Ok: '/tmp/test.txtK27363.pdf' (2559 bytes)
hostname') et le nom de domaine (tel que retourné par la commande `dnsdomainname') sont corrects, et que le fichier `/etc/hosts' est correctement renseigné.
# $TE_HOME/bin/ted stop Stopping te_request_server... 27041 Stopping te_rendrering_server... 27043 Stopping OOO server... 27023 * Stopping ted service: OK
L'option “cleantmpfiles” permet de supprimer les fichiers temporaires nommés `tes-*' et `ter-*', présents dans les répertoire $REQUEST_DIRECTORY et $RENDERING_DIRECTORY qui ont plus de 7 jours (valeur par défault).
# $TE_HOME/bin/ted cleantmpfiles
Si vous voulez spécifier votre propre durée, vous pouvez ajouter le nombre de jours après l'option “cleantmpfiles”.
Exemple pour supprimer les fichiers temporaires de plus de 15 jours :
# $TE_HOME/bin/ted cleantmpfiles 15
Pour effectuer le nettoyage régulièrement, vous pouvez exécuter cette commande à partir d'une crontab.
Pour que TE démarre, et s'arrête, lors du démarrage, et l'arrêt, du système, il faut enregistrer le script `ted' dans le système rc/init de votre système.
Les distribution de type RedHat utilisent la commande `chkconfig' pour administrer les scripts rc/init.
Faire un lien symbolique de `$TE_HOME/bin/ted' dans le répertoire `/etc/rc.d/init.d/' :
# ln -sf $TE_HOME/bin/ted /etc/rc.d/init.d/ted
Enregistrer `ted' :
# chkconfig --add ted # chkconfig ted on # chkconfig --list ted ted 0:arrêt 1:arrêt 2:marche 3:marche 4:marche 5:marche 6:arrêt
Les distributions de type Debian utilisent la commande `update-rc.d' pour administrer les scripts rc/init.
Faire un lien symbolique de `$TE_HOME/bin/ted' dans le répertoire `/etc/init.d/' :
# ln -sf $TE_HOME/bin/ted /etc/init.d/ted
Enregistrer `ted' :
# # update-rc.d ted defaults Adding system startup for /etc/init.d/ted ... /etc/rc0.d/K20ted -> ../init.d/ted /etc/rc1.d/K20ted -> ../init.d/ted /etc/rc6.d/K20ted -> ../init.d/ted /etc/rc2.d/S20ted -> ../init.d/ted /etc/rc3.d/S20ted -> ../init.d/ted /etc/rc4.d/S20ted -> ../init.d/ted /etc/rc5.d/S20ted -> ../init.d/ted
Rendez vous ensuite à la page Configuration de Dynacase pour utiliser TE pour configurer Dynacase
La partie cliente de dynacase-te est à présent intégré dans Dynacase-platform-3.X
dynacase-te' et `dynacase-te-client' à l'aide du gestionnaire de paquet.dynacase-te-current.tar.gz' comme indiqué ci-dessus.$TE_HOME/etc/te.conf à partir du fichier `$TE_HOME/etc/te.conf.sample', et ajuster les paramètres en fonction de votre installation précédente.engine' :# PGSERVICE=te psql te=# UPDATE engine SET command = regexp_replace(command, '^/usr/share/(php|pear)/TE/engines/', '@TE_HOME@/lib/engines/');
ted check'.
Le paramètre `TE_OOO_SERVER_USER' est renommé en `TE_SERVER_USER' et sert à lancer tous les serveurs de TE sous cette identité.
Vérifier votre configuration `te.conf' pour rétablir ce paramètre si vous utilisiez `TE_OOO_SERVER_SERVER'.
Cette version introduit l'utilisation par défaut de Beagle pour l'extraction du texte des documents.
Vérifier votre configuration `te.conf' avec les paramètres `BEAGLE_*', et ré-initialiser la table `engine' pour incorporer `beagle2txt' comme moteur de transformation pour l'extraction de texte :
engine' :# PGSERVICE=te psql te=# DELETE FROM engine;
# PGSERVICE=te psql te=# \i $TE_HOME/lib/engines/engine_init.sql
Correction bug #254 : la librairie `Lib.TEUtil.php' a été renommée en `Lib.TE.php' pour éviter les conflits avec la librairie `Lib.TEUtil.php' livrée par l'ancien paquet `freedom-te-client'.
Cette version introduit trois nouveaux moteurs de transformation qui sont :
Leur rôle est de prendre en entrée une archive ZIP contenant des fichiers texte compréhensibles par OpenOffice.org (.odt, .doc, etc. ; sont donc exclus les .xls, .ods, .ppt, etc.), et de produire en sortie un fichier au format ODT, PFD ou PDF/A résultat de la concaténation (merge) des fichiers contenus dans l'archive.
Pour la mise à jour de la liste des moteurs :
engine' :# PGSERVICE=te psql te=# DELETE FROM engine;
# PGSERVICE=te psql te=# \i $TE_HOME/lib/engines/engine_init.sql
Une petit mise-à-jour de TE afin de contourner le dysfonctionnement de `beagle2txt' pour l'extraction de texte depuis les fichiers MS/Word sur les systèmes x86-64.
La commande `beagle-extract-content' ne fonctionnant pas correctement sur ces systèmes x86-64, nous avons donc ajouté un moteur `beagledoc2txt' dédié pour l'extraction texte des .doc (en utilisant `beagle-doc-extractor').
Si vous faites une mise-à-jour de TE, il faudra mettre à jour manuellement la base TE pour utiliser ce nouveau moteur :
# PGSERVICE=te psql te=# UPDATE engine SET command = '@TE_HOME@/lib/engines/beagledoc2txt' WHERE name = 'utf8' AND mime = 'application/msword';
Vérifiez ensuite le fonctionnement de la conversion en lançant un `ted check' et en vérifiant le statut de la conversion “from MS-Word to TXT” :
# /etc/init.d/ted check [...] * Checking conversion from MS-Word to TXT... Ok: '/tmp/test.docgFZZHm.txt' (28 bytes) [...]
Cette version introduit un mécanisme pour définir le type MIME d'un fichier à partir de son extension, en définissant des règles d'associations dans un fichier XML.
Les règles personnelle, qui ne seront pas écrasés lors de la mise-à-jour de TE, sont a définir dans le fichier `$TE_HOME/etc/mime-user.conf' :
<?xml version="1.0" encoding="utf8"?> <mimes> <mime ext="eml" sys="text/x-mail" text="Mail text file" /> <mime ext="foo" sys="application/foo" text="Foo file" /> </mimes>
Cela vous permet, par la suite, de pouvoir déclarer un moteur de transformation/indexation personnel pour traiter les `application/x-mail'.
Cette version remplace le script de conversion utilisant l'API Python d'OpenOffice par un script utilisant l'API Java.
Les scripts `lib/engines/ooo-server-convert.py' et `lib/engines/ooo-server-merge.py' sont donc supprimés et remplacés par le script `lib/engines/ooo-server' qui combine les fonctions de convert et merge.
Il faut donc un environnement de runtime Java 6 pour utiliser cette version de `dynacase-te'.
Cette version introduit aussi un nouveau moteur `ooo2doc' pour générer des fichiers au format MS-Word 97. Si vous faite une mise à jour il faudra ajouter la déclaration de ce moteur dans votre table `engine' :
INSERT INTO engine (name, mime, command, "comment") VALUES ('doc', 'application/vnd.oasis.opendocument.text', '@TE_HOME@/lib/engines/ooo2doc', NULL);
IMPORTANT
Le port d'écoute par défaut du serveur TE a été changé et est à présent 51968 (l'ancien port étant le 10000). Suite à la mise à jour il vous faudra soit modifier la configuration des serveurs Dynacase qui utilisent ce TE pour leur indiquer le nouveau port à utliser, ou bien modifier la configuration de TE `$TE_HOME/etc/te.conf' pour rétablir l'écoute sur le port 10000 en positionnant la variable `PORT=10000'.
Autres changements :
Cette version remplace les moteurs d'extraction de texte basés sur Beagle par un moteur (`tika2txt') utilisant `tika-app' du projet Apache Tika.
Voir détails sur l'installation de ce composant dans la section 2.4.1. tika-app.
L'utilisation de `tika-app' apporte aussi le support de l'extraction de texte pour les documents au format MS-Office Open XML (`.docx', `.xlsx' et `.pptx'), Apple iWork (`.pages', `.numbers' et `.keynote'), Rich Text Format (`.rtf'), ePub (`.epub') et Outlook Mail Message (`.msg').
La liste des moteurs doit être mise à jour en base de données. Pour cela, il faudra re-initialiser le contenu de la table `engine' et rajouter par la suite vos éventuels moteurs spécifiques.
Pour la mise à jour de la liste des moteurs :
engine' :# PGSERVICE=te psql te=# DELETE FROM engine;
# PGSERVICE=te psql te=# \i $TE_HOME/lib/engines/engine_init.sql
Le fichier de configuration ($TE_HOME/etc/te.conf) doit être modifié afin de référencer le programme tika
# -- Tika-app Jar file
TIKA_APP_JAR="${TE_HOME}/lib/engines/tika-app-0.9.jar"
Cette version améliore la gestion des fichiers temporaires et ajoute une option au script rc-init ted pour nettoyer les fichiers temporaires de TE qui ont plus de X jours.
Voir Nettoyage des fichiers temporaires (''ted cleantmpfiles'')
Cette version corrige un problème de détection du type MIME des fichiers OpenOffice.org.
Pour que Dynacase puisse utiliser TE pour la transformation de documents, et l'indexation plein-texte de ceux-ci, il faut positionner les paramètres applicatifs suivants :
| Application | Paramètre | Valeur | Détail |
|---|---|---|---|
| “bibliothèque dynacase” | “Adresse du serveur de transformation” | 127.0.0.1 | L'adresse d'écoute du serveur TE. |
| “bibliothèque dynacase” | “Numéro de port du serveur de transformation” | 51968 | Le port d'écoute du serveur TE. |
| “bibliothèque dynacase” | “Activation du serveur de transformation” | yes | Activation/désactivation de l'utilisation du serveur TE par les transformation de documents Dynacase. |
| “bibliothèque dynacase” | “URL pour les callback du serveur de transformation” | Exemple : http://nom_du_serveur/nom_du_contexte/index.php | L'URL d'accès à votre serveur Dynacase par laquelle TE interagira en retour. Il est important de spécifier l'argument authtype=basic afin que TE puisse s'authentifier correctement sur Dynacase avec le compte définit dans te.conf (URL_CALLBACK_LOGIN/URL_CALLBACK_PASSWORD) |
| “bibliothèque dynacase” | “Activation de l'indexation plein texte avec TE” | yes | Activation/désactivation de l'utilisation du serveur TE pour indexer les fichiers (n'est pris en compte que si “Activation du serveur de transformation” est positionné à “yes”). |
Le protocole dav permet aux utilisateurs d'éditer et de sauver les fichiers inclus dans les documents directement depuis leur traitement de texte, tableurs et autres logiciels d'édition de fichiers.
L'application DAV de dynacase-platform gère deux serveurs WebDAV :
Lors de la modification de fichiers par l'interface Web, l'éditeur de fichier utilise le serveur WebDAV authentifié par numéro de session. L'adresse de ce serveur WebDAV doit être précisé dans le paramètre applicatif FREEDAV_SERVEUR. L'adresse du deuxième serveur doit être renseigné dans le paramètre WEBDAV_SERVEUR (accessible depuis le menu administration/paramètres de configuration/paramètres applicatif/dav).
Ces deux serveurs doivent avoir deux noms distincts du nom de la machine pour l'accès à l'interface web. Ces deux noms désignent la même machine (alias DNS) que le serveur WEB.
Le serveur Web Apache doit être configuré pour avoir deux hôtes virtuels (virtualhost) correspondant aux deux serveurs DAV.
Le navigateur Web ne peut pas nativement exécuter un autre programme. Pour autoriser votre navigateur à ouvrir les éditeurs vous devez installer deux fichiers sur votre poste client 'opendav.reg' et 'opendav.vbs' :
Pour enregistrer le protocole pour le navigateur, il faut double-cliquer sur l'icone du fichier 'opendav.reg' que vous avez téléchargé. Ensuite il faut enregistrer le fichier 'opendav.vbs' dans le répertoire C:\WINDOWS.
Après cette manipulation à partir de votre navigateur Internet Explorer ou Firefox, vous pouvez éditer et enregistrer les fichiers comme s'ils étaient sur votre disque dur.
Lorsque vous cliquez sur le lien ' Ouvrir dans un éditeur', une interface vous demande de choisir le programme capable de lire le fichier. Pour enregistrer le fichier sur le serveur, une fois les modifications effectuées, il suffit d'utiliser le menu enregistrer de l'éditeur comme d'habitude
Il est également possible de connecter un lecteur réseau qui permettra d'accéder à Dynacase-platform comme à un accès réseau partagé, cela peut être pratique pour l'ajout simultané de nombreux fichiers, que l'on pourra par la suite, enrichir en métadonnées.
Notes
Dans firefox, entrez l'URL : about:config Ajouter les options suivantes :
nom : network.protocol-handler.external.asdav valeur : true
nom : network.protocol-handler.app.asdav valeur : dynacase-opendav.sh
Dans un répertoire de votre path (accessible par $PATH lors du lancement du navigateur)
gconftool-2 -s /desktop/gnome/url-handlers/asdav/command '/path/to/app %s' --type String gconftool-2 -s /desktop/gnome/url-handlers/asdav/enabled --type Boolean true
Créer le fichier de commande dynacase-opendav.sh
#!/bin/bash np=`echo $1 | sed "s/asdav:/http:/"` ooffice "$np"
Ce fichier doit être exécutable.
Il reçoit en argument l'URL du fichier à éditer. Cette URL est une ressource asdav: qui doit être transformé en http: et être fournie à l'exécutable Open Office.
Ce script lance simplement openoffice avec le fichier du serveur WebDAV.
Si la configuration n'est pas correcte, vous allez rencontrer ce message :
Si tout fonctionne correctement, vous allez avoir cette fenêtre :
Dans le profil de Firefox (ex : /home/toto/.mozilla/firefox/5i4imfkt.default), il faut créer ou modifier le fichier « user.js » et ajouter ces deux lignes :
user_pref("network.protocol-handler.app.asdav", "dynacase-opendav.sh");
user_pref("network.protocol-handler.external.asdav", true);
Dans le dossier d'installation de Firefox (ex : /opt/firefox/defaults/pref), il faut créer le fichier « all-dynacase-dav.js » et ajouter ces deux lignes :
pref("network.protocol-handler.app.asdav", "dynacase-opendav.sh");
pref("network.protocol-handler.external.asdav", true);
Télécharger et installer l'application Asdav.app :
L'application Asdav.app permet d'ouvrir les URLs `asdav:' de Dynacase-platform avec OpenOffice, et donc d'éditer en ligne tous les types de fichiers supportés par celui-ci.
Asdav.app utilisera en premier OpenOffice.org.app, et si celui-ci n'est pas disponible il utilisera NeoOffice.org.app.
Note pour les utilisateurs sous Mac OS X Tiger (10.4)
OpenOffice.org.app 3.0.0 comporte un petit bug qui le rend inutilisable lorsqu'il est lancé par Asdav.app (c.f. http://www.openoffice.org/issues/show_bug.cgi?id=93731)
Pour contourner ce problème, il faut éditer le fichier `/Applications/OpenOffice.org.app/Contents/Info.plist' et changer la valeur de la clef `CFBundleExecutable' par `soffice.bin' :
[...] <key>CFBundleExecutable</key> <string>soffice.bin</string> [...]
Note: ce problème doit être à présent résolu à partir de OpenOffice.org 3.0.1
L'utilisation de la fonction DAV nécessite la création de deux configurations Apache à base de VirtualHosts. Comme cette conf n'est pas accessible et réalisable par dynacase-control, vous devrez insérer les configurations données ci-dessous dans la configuration de votre serveur Apache.
L'utilisation du protocole dav nécessite utilise un schéma dédié dans la base données générale.
Les tables dav.locks, dav.properties et dav.sessions sont automatiquement crée lors de l'installation de dynacase-platform.
Ce module nécessite en pré-requis l'activation du module “rewrite” :
a2enmod rewrite /etc/init.d/apache2 restart
Une fois l'installation terminée, il est possible de vérifier que la base de données webdav est correctement initialisée :
# su postgres
postgres@fcnet:/root$ psql <mabase>
...
mabase=# SET search_path TO dav;
SET
mabse=# \dt
Liste des relations
Schéma | Nom | Type | Propriétaire
--------+------------+-------+--------------
dav | locks | table | freedomowner
dav | properties | table | freedomowner
dav | sessions | table | freedomowner
(3 lignes)
Pour utiliser les fonctions d'édition et de montage WebDAV, vous devez mettre en place deux VirtualHosts Apache.
Pour cela, il vous faut déclarer deux noms DNS additionnels qui pointeront vers votre serveur dynacase-platform.
Exemple
Soit un serveur dynacase installé par Dynacase-control le répertoire `/var/www/ged', et accessible par l'enregistrement DNS `ged.example.net'.
Vous pouvez créer deux enregistrements DNS `ged-freedav.example.net' et `ged-webdav.example.net' qui pointeront vers `ged.example.net'
ged-freedav IN CNAME ged.example.net. ged-webdav IN CNAME ged.example.net.
Dans ce cas, les configurations associées seront :
Fichier de configuration `/etc/apache2/sites-available/default-freedav'
<VirtualHost *:80>
ServerName ged-freedav.example.net
DocumentRoot /var/www/ged/freedav
<Directory /var/www/ged/freedav/>
Order allow,deny
Allow from All
DirectoryIndex index.php
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/freedav.error.log
</VirtualHost>
Activer la configuration
# a2ensite ged-freedav # /etc/init.d/apache2 restart
Fichier de configuration `/etc/apache2/sites-available/ged-webdav'
<VirtualHost *:80>
ServerName ged-webdav.example.net
DocumentRoot /var/www/ged/webdav
<Directory /var/www/ged/webdav/>
Order allow,deny
Allow from All
DirectoryIndex index.php
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/webdav.error.log
</VirtualHost>
Activer la configuration
# a2ensite ged-webdav # /etc/init.d/apache2 restart
Remarque : Il est possible de vérifier avec votre navigateur que les deux VirtualHost fonctionnent correctement :
Positionner les paramètres applicatif suivants avec les noms DNS associés aux accès FreeDAV et WebDAV :
L'application dav comporte quatre paramètres accessibles via :
| référence | nom | |
|---|---|---|
| FREEDAV_SERVEUR | adresse du serveur webdav pour freedav | alias de nom de la machine serveur. Le virtual host associé ne doit pas être authentifié |
| WEBDAV_SERVEUR | adresse du serveur webdav pour le serveur authentifié | alias de nom de la machine serveur. Le virtual host associé doit être authentifié |
| WEBDAV_DB | coordonnées d'accès à la base de données webdav | doit être égale aux coordonnées de la base principale - automatiquement renseignée lors de l'installation |
| WEBDAV_ROOTID | Identifiant du dossier racine pour l'accès authentifié | identifiant du document dossier pour la racine du webdav authentifié. Lors d'un usage combiné avec WORKSPACE, la référence désigne un document recherche simple qui recherche l'ensemble des espaces de travail |
| WEBDAV_FOLDERMAXITEM | Nombre maximum d'éléments (dossier/fichier) visibles dans un dossier | Cette limite permet d'éviter d'afficher trop d'éléments pouvant provoquer un ralentissement de client. |
En cas de problème dans la mise en place de l'application dav, il est possible d'effectuer différents tests pour identifier la source du problème.
Le client en ligne de commande webdav disponible sous Linux permet de vérifier que la connexion au serveur webdav et au serveur freedav fonctionne correctement :
$ cadaver ged-freedav dav:/>
$ cadaver ged-webdav Authentication required for on server `ged-webdav': Username: admin Password: dav:/> ls Listing collection `/': succeeded. Coll: import 0 sep 17 16:25 Coll: la poubelle 0 sep 17 16:25 Coll: les cycles 0 sep 17 16:25 Coll: les familles 0 sep 17 16:25 Coll: les maisons 0 sep 17 16:25 Coll: les profils 0 sep 17 16:25 dav:/>
En cas de problème, il faut regarder dans les logs du serveur
Avec Konqueror, l'URL suivante permet de se connecter à un serveur Webdav : webdav://ged-webdav
Sous Linux, le paquet “davfs2” permet de monter un partage Webdav dans son système de fichiers. Cela permet d'accéder aux fichiers de dynacase en lecture et en écriture comme les fichiers locaux :
mount -t davfs http://ged-webdav /home/tony/webdav/ -o uid=tony,rw,file_mode=700
Sous Windows pour accèder à un partage Webdav, il faut :
Ensuite, les fichiers de dynacase seront accessibles en lecture et en écriture et il sera également possible d'en ajouter de nouveaux
Situation : Le document a été chargé en édition avec OpenOffice.org, et celui-ci plante, laissant le document locké au niveau WebDAV
Solution : Identifier l'URL du document (exemple asdav:/ /freedav.example.net/freedav/vid-12765-4870-3a0404dfe29f7c88bb58ac8a6943559d/Foo.odt), et supprimer le lock du document dans la table locks :
# psql -U postgres -d webdav \
-c "DELETE FROM dav.locks WHERE path = '/freedav/vid-12765-4870-3a0404dfe29f7c88bb58ac8a6943559d/Foo.odt'"
Il arrive sur certains postes en Windows XP d'avoir des lenteurs d'accès aux documents : les temps d'accès constatés sont d'environ 30 secondes.
Ces problèmes sont inhérents à Windows, il existe 2 solutions possibles pour pallier à ces lenteurs :
Sur votre serveur dynacase, installez samba avec aptitude
sudo aptitude install samba sudo /etc/init.d/smbd start
Explication: samba permet d'avoir des services sur le serveur qui répondent sur les ports netbios etc … et permet d'éviter les timeouts des requêtes des postes client.
Cette solution ne marche pas à travers un lien internet car généralement, les ports netbios sont bloqués.
La solution consiste à permuter les fournisseurs d'accès réseau en passant “Web Client Network” avant “Réseau Microsoft Windows”.
Pour cela, allez dans le panneau de configuration puis dans Connexions réseau / Avancé / Paramètres avancés :
Dans l'onglet “Ordre des fournisseurs”, vous placez “Web Client Network” en tête de liste.
Explication: lorsque vous cherchez à accéder à un serveur dav, le fournisseur réseau du dav devient prioritaire sur les autres services réseau, ce qui évite les problématiques de timeouts.
Par contre cale peut potentiellement engendrer d'autres lenteurs pour accéder à d'autres ressources réseau (serveur de fichier, active directory, …).
Cette solution est à appliquer au cas par cas.
Dans cette page, je vais présenter les éléments constitutifs d'un module Dynacase et mettre en oeuvre ces éléments pour construire un module d'exemple qu'on nommera freedom-foo.
Pour bien suivre cette présentation, il est souhaitable d'avoir bien en tête les notions d'Applications et d'Actions de Dynacase et du fonctionnement général de ceux-ci.
[A détailler]
Vous avez surement déjà manipulé des Applications et des Actions dans Dynacase…
[A détailler]
Dans les exemples ci-dessous, nous allons détailler la construction d'un module freedom-foo qui fournira une Application Dynacase nommé FOO, avec un ensemble d'actions associés.
Le fichier info.xml permet de décrire le module Dynacase en fournissant en particulier la version du module, une description, des dépendances avec d'autres modules Dynacase, un ensemble de paramètres, un descriptif des évolutions (changelog), et un ensemble d'action de pre-install, post-install, etc.
<?xml version="1.0"?> <module name="freedom-foo" version="1.2.3" release="1" [basecomponent="no"]> <description lang="en">Freedom foo</description> [<description lang="fr">Freedom toto</description>] <requires> [<installer version="1.0.0" comp="ge" />] <module name="freedom-bar" /> <module name="freedom-baz" version="1.0.0" comp="ge" /> [...] </requires> <parameters> <param name="foo_dir" label="Directory of FOO" type="text" default="/var/foo" needed="yes" /> <param name="foo_color" label="Color of FOO" type="enum" values="red|green|blue" default="green" needed="no" /> </parameters> <changelog> <version number="1.1.1" date="2009-01-01"> <change title='First change' url='http://dev.dynacase.org/issues/111'> Comment for first change. </change> <change title='Second change'> Comment for second change. </change> <change title='Third change'> </change> </version> <version number="1.1.0" date="2008-12-15"/> </changelog> <pre-install> <check type="syscommand" command="zip" /> <check type="phpfunction" function="pg_connect"> <help>You might need to install a php-pg package.</help> </check> <check type="file" file="/var/foo" predicate="is_dir" /> </pre-install> <post-install> <process command="programs/app_post FOO I" /> <process command="programs/record_application FOO" /> <process command="programs/app_post FOO U" /> <process command="programs/update_catalog" /> </post-install> <post-upgrade> <process command="programs/pre_migration FOO" /> <process command="programs/app_post FOO U" /> <process command="programs/record_application FOO" /> <process command="programs/post_migration FOO" /> <process command="programs/update_catalog" /> </post-upgrade> <post-param> </post-param> </module>
La racine du document info.xml est un tag <module> avec les attributs suivants :
name : le nom du moduleversion : la version du module (sous la forme N.N.N)release : le numéro de release de la versionbasecomponent : yes ou no, permet de spécifier si le module est un module de base, obligatoire a toute installation de Dynacase (optionnel, par défaut la valeur est no)author : l'auteur du module (ex. John Doe john.doe@example.net)(optionnel)licence : licence du module (optionnel)<?xml version="1.0"?> <module name="freedom-foo" version="1.2.3" release="rc1" author="John Doe <john.doe@example.net>" licence="GPLV2"> [...] </module>
Le module peut fournir une description textuelle pour expliciter le rôle du module. On pourra fournir des descriptions localisés en utilisant l'attribut lang.
Exemple :
<description lang="fr">Ce module permet à Dynacase de se connecter à FOO</description> <description lang="en">This module allows Dynacase to connect to FOO</description>
Les dépendances permettent d'exprimer qu'un module requiert d'autres modules Dynacase avec eventuellement une contrainte sur la version de ceux-ci.
Le tag <requires> est composés d'éléments <module> qui ont les attributs suivants :
name : le nom du module Dynacase requisversion : la version que le module requis doit avoircomp : gt ou ge, opérateur de comparaison de version
Le module peut aussi exprimer une contrainte sur la version de l'installeur lui même à l'aide de l'élément <installer>. Dans ce cas, les attributs sont :
version : la version de l'installeur que requiert le modulecomp : gt ou ge, opérateur de comparaison de version Exemple :
<requires> <installer version="1.0" comp="ge" /> <module name="freedom-bar" version="2.0" comp="ge" /> <module name="freedom-baz" version="1.9" comp="gt" /> <requires>
Dans cet exemple, le module requiert un installeur avec une version >= 1.0, le module freedom-bar en version >= 2.0 et le module freedom-baz en version > 1.9.
Le changelog permet d'indiquer les évolutions produites en rapport avec les versions du module. Ces informations sont contenues dans une balise <changelog> contenant des <version>.
Les éléments <version> ont les attributs suivants :
number : le numero de versiondate : la date de publication de la version
Les éléments <version> contiennent des éléments <change> qui décrivent chaque changement effectué. Les éléments <change> ont les attributs suivants :
title : l'intitulé du changementurl : une url en rapport avec le changement (dans l'interface dynacase-control, les chaines de forme issues/111/ sont reconnues et donnent comme texte du lien affiché 'issues 111' ; sinon un texte par défaut est utilisé)
La valeur de l'élément <change> constitue une description.
Exemple :
<changelog> <version number="1.1.1" date="2009-01-01"> <change title='First change' url='http://dev.dynacase.org/issues/111'> Comment for first change. </change> <change title='Second change'> Comment for second change. </change> <change title='Third change'> </change> </version> <version number="1.1.0" date="2008-12-15"/> </changelog>
Un module peut demander lors de son installation (ou upgrade) l'entrée de certains paramètres.
Les paramètres nécessaires au module sont renseignés avec un élément <parameters> contenant des éléments <param>.
Les élements <param> ont les attributs suivants :
name : le nom du paramètrelabel : le label textuel pour présenter le paramètretype : text ou enum, permet de spécifier le type de donnée attendudefault : la valeur par défaut présenté à l'utilisateur lors de la saisie des paramètres.needed : yes ou no, permet de spécifier si la saisie du paramètre est obligatoire ou optionnelle.values : lorsque type=“enum”, l'attribut values permet de spécifier une list de choix finis à partir de laquelle l'utilisateur selectionnera une valeur Exemple :
<parameters> <param name="foo_dir" label="Directory of FOO" type="text" default="/var/foo" needed="yes" /> <param name="foo_color" label="Color of FOO" type="enum" values="red|green|blue" default="green" needed="no" /> </parameters>
Lors de l'installation, upgrade ou suppression d'un module, un ensemble d'actions peuvent être effectués avant (pre) et après (post) l'opération suivant l'ordre suivant :
Chaque phase (pre-install, post-install, etc.) spécifie un ensemble de check ou process qui sont exécutés et qui retournent un status d'échec ou de réussite.
Une phase est validé lorsque tous ses sous-éléments check ou process ont retournés un statut de réussite.
Si une phase n'est pas validé, alors l'installation, ou l'upgrade, alors il est présenté à l'utilisateur les messages d'erreurs rencontrés, et celui-ci peut rejouer la phase après avoir eventuellement corrigé le problème, ou bien il peut choisir d'ignorer les messages d'erreurs et poursuivre l'install/ugprade.
Les éléments de pre-install s'exécutent avant l'installation des fichiers du module sur le système de fichier.
Les actions possible peuvent être des éléments <check>.
Chaque élément <check> peut fournir un élément <help> qui sera présenté à l'utilisateur lorsque l'action échoue.
Exemple :
<pre-install> <check type="phpfunction" function="pspell_new"> <help>Il faut peut-être installer php5-pspell avec apspell et aspell-fr</help> </check> <check type="syscommand" command="convert" /> </pre-install>
Les actions de pre-install serviront généralement à vérifier la présence de certains éléments et bloquer l'installation si ces éléments ne sont pas présents/corrects.
Les éléments de post-install s'exécutent après l'installation des fichiers du module sur le système de fichier.
Les actions possible peuvent être des éléments <process>.
Chaque élément <process> peut fournir un élément <label> qui sera présenté à l'utilisateur lorsque l'action sera exécuté.
Exemple :
<post-install> <process command="programs/record_application FOO"> <label lang="en">Record FOO application in database</label> </process> <process command="programs/update_catalog"> <label lang="en">Generate localization catalog</label> </process> </post-install>
Les actions de post-install serviront généralement à configurer le module qui viens d'être isntallé. Une erreur dans la phase de post-install laissera les fichiers installés en place, mais le paquet sera marqué en erreur de post-install dans l'interface.
Les éléments de pre-upgrade s'exécutent avant l'installation des nouveaux fichiers du module sur le système de fichier.
Les actions possible peuvent être des éléments <check>.
Chaque élément <check> peut fournir un élément <help> qui sera présenté à l'utilisateur lorsque l'action échoue.
Exemple :
<pre-upgrade> <check type="phpfunction" function="pspell_new"> <help>Il faut peut-être installer php5-pspell avec apspell et aspell-fr</help> </check> <check type="syscommand" command="convert" /> </pre-upgrade>
Les actions de pre-upgrade serviront généralement à vérifier la présence de certains éléments et bloquer l'upgrade si ces éléments ne sont pas présents/corrects.
Les éléments de post-upgrade s'exécutent après l'installation des nouveaux fichiers du module sur le système de fichier.
Les actions possible peuvent être des éléments <process>.
Chaque élément <process> peut fournir un élément <label> qui sera présenté à l'utilisateur lorsque l'action sera exécuté.
Exemple :
<post-upgrade> <process command="programs/pre_migration FOO"> <label lang="en">Pre-migration scripts</label> </process> <process command="programs/record_application FOO"> <label lang="en">Update application record in database</label> </process> <process command="programs/post_migration FOO"> <label lang="en">Post-migration scripts</label> </process> <process command="programs/update_catalog"> <label lang="en">Re-generate localization catalog</label> </process> </post-install>
Les actions de post-upgrade serviront généralement à configurer le module qui viens d'être isntallé, lancer les scripts de migration, etc. Une erreur dans la phase de post-upgrade laissera les fichiers installés en place, mais le paquet sera marqué en erreur de post-upgrade dans l'interface.
Les éléments check permettent d'executer des actions pour vérifier la présence de certains éléments.
Le check de type phpfunction permet de vérifier la présence d'une fonction PHP.
Le nom de la fonction testé est spécifié avec l'attribut function.
Exemple :
<check type="phpfunction" function="pg_connect" />
Le check de type syscommand permet de vérifier la présence d'une commande disponible sur le système.
Le nom de la command testé est spécifié avec l'attribut command
Exemple :
<check type="syscommand" command="convert" />
Le check de type phpclass permet de vérifier la présence d'une classe objet PHP.
Le nom de la classe PHP est fournis avec les attributs suivants :
include : le nom du fichier pour inclure la définition de la classeclass : le nom de la classeExemple :
<check type="phpclass" include="Net/SMTP.php" class="Net_SMTP" />
LE check de type apachemodule permet de vérifier qu'un module Apache particulier est activé et chargé par celui-ci.
Le nom du module est spécifié par l'attribut module.
Exemple :
<check type="apachemodule" module="mod_expires" />
Les éléments process servent à exécuter les actions permettant d'effectuer les opérations nécessaires au fonctionnement du module suite à son installation.
Prototype :
programs/app_post <APPNAME> I|UUtilisable dans les phases :
post-installpost-upgradeConditions d'utilisation :
post-install, le programme doit être exécuté avec le programme record_applicationpost-upgrade, le programme doit être exécuté après pre_migration et avant le programme record_application
Le programme app_post permet de lancer un script _post pour initialiser une application Dynacase.
Les arguments sont :
I | U : Le nom de la phase d'initialisation a exécuter (I pour install, U pour upgrade)Exemple :
<post-install> <process command="programs/post_app WEBDESK I" /> [...] </post-install> <post-upgrade> [...] <process command="programs/post_app WEBDESK U" /> [...] </post-upgrade>
Prototype :
programs/record_application <APPNAME>Utilisable dans les phases :
post-installpost-upgradeConditions d'utilisation :
app_post
Le programme record_application est utilisé pour enregistrer, ou mettre à jour, la définition de l'application en base de données.
La ligne de commande est spécifié par l'attribut command.
record_application prend en argument le nom de l'application à enregistrer.
Exemple :
<process command="programs/record_application FOO" />
Prototype :
programs/update_catalogUtilisable dans les phases :
post-installpost-upgradeConditions d'utilisation :
Le programme update_catalog est utilisé pour ré-générer le catalogue des messages de localisation.
Exemple :
<process command="programs/update_catalog" />
Prototype :
programs/pre_migrationUtilisable dans les phases :
post-upgradeConditions d'utilisation :
app_post
Le programme pre_migration est utilisé pour exécuter les scripts de pre-migration d'un module lors de sa mise-à-jour.
Exemple :
<process command="programs/pre_migration" />
Prototype :
programs/post_migrationUtilisable dans les phases :
post-upgradeConditions d'utilisation :
record_application, et avant le update_catalog
Le programme post_migration est utilisé pour exécuter les scripts de post-migration d'un module lors de sa mise-à-jour.
Exemple :
<process command="programs/post_migration" />
Prototype :
./wsh.phpUtilisable dans les phases :
post-installpost-upgradeConditions d'utilisation :
Le programme ./wsh.php est utilisé pour exécuter des méthodes sur des classes documentaires et exécuter des API Dynacase.
Exemple :
<process command="./wsh.php --api=freedom_refresh --method=postModify --famid=FOO" />
Vous avez la possibilité d'écrire vos propres programmes de post-install, post-upgrade, etc. afin d'effectuer des opérations spécifiques à votre module.
Ces programmes seront généralement développés soit en shell Bash soit en PHP. Ils seront disponible après la phase de décompression de votre paquet, dans le répertoire que vous aurez spécifié à l'empaquetage.
Le programme est exécuté dans le répertoire racine de l'installeur DYNACASE-CONTROL, et les variables d'environnement suivantes sont accessible depuis le script :
$CWD) dans lequel sera exécuté votre programmes)Exemple :
#!/bin/bash set -e # -- Récupérer la valeur du paramètre `foo_dir' spécifié par l'utilisateur PARAM_FOO_DIR=`"$WIFF_ROOT"/wiff --getValue=foo_dir` # -- Créer le répertoire s'il n'existe pas if [ ! -d "$PARAM_FOO_DIR" ]; mkdir "$PARAM_FOO_DIR" fi # -- Ajouter le nom de ce répertoire dans le fichier # -- `foo_dir.list' dans le sous-répertoire de mon module `FOO' echo "$PARAM_FOO_DIR" >> "$WIFF_CONTEXT_ROOT"/FOO/foo_dir.list
Note : Le programme PHP a aussi accès aux variables d'environnement, comme le script Bash, mais le chemin d'include doit être construit en fonction de vos besoins.
Exemple :
#!/usr/bin/env php <?php $WIFF_ROOT=getenv('WIFF_ROOT'); if( $WIFF_ROOT === false ) { print "WIFF_ROOT environment variable is not set!"; exit( 1 ); } $WIFF_CONTEXT_ROOT=getenv('WIFF_CONTEXT_ROOT'); if( $WIFF_CONTEXT_ROOT === false ) { print "WIFF_CONTEXT_ROOT environment variable is not set!"; exit( 1 ); } # -- Si je dois accéder aux fichier d'include de Dynacase # -- j'ajoute les répertoire d'include de Dynacase # -- dans mon include_path PHP set_include_path( get_include_path().PATH_SEPARATOR."$WIFF_ROOT/include".PATH_SEPARATOR$WIFF_CONTEXT_ROOT ); set_include_path(join(PATH_SEPARATOR, array( get_include_path(), "$WIFF_ROOT/include", "$WIFF_CONTEXT_ROOT" ))); # -- A présent, je peux inclure les librairies de l'installeur require("lib/Lib.Cli.php"); # -- ... et les librairies Dynacase require("WHAT/Lib.Common.php"); $param_foo_dir = wiff_getParamValue('foo_dir'); if( ! is_dir($param_foo_dir) ) { $ret = mkdir($param_foo_dir); if( $ret === false ) { print sprintf("Error: could not create directory '%s'!", $param_foo_dir); exit( 1 ); } } ?> [A compléter]
Pour fabriquer votre fichier webinst il faut disposer d'un fichier configure.in d'un fichier Makefile.in comme ceux-ci.
Le configure.in
# Autoconf script for libphp
#
#
AC_REVISION($Id: configure.in $)
dnl
dnl Process this file with autoconf to produce a configure script.
dnl
AC_PREREQ(2.13)
AC_INIT(./Makefile.in)
AC_SUBST(VERSION)
VERSION=`cat VERSION`
AC_SUBST(RELEASE)
RELEASE=`cat RELEASE`
AC_SUBST(PACKAGE)
PACKAGE=freedom-myapplication
AC_SUBST(APPNAME)
APPNAME=MYAPP
ac_default_prefix=/usr/share/what
AC_SUBST(PUBRULE)
PUBRULE=
AC_ARG_WITH(pubrule, [ --with-pubrule=dir Path to PubRule], PUBRULE=$withval)
if test "x$PUBRULE" != "x"; then
PUBRULEDIR=$PUBRULE
else
if test "x$PUBRULEDIR" == "x"; then
AC_CHECK_FILE($HOME/anakeen/devtools/PubRule, PUBRULEDIR=$HOME/anakeen/devtools/)
if test "x$PUBRULEDIR" = "x"; then
PUBRULEDIR=`pwd`
fi
fi
fi
AC_CHECK_FILE($PUBRULEDIR/PubRule, PUBRULE=$PUBRULEDIR)
if test "x$PUBRULE" = "x"; then
AC_MSG_ERROR([Could not find PubRule])
fi
AC_MSG_NOTICE([PubRule located at $PUBRULE])
AC_OUTPUT(Makefile info.xml )
Le Makefile :
# ============================================
# $Id: Makefile.in $
# ============================================
PACKAGE = @PACKAGE@
VERSION = @VERSION@
RELEASE = @RELEASE@
utildir=@PUBRULE@
pubdir = @prefix@
appname = offline
srcdir = @srcdir@
SUBDIR= Action
TOP_MODULES =
TAR = gtar
GZIP_ENV = --best
export targetdir PACKAGE
pages_not_xml = info.xml
include $(utildir)/PubRule
DISTFILES += $(SUBDIR) \
RELEASE VERSION
le makefile inclut le fichier Pubrule. Il contient un ensemble de règles pour publier le code et fabriquer les paquets.
Vous devez inclure ce fichier dans le répertoire de vos sources. Ensuite vous tapez :
autoconf ./configure make webinst
cela va générer le fichier webinst correspondant à votre module.
Cette page décrit comment installer ou mettre à jour un module Dynacase à partir d'un paquet Dynacase-control sans disposer d'un dépôt.
Cette fonction est disponible à partir de la version 0.2.2-6 de Dynacase-control.
L'empaquetage au format Dynacase-control d'un module Dynacase est décrit ici : Construction de modules pour Dynacase.
Vous disposez donc d'un paquet Dynacase-control monpaquet-x.y.webinst.
Rendez-vous sur l'interface Dynacase-control et positionnez vous dans le contexte pour lequel vous souhaitez importer le paquet.
En haut de la zone présentant la liste des paquets installés, le bouton 'Import module' est disponible.
Cliquez dessus, votre navigateur vous demande alors de choisir un fichier. Sélectionnez le paquet Dynacase-control correspondant au module à installer.
Le serveur analyse le contenu du paquet. Une fenêtre vous permet de préciser si vous souhaitez faire une installation ou une mise à jour. Suite à votre choix, l'installation ou la mise à jour se déroule comme pour celle d'un paquet issu d'un dépôt.
Les éventuelles dépendances nécessaires pour le module à installer ou mettre à jour sont contrôlées par rapport aux modules installés et ceux disponibles sur les dépôts nommés.
$ wiff mkrepoidx /var/www/my-dynacase-repo $ cat /var/www/my-dyncase-repo/content.xml
Si la machine sur laquelle est installé Dynacase n'a pas accès à Internet, vous pouvez créer un miroir local HTTP/FTP du dépôt de paquets en ligne.
$ mkdir /var/www/mirror $ cd /var/www/mirror $ wget --mirror --no-parent http://eec.anakeen.com/public/ $ wget --mirror --no-parent -X '/third-party/*/bak' ftp://ftp.dynacase.org/third-party
Configurer ensuite votre serveur Web pour servir ce répertoire `mirror', et modifier les paramètres par défaut du dépôt ”freedom” pour pointer sur ce nouveau dépôt.
http]localhost]/mirror/eec.ankaeen.com/public/platform]
Ajuster ensuite les paramètres `wiff-update-host' et `wiff-update-path' de l'installeur Dynacase-control pour chercher les mises-à-jour de l'installeur sur ce nouveau dépôt :
# vi /var/www/dynacase-control/conf/params.xml
[...]
<param name="wiff-update-host" value="http://localhost/"/>
<param name="wiff-update-path" value="mirror/eec.anakeen.com/public/control/"/>
[...]
Le CLI permet d'administrer le Dynacase-control en ligne de commande.
La commande `wiff' permet de manipuler et administrer les contextes Dynacase-platform.
A terme, les opérations actuellement accessibles à travers l'UI Web, seront accessibles en ligne de commande à l'aide de cette commande `wiff'.
La commande `wiff' doit être lancé sous `root'. Pour cela, vous pouvez soit vous logger sous le compte `root' pour exécuter la commande, soit utiliser `sudo pour exécuter celle-ci.
Si vous n'êtes pas `root' sur le serveur, et que les opérations d'administrations s'effectuent avec `sudo' :
$ sudo /var/www/dynacase-control/wiff help Password: ****** [message d'aide]
Si vous avez accès au compte `root' sur le serveur :
# /var/www/dynacase-control/wiff help [message d'aide]
Par la suite, nous utiliserons la notation de ce dernier cas (`# /var/www/dynacase-control/wiff').
list context [--pretty]
Cette opération permet d'afficher les contextes installés.
# /var/www/dynacase-control/wiff list context developpement test production # /var/www/dynacase-control/wiff list context --pretty Name Description ----------------------------------------------------------------------------------- developpement Développement test Test production Production
context <context-name> module list installed [--pretty]
Cette opération affiche les modules installés dans le contexte sélectionné.
# /var/www/dynacase-control/wiff context test module list installed freedom-core (2.14.1-12) freedom-vault (3.10.0-0) freedom-fckeditor (2.6.3-5) freedom-common (0.6.0-0) freedom (2.14.3-18) freedom-webdesk (1.2.0-2)
context <context-name> module list available [--pretty]
Cette opération affiche la liste des modules disponibles sur les dépôt de paquets accessibles par HTTP ou FTP.
# /var/www/dynacase-control/wiff context test module list available freedom-vault (3.10.0-0) freedom-extjs (3.0.0-4) freedom (2.14.3-18) freedom-core (2.14.1-12) [...] freedom-searchsheet (0.2.0-0) freedom-ecm (0.0.4-0) freedom-theme (0.0.1-3) freedom-url (0.0.0-3)
context <context-name> module list upgrade [--pretty]
Cette opération permet d'afficher la liste des modules installés dont une mise-à-jour est disponible sur les dépôts de paquets.
# /var/www/dynacase-control/wiff context test module list upgrade freedom-core (2.14.1-12) freedom (2.14.3-18)
context <context-name> module install [options] <localPackagePath> context <context-name> module install [options] <moduleName>
Cette opération permet d'installer un module contenu dans un paquet local (archive .webinst stocké en local sur le serveur) ou à partir d'un paquet disponible sur un dépôt de paquets distant accessible par HTTP ou FTP.
Les options disponibles sont :
–nopre' permet de ne pas exécuter les processus de `pre-install' déclarés par le paquet.–nopost' permet de ne pas exécuter les processus de `post-install' déclarés par le paquet.–nothing' permet de ne pas exécuter les processus de `pre-install' et de `post-install' déclarés par le paquet.–force' permet de forcer l'installation du paquet même si celui-ci est déjà installé.Installation d'un paquet distant :
# /var/www/dynacase-control/wiff context test module install freedom Will install (or upgrade) the following packages: - freedom-core-2.14.1-12 - freedom-vault-3.10.0-0 - freedom-fckeditor-2.6.3-5 - freedom-common-0.6.0-0 - freedom-2.14.3-18 Proceed to installation ? [Y/n] Y Processing required module 'freedom-core' (2.14.1-12) for install. Downloading module 'freedom-core-2.14.1-12'... [OK] Parameters for module 'freedom-core' ------------------------------------ client_name ? [] Test core_db ? [test] authtype ? [html] apacheuser ? [www-data] _www Doing 'pre-install' of module 'freedom-core'. [...] Doing 'unpack' of module 'freedom-core'. Unpacking module 'freedom-core'... [OK] Doing 'post-install' of module 'freedom-core'. Running 'Initialize system database'... [OK] Running 'Record core application in database'... [OK] Running 'Record users application in database'... [OK] Running 'Record access application in database'... [OK] Running 'Record authent application in database'... [OK] Running 'Record appmng application in database'... [OK] Running 'Generate traduction catalog'... [OK] Running 'Register client name'... [OK] Processing required module 'freedom-vault' (3.10.0-0) for install. Downloading module 'freedom-vault-3.10.0-0'... [OK] Doing 'pre-install' of module 'freedom-vault'. Doing 'unpack' of module 'freedom-vault'. Unpacking module 'freedom-vault'... [OK] Doing 'post-install' of module 'freedom-vault'. Running 'Process programs/record_application VAULT'... [OK] Running 'Process wsh.php --api=vault_init'... [OK] Running 'Process programs/update_catalog'... [OK] Processing required module 'freedom-fckeditor' (2.6.3-5) for install. Downloading module 'freedom-fckeditor-2.6.3-5'... [OK] Doing 'pre-install' of module 'freedom-fckeditor'. Doing 'unpack' of module 'freedom-fckeditor'. Unpacking module 'freedom-fckeditor'... [OK] Doing 'post-install' of module 'freedom-fckeditor'. Processing required module 'freedom-common' (0.6.0-0) for install. Downloading module 'freedom-common-0.6.0-0'... [OK] Doing 'pre-install' of module 'freedom-common'. Doing 'unpack' of module 'freedom-common'. Unpacking module 'freedom-common'... [OK] Doing 'post-install' of module 'freedom-common'. Running 'Process programs/record_application FDC'... [OK] Running 'Process programs/update_catalog'... [OK] Processing required module 'freedom' (2.14.3-18) for install. Downloading module 'freedom-2.14.3-18'... [OK] Doing 'pre-install' of module 'freedom'. Running 'Check php function gd_info'... [OK] Running 'Check php function cal_info'... [OK] Running 'Check php class XSLTProcessor'... [OK] Doing 'unpack' of module 'freedom'. Unpacking module 'freedom'... [OK] Doing 'post-install' of module 'freedom'. Running 'Process programs/app_post FDL I'... [OK] Running 'Process programs/record_application FDL I'... [OK] Running 'Process programs/app_post FDL U'... [OK] Running 'Process programs/app_post USERCARD I'... [OK] Running 'Process programs/record_application USERCARD I'... [OK] Running 'Process programs/app_post USERCARD U'... [OK] Running 'Process programs/record_application GENERIC I'... [OK] Running 'Process programs/record_application ONEFAM I'... [OK] Running 'Process programs/record_application FUSERS I'... [OK] Running 'Process programs/app_post FREEDOM I'... [OK] Running 'Process programs/record_application FREEDOM I'... [OK] Running 'Process programs/app_post FREEDOM U'... [OK] Running 'Process programs/record_application FGSEARCH I'... [OK] Running 'Process wsh.php --api=crontab --cmd=register --file=FREEDOM/freedom.cron'... [OK] Running 'Process programs/update_catalog'... [OK] Done.
Installation d'un paquet local :
# /var/www/dynacase-control/wiff context test module install /tmp/foo-1.2.3-4.webinst Processing required module 'foo' (1.2.3-4) for install. Module 'foo-1.2.3-4' is already downloaded in '/private/tmp/foo-1.2.3-4.webinstkeZbf9'. Doing 'pre-install' of module 'foo'. Running 'Check php class XML_Parser'... [OK] Running 'Check php function imap_open'... [OK] Doing 'unpack' of module 'foo'. Unpacking module 'foo'... [OK] Doing 'post-install' of module 'foo'. Running 'Process programs/app_post FOO I'... [OK] Running 'Process programs/record_application FOO'... [OK] Running 'Process programs/app_post FOO U'... [OK] Running 'Process programs/update_catalog'... [OK] Done.
context <context-name> module upgrade [options] <localPackagePath> context <context-name> module upgrade [options] <moduleName>
Cette opération permet d'upgrader un module à partir d'un paquet local (archive .webinst stocké en local sur le serveur) ou à partir d'un paquet disponible sur un dépôt de paquets distant accessible par HTTP ou FTP.
Les options disponibles sont :
–nopre' permet de ne pas exécuter les processus de `pre-upgrade' déclarés par le paquet.–nopost' permet de ne pas exécuter les processus de `post-upgrade' déclarés par le paquet.–nothing' permet de ne pas exécuter les processus de `pre-upgrade' et de `post-upgrade' déclarés par le paquet.–force' permet de forcer l'upgrade du paquet même si une version supérieure ou égale est déjà installée.# /var/www/dynacase-control/wiff context test module upgrade /tmp/foo-2.0.0-1.webinst Processing required module 'foo' (2.0.0-1) for upgrade. Module 'foo-2.0.0-1' is already downloaded in '/private/tmp/foo-2.0.0-1.webinstwEvSU3'. Doing 'pre-upgrade' of module 'foo'. Running 'Check php class XML_Parser'... [OK] Running 'Check php class XML_RSS'... [OK] Running 'Check php function imap_open'... [OK] Doing 'unpack' of module 'foo'. Unpacking module 'foo'... [OK] Doing 'post-upgrade' of module 'foo'. Running 'Process programs/pre_migration FOO'... [OK] Running 'Process programs/app_post FOO U'... [OK] Running 'Process programs/record_application FOO'... [OK] Running 'Process programs/post_migration FOO'... [OK] Running 'Process programs/update_catalog'... [OK] Done.
context <context-name> param show [<moduleName>]
Cette opération permet d'afficher la liste des paramètres des modules installés.
# /var/www/dynacase-control/wiff context test param show freedom-core:client_name = Test freedom-core:core_db = test freedom-core:authtype = html freedom-core:apacheuser = _www foo:bar = baz foo:bir = biz
# /var/www/dynacase-control/wiff context test param show foo foo:bar = baz foo:bir = biz
context <context-name> param get <module-name>:<param-name>
Cette opération permet d'afficher la valeur d'un paramètre d'un module donné.
# /var/www/dynacase-control/wiff context test param get foo:bar foo:bar = baz
context <context-name> param set <module-name>:<param-name> <param-value>
Cette opération permet de positionner la valeur d'un paramètre d'un module donné.
# /var/www/dynacase-control/wiff context <context-name> param set foo:bar buzz foo:bar = buzz
wstop <context-name>
Cette opération permet d'exécuter le script historique `wstop' sur un contexte.
# /var/www/dynacase-control/wiff wstop test check update needed (/var/www/test/wcheck)
wstart <context-name>
Cette opération permet d'exécuter le script historique `wstart' sur un contexte.
# /var/www/dynacase-control/wiff wstart test
whattext <context-name>
Cette opération permet d'exécuter le script historique `whattext' sur un contexte.
# /var/www/dynacase-control/wiff whattext test
context <context-name> shell context <context-name> exec <command> [<command-options>]]
Cette opération permet d'ouvrir un shell, ou d'exécuter une commande, sous l'uid de l'utilisateur exécutant le serveur Apache afin d'effectuer manuellement des opérations d'administration spécifiques.
Par défaut, si aucune commande n'est spécifié, le shell par défaut définit pour l'utilisateur du serveur Apache est lancé. Si l'utilisateur n'a pas de shell associé, il faudra alors spécifier le chemin du shell qu'on souhaite exécuter avec la variante `exec'.
Lors de l'ouverture du shell, ou de l'exécution de la commande, les variables d'environnement suivantes sont pré-positionnés :
HOME' : le répertoire racine du contexte.wpub' : le répertoire racine du contexte (pour compatibilité scripts post/migr de Freedom).pgservice_core' : le service Postgresql de la base `core' (pour compatibilité scripts post/migr de Freedom).pgservice_freedom' : le service Postgresql de la base `freedom' (pour compatibilité scripts post/migr de Freedom).freedom_context' : vaut toujours ”default” (pour compatibilité scripts post/migr de Freedom).# /var/www/dynacase-control/wiff context test shell /bin/bash wiff(test)~$ id uid=70(_www) gid=70(_www) egid=20(staff) groups=70(_www) wiff(test)~$ pwd /var/www/test wiff(test)~$ ./FOO/FOO_post U [...]
# /var/www/dynacase-control/wiff context test exec /usr/bin/tar -zcf /tmp/archive.tar.gz .
archive [--to <directory>] [--prefix <prefix>]
Cette commande permet de faire une archive de Dynacase-control avec son paramétrage.
Les options disponibles sont :
–to <directory>' permet de spécifier le répertoire dans lequel sera créée l'archive.–prefix <prefix>' permet de spécifier le prefixe du nom de l'archive. Le préfixe peut contenir les éléments variables suivant :context <context-name> archive all [--to <directory>] [--prefix <prefix>] context <context-name> archive pubdir [--to <directory>] [--prefix <prefix>] context <context-name> archive database <database-service-name> [--to <directory>] [--prefix <prefix>] context <context-name> archive vault <vault-path> [--to <directory>] [--prefix <prefix>]
Cette commande permet de sauvegarder tout (`all'), ou une partie (`pubdir', `database' et`vault'), des éléments d'un contexte.
Les options disponibles sont :
–to <directory>' permet de spécifier le répertoire dans lequel seront créées les archives.–prefix <prefix>' permet de spécifier le prefixe du nom de l'archive. Le préfixe peut contenir les éléments variables suivant :Version 0.8
Dynacase-control permet de sauvegarder un contexte et de le restaurer. Ces manipulations peuvent servir à revenir à des sauvegardes précises ou à dupliquer des contextes afin de travailler sur des contextes déjà paramétrés. Une archive contient le contenu de la base de données, le code de l'application freedom et, si vous le souhaitez, l'ensemble des fichiers (coffres).
Pour créer une archive, il faut aller dans un contexte puis cliquer sur “Create archive” Une boite de dialogue vous demande alors le nom de l'archive ainsi que sa description. Une option est aussi proposé pour exclure les coffres.

Dynacase-control construit l'archive sur le serveur. Pendant ce temps, Dynacase-control vous indique que l'archive est en cours de constitution. Le temps d'archivage dépend du nombre de fichiers et de la taille de la base de données (pour un coffre de 1Go cela peut prendre environ 5 minutes).
Tant qu'elle est en constitution, l'image d'attente est présenté devant l'archive et le message indiquant la construction est présent.
Une fois l'archive constituée, un pop_up vous informera de sa disponibilité, et vous pourrez alors voir son contenu.
Les informations disponibles sont :
| paramètres | signification |
|---|---|
| Archive datetime | L'heure et la date à laquelle l'archive à été créée |
| Description | La description de l'archive |
| Archive id | l'identifiant unique de l'archive |
| Vault saved | Permet de savoir si oui ou non les fichiers des coffres ont été sauvegardés dans cette archive |
Pour créer un contexte à partir de l'archive il suffit d'aller sur une archive et de cliquer sur “Create context”. Les informations suivantes vous sont demandées :
| paramètres | signification |
|---|---|
| name | nom du nouveau context. Ce nom sera repris dans le paramètre CORE_CLIENT |
| root | racine d'installation du nouveau contexte. Ceci doit être un répertoire vide accessible en écriture pour l'utilisateur apache |
| description | texte décrivant le contexte |
| url | url d'accés à freedom pour ce contexte. Cela dépend de votre configuration apache. Attention, il n'est pas possible d'utiliser sur un même navigateur deux contexte de freedom ayant le même nom de domaine et de machine. Pour utiliser plusieurs contextes en parallèle il faut utiliser des virtualhost apache |
| core database service | nom du service postgresql où sera injecté la base de données. La base d'accueil doit être créée comme pour une installation |
| vault root | répertoire où seront copiés les fichiers des coffres. Sous ce répertoire un sous répertoire par coffre sera créé. Le nom de chaque sous répertoire est l'identifiant du coffre de l'origine (nombre commençant à 10) |
| remove profil | si vous cochez cette option et que vous indiquez un login, alors l'ensemble des droits des documents sera remplacé par un profil unique où l'utilisateur donné aura tous les droits sauf celui d'écrire. Ainsi le contexte pourra dans ce cas être considéré comme en lecture seule pour les documents |
| user login | login de l'utilisateur qui aura tous les droits |
| user password | mot de passe de l'utilisateur |
| clean tmp directory | Si coché, le répertoire temporaire servant à la restauration du contexte seront nettoyés. Case cochée par défault |
Une fois les informations renseignées, vous cliquez sur 'Save' pour lancer la création d'un nouveau contexte. Tant que le contexte n'est pas fini d'être construit, Dynacase-control indique qu'il est en cours de construction avec l'image d'attente. Comme pour la sauvegarde, le temps de restauration est fonction de la taille de l'archive. Un message pop_up vous informera de la fin de la création.
Vous pouvez déplacer une archive sur une autre machine disposant de Dynacase-control. Pour cela il suffit de déplacer le fichier fcz du répertoire source vers le répertoire archived-context cible
www-data@tarfful:/var/www/dynacase-control/archived-contexts$ ls -l total 28732 -rw-r--r-- 1 www-data www-data 29381172 Jun 8 13:34 8bc472a4513c4054459b4193953b3716ac536d05.fcz www-data@tarfful:/var/www/dynacase-control/archived-contexts$ scp 8bc472a4513c4054459b4193953b3716ac536d05.fcz www-data@mymachine:/var/www/dynacase-control/archived-contexts
En cliquant sur le bouton “modify context” vous pouvez accéder à l'interface permettant de changer les options du context
Plusieurs paramètres sont modifiables et d'autre non :
| paramètres | signification | Modifiable |
|---|---|---|
| Name | nom du context | Oui |
| Root | racine d'installation du contexte. | Non |
| Description | texte décrivant le contexte | Oui |
| Url | Url d'accès au contexte | Oui |
| Repositories | Liste des dépôts accessible au context. Vous devez absolument en sélectionner au moins un. | Oui |
En cliquant sur “Save” les données seront automatiquement suavegardées.
La suppression de contexte est désormais disponible (Dynacase-control>=1.0.0).
Il faut appeler l'exécutable Dynacase-control (à la racine de l'installation de votre Dynacase-control) avec les arguments : delete context <nom_du_contexte>
Ce qui donne:
/chemin_de_la_racine_de_dynacase-control/wiff delete context <nom_du_contexte>
Exemple :
[prompt@computer ~]$ sudo /var/www/dynacase-control/wiff delete context webstudio crontab deleted vault deleted database deleted root deleted context unregister [prompt@computer ~]$
Un bouton `Delete context' est disponible:
Une confirmation est demandée :
Une fois confirmée la suppression de contexte s'exécutera. Dynacase-control supprimera les crontab, le contenu de la base de données (sans supprimer la base elle-même), effacera tous les fichiers sources et les vault liés au contexte.
A la fin un message vous avertira de la réussite ou non de l'opération et listera tous les éléments qui n'ont pas pu être effacé: