DYNACASE-CONTROL

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 :

  • contrôle de la présences des services (postgresl, php, etc…), modules php et autres logiciels attendus sur le serveur
  • possibilité d'utiliser plusieurs dépôts Dynacase (stable, test, dev)
  • gestion des modules Dynacase : modules installés, mise à jours possibles, modules disponibles, suppressions de modules
  • gestion des dépendances entre modules lors de l'installation
  • paramétrage et modification des paramétrages des modules
  • suppression de contexte

Dynacase-control permet donc de réaliser simplement une première installation de Dynacase.

Pré-Requis logiciels

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.

Navigateurs supportés

La version Dynacase 3.0 est fonctionnelle avec les navigateurs suivants :

  • Internet Explorer 8
  • Firefox 3 (>3.5)
  • Chrome branche stable

Apache

version validée : 2.2

Modules
  • php5_module
  • env_module
  • expires_module
  • dir_module
  • auth_basic_module
  • authn_file_module
  • authz_host_module
  • setenvif_module
  • rewrite_module

PostgreSQL

PHP

Modules PHP utilisé

Les modules notés (core) sont normalement inclus de manière statique dans PHP.

  • Core (core)
  • SimpleXML
  • calendar
  • ctype
  • date (core)
  • fileinfo
  • gd
  • gettext
  • iconv
  • imap
  • json
  • ldap
  • mbstring
  • pcntl
  • pcre
  • pgsql
  • posix
  • pspell
  • session (core)
  • sockets
  • standard (core)
  • xml
  • zip

PEAR

  • XML/RSS.php
  • Net/SMTP.php
  • Mail/mime.php
  • Crypt/CHAP.php (optionnel)

Commande *nix

  • rm
  • file
  • mkdir
  • tar
  • zip >= 3.0
  • unzip >= 6.0
  • convert
  • recode
  • php
  • ldapdelete (optional)
  • psql
  • pg_dump
  • msgcat

Installation & mise à jour

Installation de Dynacase-control

A cette étape, l'installation de Dynacase Control doit être réalisée par l'administrateur de votre serveur

Pré-requis

  • Dynacase-control nécessite un serveur HTTP Apache 2.x avec PHP 5 (mod_php) et les modules : php xml, php zip, php json

Il est nécessaire que le répertoire dans lequel sera installé Dynacase ait une directive ”AllowOverride All” positionné au niveau de la configuration Apache.

  • Si le paramètre ”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'.

Installation

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) :

Troubleshooting/FAQ

PHP class 'DOMDocument' not found.

Installer `php-dom' et/ou `php-xml'.

PHP class 'ZipArchive' not found.

Installer `php-zip'.

PHP function 'json_encode' not found.

Installer `php-json'.

PHP function 'json_decode' not found.

Voir Message ”PHP function 'json_encode' not found.”.

Création d'un contexte

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 :

  • le répertoire racine du contexte : ce répertoire contient l'ensemble des modules et autres données installées
  • la base de données Dynacase (demandée par le module obligatoire dynacase-platform)

Ces éléments sont à préparer par un administrateur système ayant les accès super-utilisateur (root) sur le serveur.

Préparation du répertoire racine

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.

Création de la base de données

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:

Création du service Postgresql pour accèder à la base de données

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

Sous Debian (Lenny), la commande 'pg_config' est fournie par le paquet 'postgresql-server-dev-8.3' ; sous Ubuntu server 8.10 LTS, le package 'libpq-dev' est suffisant.

# 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=# 

Création du contexte

Pour créer un contexte, il faut cliquer sur le lien “Create Context” et renseigner les champs indiqués.

  • Name : Nom du contexte
  • Root : Chemin relatif ou absolue ou seront installés les fichiers
  • Description : Commentaire sur le contexte
  • Repositories : Sélectionner la version de Dynacase à installer
  • Url : Url de l'installation de Dynacase

Première installation de Dynacase-platform avec Dynacase-control

Installation du module de base

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.

