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.

modules/dynacase-te/installation.txt · Dernière modification: 24/01/2012 09:25 par marc