Paramètres obligatoires

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 :

  • client name : Nom de l'organisme/la société qui apparaîtra dans le login général de dynacase
  • database postgresql service name: : Nom du service PostgreSQL créé pour accéder à la base de données
  • authenticate default mode : html par défaut pour une authentification basée sur un formulaire Web
  • apache system user : Utilisateur sous lequel tourne apache (ex : www-data sous Debian)
  • temporary folder : répertoire utiliser pour stocker des données temporaires

Vérifications de pré-installation

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) :

Résolution des principales dépendances

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 PATHaptitude install zip
Checking if the command 'dot' is in the PATHaptitude install graphviz
Checking if the command 'dot' is in the PATHaptitude install imagemagick
Checking if the command 'html2ps' is in the PATHaptitude install html2ps
Checking if the command 'php' is in the PATHaptitude install php5-cli
Warning : Checking if the command 'ldapdelete' is in the PATH
Checking if the command 'msgcat' is in the PATHaptitude 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
Debian Lenny

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
Ubuntu 8.04 LTS
  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
Ubuntu 10.04 LTS
  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

Fin de l'installation et connexion à Dynacase-platform

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 :

Le mot de passe par défaut pour se connecter est “admin / anakeen”

Dépôts

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é.

Mise à jour de l'installeur Dynacase-control

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.

Mise à jour des modules Dynacase

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).

Moteur de transformation de fichiers

Installation de TE (Version 1.3)

1. Pré-requis

  • 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).

2. Installation

`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.

2.1. Télécharger et décompresser l'archive `dynacase-te-current.tar.gz'

# 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.

Si vous avez un compte EEC, il est recommandé de télécharger dynacase-te depuis votre dépôt EEC afin d'avoir les dernières corrections disponibles.

2.2. Installer le répertoire de `''dynacase-te''' sur votre système

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'.

2.3. Création de la base de donnée TE

2.3.1. Créer une base `''te''' sur votre serveur de base de données
# su postgres -c psql
postgres=# CREATE DATABASE "te" WITH OWNER "dynacaseowner";
2.3.2. Créer/ajouter le service postgresql pour l'accès à cette base `''te'''
# 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'.

2.3.3. Valider l'accès à la base de donnée `''te'''
# PGSERVICE=te psql
te=# \q

2.4. Installation des éléments additionnels

2.4.1. tika-app

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/

3. Configuration du serveur TE

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 :

  • Répertoire temporaire de travail
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.


  • Adresse et port d'écoute TCP
LISTEN_ADDRESS=0.0.0.0 Adresse d'écoute du serveur TE.
PORT=51968 Port d'écoute du serveur TE.


  • Accès base de donnée
TE_PG_SERVICE=te Contient le le nom du service pour l'accès à la base `te'.


  • Interaction avec Dynacase

A partir de la version 0.8.2 la définition du login et du mot de passe ne sont plus obligatoires.

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.


  • Lancer les serveurs sous une autre identité que 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é.

  • Paramétrage serveur OpenOffice.org
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.


  • Paramétrage tika-app
TIKA_APP_JAR=“${TE_HOME}/lib/engines/tika-app-0.9.jar” Le chemin d'accès à l'archive `tika-app-0.9.jar'.


4. Initialisation

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.

5. Démarrage/arrêt/status de TE

5.1. Démarrage des éléments de TE (''ted start'')

TE démarre trois services qui sont :

  • Le serveur OpenOffice.org
  • Le serveur te_request_server
  • Le serveur te_rendering_server
# $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.

5.2. Status des éléments de TE (''ted status'')

# $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.

5.3. Vérification des moteurs de transformation (''ted check'')

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)

Si le nom d'hôte/nom de domaine du système est mal configuré, les temps de conversion peuvent être long du fait de timeouts de résolution de noms lors de la connexion au serveur OOo. Pour corriger cela, assurez vous que le nom d'hôte (tel que retourné par la commande `hostname') et le nom de domaine (tel que retourné par la commande `dnsdomainname') sont corrects, et que le fichier `/etc/hosts' est correctement renseigné.

5.4. Arrêts des éléments de TE (''ted stop'')

# $TE_HOME/bin/ted stop
Stopping te_request_server... 27041
Stopping te_rendrering_server... 27043
Stopping OOO server... 27023
 * Stopping ted service:  OK

5.5. Nettoyage des fichiers temporaires (''ted cleantmpfiles'')

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.

6. Démarrage/arrêt automatique de TE avec le système

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.

6.1. Enregistrement de ted sur distribution de type RedHat

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

6.2. Enregistrement de ted sur distribution de type Debian

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

7. Configuration de Dynacase

Rendez vous ensuite à la page Configuration de Dynacase pour utiliser TE pour configurer Dynacase

8. Migration/Changelog

8.1. Migration d'un TE 0.7.0

La partie cliente de dynacase-te est à présent intégré dans Dynacase-platform-3.X

  • Arrêter le service TE.
  • Désinstaller le paquet `dynacase-te' et `dynacase-te-client' à l'aide du gestionnaire de paquet.
  • Installer `dynacase-te-current.tar.gz' comme indiqué ci-dessus.
  • Instancier un fichier de configuration `$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.
  • Modifier les chemins des scripts de conversion de la table `engine' :
# PGSERVICE=te psql
te=# UPDATE engine SET command = regexp_replace(command, '^/usr/share/(php|pear)/TE/engines/', '@TE_HOME@/lib/engines/');
  • Démarrer le service TE.
  • Lancer un `ted check'.

8.2. freedom-te-0.8.0-2

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'.

8.3. freedom-te-0.8.0-3

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 :

  • Sauvegarder la définition de vos propres moteurs.
  • Supprimer le contenu de la table `engine' :
# PGSERVICE=te psql
te=# DELETE FROM engine;
  • Re-charger la nouvelle liste de moteurs :
# PGSERVICE=te psql
te=# \i $TE_HOME/lib/engines/engine_init.sql
  • Re-importer la définition de vos propres moteurs.

8.4. freedom-te-0.8.1-1

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'.

8.5. freedom-te-0.8.2-0

Cette version introduit trois nouveaux moteurs de transformation qui sont :

  • mergeodt
  • mergepdf
  • mergepdfa

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 :

  • Sauvegarder la définition de vos propres moteurs.
  • Supprimer le contenu de la table `engine' :
# PGSERVICE=te psql
te=# DELETE FROM engine;
  • Re-charger la nouvelle liste de moteurs :
# PGSERVICE=te psql
te=# \i $TE_HOME/lib/engines/engine_init.sql
  • Re-importer la définition de vos propres moteurs.

8.6. freedom-te-0.8.3-1

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)

[...]

8.7. freedom-te-0.8.4-1

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'.

8.8. dynacase-te-1.1.0-0

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);

8.9. dynacase-te-1.2.0-0

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 :

  • Sauvegarder la définition de vos propres moteurs.
  • Supprimer le contenu de la table `engine' :
# PGSERVICE=te psql
te=# DELETE FROM engine;
  • Re-charger la nouvelle liste de moteurs :
# PGSERVICE=te psql
te=# \i $TE_HOME/lib/engines/engine_init.sql
  • Re-importer la définition de vos propres moteurs.

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"

8.10. dynacase-te-1.3.0-0

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'')

8.11. dynacase-te-1.3.1-0

Cette version corrige un problème de détection du type MIME des fichiers OpenOffice.org.

Configuration de Dynacase pour utiliser TE

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”).

Configuration protocole dav

Présentation de l'application dav

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 :

  • un serveur authentifié par login et mot de passe, pour une utilisation classique au travers de client WebDAV tel que l'explorateur de fichier Microsoft Windows
  • un serveur authentifié par identifiant de sessions pour être utilisé à travers l'interface Web d'échange de fichiers.


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.

Configuration des postes client éditer et sauver en ligne

Sous Windows

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

  • Une mise à jour du client WebDAV/WebFolders de Windows est disponible, et corrige apparemment plusieurs problèmes comme la gestion des caractères accentués : http://support.microsoft.com/kb/907306
  • Si votre accès Internet se fait via un proxy, il peut être nécessaire de modifier la configuration de votre poste.

Sous Linux

Firefox

Dans firefox, entrez l'URL : about:config Ajouter les options suivantes :

  • [bouton droit > Nouvelle > Valeur booléenne]

nom : network.protocol-handler.external.asdav valeur : true

  • [bouton droit > Nouvelle > Chaîne de caractère]

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)

Pour visualiser les répertoires de votre variable PATH, il suffit de lancer dans une console la commande : echo $PATH

Pour Firefox > 3.5, il faut aussi lancer deux commande à l'aide de gconftool-2 :

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.

Pour cela, il faut ajouter le droit : chmod +x

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 :

Méthode automatique pour configurer Firefox pour un profil utilisateur avec « user.js »

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);
Méthode automatique pour tous les profils d'un ordinateur

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);

Sous Mac OS X

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

Configuration serveur web apache

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.

Base de données webdav

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.

Pré-requis avec Dynacase-control

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)

VirtualHosts Apache pour l'accès aux fonctions WebDAV

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 :

  • Configuration pour l'accès FreeDAV (édition en ligne) :

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
  • Configuration pour l'accès WebDAV (montage comme système de fichier) :

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 :

Paramètres applicatif

Positionner les paramètres applicatif suivants avec les noms DNS associés aux accès FreeDAV et WebDAV :

  • Dav > adresse du serveur webdav pour freedav = “ged-freedav.example.net”
  • Dav > adresse du serveur webdav pour le serveur authentifié = “ged-webdav.example.net”

Paramétrage de l'application dav

L'application dav comporte quatre paramètres accessibles via :

  • menu “Administration”
  • onglet “Paramètres applicatifs”
  • section “Dav”
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.

Test de débogage du dav

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.

Test avec cadaver

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

Test avec Konqueror sous KDE

Avec Konqueror, l'URL suivante permet de se connecter à un serveur Webdav : webdav://ged-webdav

Montage d'un partage 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

Accès à un partage Webdav sous Windows

Sous Windows pour accèder à un partage Webdav, il faut :

  • Favoris Réseaux
  • Ajout d'un favoris réseau
  • Adresse réseau ou internet : http://ged-webdav

Ensuite, les fichiers de dynacase seront accessibles en lecture et en écriture et il sera également possible d'en ajouter de nouveaux

Troubleshoot de l'application dav

Delocker un document

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'"

Lenteurs d'accès

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 :

1. Solution pour intranet (modification du serveur dynacase)

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.

2. Solution pour tous les cas (modification de chaque poste client)

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.

Dépôts et paquets

Création d'un module

Construction de modules pour Dynacase

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]

Présentation

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.

Les fichiers nécessaires

Fichier ''FOO.app''

Fichier ''FOO_init.php''

Fichier ''info.xml''

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.

Exemple de fichier de info.xml
<?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>
Description d'un module
Préambule Module

La racine du document info.xml est un tag <module> avec les attributs suivants :

  • name : le nom du module
  • version : la version du module (sous la forme N.N.N)
  • release : le numéro de release de la version
  • basecomponent : 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>
Description

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>
Dépendances

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 requis
  • version : la version que le module requis doit avoir
  • comp : 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 module
  • comp : 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.

Changelog

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 version
  • date : 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 changement
  • url : 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>
Paramètres

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ètre
  • label : le label textuel pour présenter le paramètre
  • type : text ou enum, permet de spécifier le type de donnée attendu
  • default : 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>
Pre/post install/upgrade/etc.

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.

pre-install

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.

post-install

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.

pre-upgrade

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.

post-upgrade

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.

pre-remove
post-remove
Les checks

Les éléments check permettent d'executer des actions pour vérifier la présence de certains éléments.

phpfunction

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" />
syscommand

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" />
phpclass

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 classe
  • class : le nom de la classe

Exemple :

  <check type="phpclass" include="Net/SMTP.php" class="Net_SMTP" />
apachemodule

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 process

Les éléments process servent à exécuter les actions permettant d'effectuer les opérations nécessaires au fonctionnement du module suite à son installation.

programs/app_post

Prototype :

  • programs/app_post <APPNAME> I|U

Utilisable dans les phases :

  • post-install
  • post-upgrade

Conditions d'utilisation :

  • Dans la phase post-install, le programme doit être exécuté avec le programme record_application
  • Dans la phase post-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 :

  • Le nom de l'application (le script exécuté sera alors <APPNAME>_post)
  • 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>
programs/record_application

Prototype :

  • programs/record_application <APPNAME>

Utilisable dans les phases :

  • post-install
  • post-upgrade

Conditions d'utilisation :

  • Le programme doit être exécuté après le programme 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" />
programs/update_catalog

Prototype :

  • programs/update_catalog

Utilisable dans les phases :

  • post-install
  • post-upgrade

Conditions d'utilisation :

  • Le programme doit être exécuté à la fin de la phase

Le programme update_catalog est utilisé pour ré-générer le catalogue des messages de localisation.

Exemple :

  <process command="programs/update_catalog" />
programs/pre_migation

Prototype :

  • programs/pre_migration

Utilisable dans les phases :

  • post-upgrade

Conditions d'utilisation :

  • Le programme doit être exécuté au début de la phase, avant le programme 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" />
programs/post_migation

Prototype :

  • programs/post_migration

Utilisable dans les phases :

  • post-upgrade

Conditions d'utilisation :

  • Le programme doit être exécuté après le programme 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" />
./wsh.php

Prototype :

  • ./wsh.php

Utilisable dans les phases :

  • post-install
  • post-upgrade

Conditions d'utilisation :

  • Le programme peut être utilisé à n'importe quel moment en fonction des besoins

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" />
Programmes personnalisés

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 :

  • WIFF_ROOT : Le chemin du répertoire ou est installé DYNACASE-CONTROL (c'est donc aussi le répertoire courant ($CWD) dans lequel sera exécuté votre programmes)
  • WIFF_CONTEXT_ROOT : Le chemin du répertoire du contexte sur lequel est effectué l'opération.
  • WIFF_CONTEXT_NAME : Le nom du contexte sur lequel est effectué l'opération.
Ecrire un programme personnalisé en shell Bash

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
Ecrire un programme personnalisé en PHP

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]

Générer le fichier .webinst

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.

Importation de module

Préambule

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.

Installation d'un paquet

Rendez-vous sur l'interface Dynacase-control et positionnez vous dans le contexte pour lequel vous souhaitez importer le paquet.

bouton d'import de 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.



Liste des dépôts

Créer son propre dépôt de paquets

  • Mettre ses paquets `.webinst' dans un répertoire accessible par HTTP ou FTP (ex. `/var/www/my-dynacase-repo')
  • Générer l'index `content.xml' de ce répertoire à l'aide de la commande wiff CLI :
$ wiff mkrepoidx /var/www/my-dynacase-repo
$ cat /var/www/my-dyncase-repo/content.xml

Miroir local des paquets

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.

  • Dynacase-Control > Setup
  • Repositories > “freedom” > Modify
    • Protocol : [http]
    • Host : [localhost]
    • Path : [/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/"/>
[...]

Ligne de commande

Mode CLI

Le CLI permet d'administrer le Dynacase-control en ligne de commande.

Utilisation

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').

Commandes

Lister les contextes existants

Syntaxe
list context [--pretty]
Description

Cette opération permet d'afficher les contextes installés.

Exemple
# /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

Manipuler les modules du contexte

Lister les modules installés
Syntaxe
context <context-name> module list installed [--pretty]
Description

Cette opération affiche les modules installés dans le contexte sélectionné.

Exemple
# /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)
Lister tous les modules disponibles à l'installation
Syntaxe
context <context-name> module list available [--pretty]
Description

Cette opération affiche la liste des modules disponibles sur les dépôt de paquets accessibles par HTTP ou FTP.

Exemple
# /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)
Lister les modules installés ayant une mise-à-jour de disponible
Syntaxe
context <context-name> module list upgrade [--pretty]
Description

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.

Exemple
# /var/www/dynacase-control/wiff context test module list upgrade
freedom-core (2.14.1-12)
freedom (2.14.3-18)
Installer un module
Syntaxe
context <context-name> module install [options] <localPackagePath>
context <context-name> module install [options] <moduleName>
Description

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é.
Exemple

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.

Upgrader un module
Syntaxe
context <context-name> module upgrade [options] <localPackagePath>
context <context-name> module upgrade [options] <moduleName>
Description

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.
Exemple
# /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.

Manipuler les paramètres des modules

Afficher l'ensemble des paramètres d'un ou des modules
Syntaxe
context <context-name> param show [<moduleName>]
Description

Cette opération permet d'afficher la liste des paramètres des modules installés.

Exemple
# /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
Afficher la valeur d'un paramètre d'un module
Syntaxe
context <context-name> param get <module-name>:<param-name>
Description

Cette opération permet d'afficher la valeur d'un paramètre d'un module donné.

Exemple
# /var/www/dynacase-control/wiff context test param get foo:bar
foo:bar = baz
Positionner la valeur d'un paramètre d'un module
Syntaxe
context <context-name> param set <module-name>:<param-name> <param-value>
Description

Cette opération permet de positionner la valeur d'un paramètre d'un module donné.

Exemple
# /var/www/dynacase-control/wiff context <context-name> param set foo:bar buzz
foo:bar = buzz
Exécuter wstop sur un contexte
Syntaxe
wstop <context-name>
Description

Cette opération permet d'exécuter le script historique `wstop' sur un contexte.

Exemple
# /var/www/dynacase-control/wiff wstop test
check update needed (/var/www/test/wcheck)
Exécuter wstart sur un contexte
Syntaxe
wstart <context-name>
Description

Cette opération permet d'exécuter le script historique `wstart' sur un contexte.

Exemple
# /var/www/dynacase-control/wiff wstart test
Exécuter whattext sur un contexte
Syntaxe
whattext <context-name>
Description

Cette opération permet d'exécuter le script historique `whattext' sur un contexte.

Exemple
# /var/www/dynacase-control/wiff whattext test

Administration système

Ouvrir un shell sous l'uid Apache
Syntaxe
context <context-name> shell
context <context-name> exec  <command> [<command-options>]]
Description

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).
Exemple
# /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 .
(PROPOSITION) Sauvegarde de Dynacase-control
Syntaxe
archive [--to <directory>] [--prefix <prefix>]
Description

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 :
    • `%d', `%M', etc. comme les éléments de `strftime()' (Voir strftime)
Exemple
(PROPOSITION) Sauvegarde d'un contexte
Syntaxe
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>]

Description

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 :
    • `%d', `%M', etc. comme les éléments de `strftime()' (Voir strftime)
Exemple

Gestions de contextes

Version 0.8

Archivage de contextes

Introduction

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).

Création d'une archive

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.

L'exclusion de coffre n'est utilisable que sur les version de freedom supérieur ou égale à 3.0.11

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

Création d'un contexte à partir d'une 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

Gestion des contextes

Paramétrage

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.

Suppression

La suppression de contexte est désormais disponible (Dynacase-control>=1.0.0).

Suppression par le cli

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 ~]$
Suppression par l'interface

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é:

Pour une suppression définitive de tout les éléments liés au contexte, il vous restera à supprimer la base de donnée, et supprimer les informations du pg_service.conf liées au contexte manuellement.

1) nous préconisons la 8.4 (dernière stable), le fonctionnement est identique avec les 2 versions
wiff.txt · Dernière modification: 04/04/2011 11:05 par eric