SCENARIserver Linux
SCENARIserver doit être installé comme une webapp dans un serveur de servlet comme Tomcat.
Cette webapp peut soit partager un serveur de servlets avec d'autres applications, soit être installée dans un serveur dédié.
| Attention ! |
|---|
Cette page décrit l'installation des versions 3.5 à 3.7 de SCENARIserver UNIQUEMENT. Pour les versions précédentes veuillez vous reporter aux pages ci-dessous:
|
Pré-requis systèmes d’exploitation
Expériences avec :
- debian 6 (tomcat 6)
- ubuntu 10.04 + (tomcat 6)
- redhat 5.2 (Jbos)
Création d'un SCENARIserver dédié
SCENARIserver & OpenOffice
SCENARIserver doit se connecter à OpenOffice pour plusieurs types de générations or il existe 2 modes d'affichage pour OpenOffice :
- le mode normal nécessitant un serveur X;
- le mode headless prenétant à OpenOffice de tourner sans serveurX.
Sur un serveur linux l'installation d'un serveur en mode graphique est plus rare que sous windows, pourtant OpenOffice est plutôt prévu pour l'utiliser. Il y a 3 possibilités de fonctionnement :
- Installation d'un serveur Xorg avec une vrai carte graphique et les drivers de celle-ci : c'est le mode qui ressemble le plus a l'utilisation traditionnel d'OpenOffice.org, sans problème connu;
- Installation d'un serveur Xorg-xvfb : le mode "X virtual frame buffer" proposer en quelque sorte un driver générique qui fait tourner les applications graphiques sans déclencher d'affichage. Cela n'a pas été observé de manière systématique sur tous les modèles, mais dans certains cas des bugs d'OpenOffice provoquent des crash si ce mode est utilisé, surtout avec la génération de très gros fichiers ODT.
- Exécution d'OpenOffice.org en mode headless : ce mode est en théorie le plus propre et fonctionne sans avoir a "émuler" l'affichage. Avant SCENARIserver 3.6 ce mode est déconseillé car un bug openoffice provoque des fuites mémoires de plusieurs dizaines de MO à chaque génération (confirmé pour OOo 3.2.1 : bug 105191). A partir de SCENARIserver 3.6 il est possible de paramétrer ce mode, SCENARI relance alors périodiquement et automatiquement OpenOffice pour palier à ce bug.
Prérequis
- Téléchargez les constituants du serveur:
- Java : SCENARIserver doit tourner dans une JVM de SUN, JDK/JRE version 5 ou 6 ou OpenJDK version 6. SCENARIserver EST INCOMPATIBLE avec gij (GNU Interpreter for Java).
Vous pouvez utiliser ceux proposés par votre distribution ou bien téléchargez la JRE 1.5 ou 1.6 de SUN (prendre Linux (self-extracting file)) - Serveur d'application : Téléchargez le serveur de servlet tel que Tomcat (ou éventuellement jetty à la place, plus léger mais sur lequel nous avons fait moins de tests)
- imagemagick : SCENARIserver 3.4 et supérieurs utilisent ImageMagick pour effectuer les conversions d'image. Vous pouvez utiliser la version d'ImageMagick propre à votre distribution Linux (c'est un outil très courant), pour vérifier s'il est installé tapez "convert" dans un shell, sinon passez par l'outil d'installation de package de votre distribution pour l'obtenir.
- SCENARIserver : Téléchargez SCENARIserver depuis le site de scenari-platform.org.
- Elements optionnels :
- Polices : pour certains modèles de document ou pour intégrer des ressources openoffice, il est vivement recommandé d'installer le package "msttcorefonts" de votre distribution linux.
- LaTeX : certains modèles documentaires permettent d'intégrer des formules mathématiques en LaTeX, reportez-vous sur cette page pour plus d'informations.
- Java : SCENARIserver doit tourner dans une JVM de SUN, JDK/JRE version 5 ou 6 ou OpenJDK version 6. SCENARIserver EST INCOMPATIBLE avec gij (GNU Interpreter for Java).
- SCENARIserver doit se connecter à OpenOffice pour plusieurs types de générations or par défaut OpenOffice à besoin d'un serveur X pour fonctionner.
- Assurez vous d'avoir OpenOffice d'installé, par ailleurs assurez vous que OpenOffice se lance bien sous le login choisi pour SCENARIserver (dans notre exemple SCENARIserver sera lancé en temps que root)
- Si vous optez pour un usage de Xorg-xvfb pour faire fonctionner OpenOffice, assurez vous d'avoir xvfb d'installé (xvfb est disponible pour la majorité des distributions Linux).
Construction du serveur
Dans cet exemple nous allons installer SCENARIserver dans le dossier /opt qui est l'endroit usuelle pour l'installation d'éléments extérieurs à la distribution Linux.
- créez le dossier /opt/SCENARIserver/
[root@myserver ~]# mkdir /opt/SCENARIserver [root@myserver ~]# cd /opt/SCENARIserver [root@myserver SCENARIserver]#
- installez la JRE de SUN dans /opt/SCENARIserver/jre
[root@myserver SCENARIserver]# cp /home/sam/downloads/jre-1_5_0_10-linux-i586.bin . [root@myserver SCENARIserver]# chmod u+x jre-1_5_0_10-linux-i586.bin [root@myserver SCENARIserver]# ./jre-1_5_0_10-linux-i586.bin Sun Microsystems, Inc. Binary Code License Agreement ... Done. [root@myserver SCENARIserver]# mv jre1.5.0_10/ jre [root@myserver SCENARIserver]# rm -f jre-1_5_0_10-linux-i586.bin
- décompressez Tomcat dans /opt/SCENARIserver/tomcat
[root@myserver jre]# cd .. [root@myserver SCENARIserver]# cp /home/sam/downloads/apache-tomcat-6.0.10.zip . [root@myserver SCENARIserver]# unzip apache-tomcat-6.0.10.zip [root@myserver SCENARIserver]# mv apache-tomcat-6.0.10 tomcat [root@myserver SCENARIserver]# rm -f apache-tomcat-6.0.10.zip [root@myserver SCENARIserver]# chmod a+x /opt/SCENARIserver/tomcat/bin/*.sh
- Intégrez SCENARIserver dans les scripts de démarrage de Linux pour en faire un service.
Créez le script de démarrage /etc/init.d/SCENARIserver avec le contenu précisé ici - Si vous comptez utiliser le serveur X xvfb, intégrez-le dans les scripts de démarrage de Linux pour en faire un service. Cette étape n'est pas nécessaire si vous allez paramétrer le mode headless pour OpenOffice.
Créez le script de démarrage /etc/init.d/xvfb avec le contenu précisé ici
Paramétrage du système d'exploitation
Problèmes de mémoire
L'application SCENARIserver est amené à exécuter des applications tierces (OpenOffice, convert etc).
L'implémentation sous Unix (Linux, bsd etc) de JAVA à un limitation sérieuse qui dicte que lorsqu'un processus Java démarre un nouveau processus (effectue un fork), le système doit avoir au moins la même quantité de mémoire disponible que la quantité occupé par le processus Java.
Exemple : si le processus Java de SCEANRIserver utilise 900MB de mémoire, au moment ou SCENARI démarre l'application convert pour redimensionner un image, il faut que le système dispose d'au moins 900MB de mémoire allouable (RAM et swap confondu).
Les 900MB supplémentaires ne seront jamais réellement alloués (convert utilise en moyenne 3MB) mais pendant un cours instant il faut qu'ils soient présents.
Si l'OS ne dispose pas d'assez de mémoire l'exception suivante est levée :
java.io.IOException: java.io.IOException: Cannot allocate memory at java.lang.UNIXProcess.<init>(UNIXProcess.java:148) at java.lang.ProcessImpl.start(ProcessImpl.java:65) at java.lang.ProcessBuilder.start(ProcessBuilder.java:451) at java.lang.Runtime.exec(Runtime.java:591) at java.lang.Runtime.exec(Runtime.java:464)
c.f. les pages suivantes qui exposent le problème :
- http://developers.sun.com/solaris/articles/subprocess/subprocess.html
- http://stackoverflow.com/questions/209875/from-what-linux-kernel-libc-version-is-java-runtime-exec-safe-with-regards-to-m
- http://www.coderanch.com/t/419196/Java-General/java/there-any-way-execute-Linux
Contournement du problème : ajouter de la mémoire swap
Une solution à ce problème est simplement d'ajouter de la mémoire swap supplémentaire, en générale d'au mois la quantité de mémoire alloué au processus Java.
La procédure suivante ajoute un fichier de swap supplémentaire de 1Gb :
- Dans notre exemple on ajoute un ficher vide dans "/" :
$ sudo dd if=/dev/zero of=/swap.img bs=1024k count=1024
- Le formater en swap :
$ sudo mkswap /swap.img
- Ajouter le swap au système en cours d'exécution :
$ sudo swapon /swap.img
- Vous pouvez ajouter ce fichier à fstab pour qu'il soit ajouté automatiquement au démarrage :
$ sudo nano /etc/fstab
Ajouter la ligne suivante à la fin du fichier/swap.img none swap sw 0 0
Problèmes de nombre de fichiers ouverts simultanément
L'application SCENARIserver est amené à ouvrir un grand nombre de fichier simultanément.
Par défaut Linux impose une limite au nombre de fichiers ouvrable par un même utilisateur, en général cette limite est de 1024 fichiers.
Il convient donc d'augmenter cette limite pour l'utilisateur qui fait tourner la JVM de Tomcat sinon vous risquez de tomber sur l'erreur Java "Too many open files".
Pour Debian/Ubuntu :
Pour monter cette limite à 4096 :
- ouvrez le fichier /etc/security/limits.conf et ajoutez les lignes :
<user> soft nofile 4096 <user> hard nofile 4096
ou <user> est l'utilisateur qui doit faire tourner SCENARIserver. - indiquez au Kernel qu'il doit recharger sa configuration :
#sysctl -p
- activez la prise en compte des limites de /etc/security/limits.conf par PAM :
Ouvrez le fichier /etc/pam.d/su et décommentez la ligne :session required pam_limits.so
- Au prochain démarrage de SCENARIserver le nombre maximal de fichiers ouverts simultanément doit être de 4096.
c.f. les pages suivantes :
- http://ubuntuforums.org/showthread.php?t=902873
- http://lj4newbies.blogspot.com/2007/04/too-many-open-files.html
Paramétrage de tomcat
Veuillez consulter cette page.
Construction de la webapp SCENARIserver
- créez un dossier temporaire /tmp/scservinstall
[root@myserver init.d]# mkdir /tmp/scservinstall [root@myserver init.d]# cd /tmp/scservinstall [root@myserver scservinstall]#
- décompressez SCENARIserver
[root@myserver scservinstall]# cp /home/sam/downloads/SCENARIserver_X.Y.Z_lin.tar.gz . [root@myserver scservinstall]# tar xzf SCENARIserver_X.Y.Z_lin.tar.gz [root@myserver scservinstall]# cd SCENARIserver_X.Y/
- éditez le fichier build.property et paramétrez le pour correctement pour votre serveur.
A minima il faut renseigner server.webapp.name et server.work.path :- server.webapp.name : nom de la webapp SCENARI dans le serveur d'application
- server.work.path : chemin complet vers le dossier de travail de SCENARI (stockage des ateliers, etc)
- server.url : url publique du serveur, seulement utile si le serveur est derrière un proxy
- server.log.path : chemin complet vers le fichier de log de SCENARI, par défaut celui-ci sera écrit à la racine de server.work.path.
- server.appExt* : chemins vers les applications externes. Si vous voulez utiliser les versions proposés par votre distribution (option conseillé) et déjà présentes sur votre PATH, vous pouvez mettre ses lignes en commentaire. Si vous voulez utiliser les versions packagés avec SCENARIserver et présents dans le dossier nativlib, adaptez ces chemins vers l'emplacement final du dossier nativlib. (c.f. "Déploiement de la webapp SCENARIserver" plus bas). Par exemple /opt/SCENARIserver/nativlib/...
[root@myserver SCENARIserver_X.Y]# nano build.property ...
- si vous voulez utiliser le mode headless de OpenOffice, paramétrez-le dans le fichier build.conf.properties.xml
Dé-commentez "paramétrage d'un pool de connexion OpenOffice" puis adaptez l'attribut profilePath de ooConnection à votre contexte.Conseil Il est possible de paramétrer SCENARIserver pour lancer plusieurs instances de OpenOffice en même temps, ceci est uniquement utile dans le cas ou un grand nombre d'utilisateurs de SCENARIserver doivent effectuer des générations concurrentes. OpenOffice à besoin d'un lieu de stockage de sont profile, celui-ci contient des données temporaires dans notre cas, mais doit être unique pour chaque instance de ooConnection par exemple :file:///tmp/scserverXY_oo1
- posez le variable d'environnement JAVA_HOME
[root@myserver SCENARIserver_X.Y]# export JAVA_HOME=/opt/SCENARIserver/jre
- exécutez le script de génération de la webapp:
[root@myserver SCENARIserver_X.Y]# ./buiWebApp.sh Compilation, scserver ... BUILD SUCCESSFUL Total time: 1 second
Vous allez obtenir un fichier SCENARIserverX.Y.war qu'il faut maintenant déployer dans Tomcat.
Déploiement de la webapp SCENARIserver
- Copier/coller le contenu du répertoire /tmp/scservinstall/SCENARIserver_X.Y/libext vers /opt/SCENARIserver/tomcat/lib (pour une version de Tomcat inférieure à 6 vers /opt/SCENARIserver/tomcat/common/lib)
[root@myserver SCENARIserver_X.Y]# cp libext/* /opt/SCENARIserver/tomcat/lib
- Créez le dossier de travail de la webapp SCENARIserver (spécifié dans le fichier build.property, server.work.path), dans notre exemple celui-ci sera /var/opt/SCENARIserverX.Y
[root@myserver SCENARIserver_X.Y]# mkdir -p /var/opt/SCENARIserverX.Y
- copier/coller le contenu du répertoire /tmp/scservinstall/SCENARIserver_X.Y/data dans le dossier /var/opt/SCENARIserverX.Y
[root@myserver SCENARIserver_X.Y]# cp -R /tmp/scservinstall/SCENARIserver_X.Y/data/* /var/opt/SCENARIserverX.Y
- Gestion des librairies natives
- Si vous voulez utiliser les librairies natives packagés avec SCENARIserver, déplacez le dossier contenant les librairies natives /var/opt/SCENARIserverX.Y/nativlib vers l'emplacement défini dans le fichier build.property. Par exemple le dossier d'installation du serveur /opt/SCENARIserver
[root@myserver SCENARIserver_X.Y]# mv /var/opt/SCENARIserverX.Y/nativlib /opt/SCENARIserver
Assuez-vous que les librairies natives sont bien exécutables :[root@myserver SCENARIserver_X.Y]# chmod a+x /opt/SCENARIserver/nativlib/*
- Si vous voulez utiliser les version proposés par votre distribution, supprimez le dossier /var/opt/SCENARIserverX.Y/nativlib.
[root@myserver SCENARIserver_X.Y]# rm -Rf /var/opt/SCENARIserverX.Y/nativlib
- Si vous voulez utiliser les librairies natives packagés avec SCENARIserver, déplacez le dossier contenant les librairies natives /var/opt/SCENARIserverX.Y/nativlib vers l'emplacement défini dans le fichier build.property. Par exemple le dossier d'installation du serveur /opt/SCENARIserver
- changez éventuellement le mot de passe admin : dans le fichier /var/opt/SCENARIserverX.Y/users/ac/admin/acdef.xml
- Copier/coller le fichier /tmp/scservinstall/SCENARIserver_X.Y/SCENARIserverX.Y.war vers /opt/SCENARIserver/tomcat/webapps/
[root@myserver SCENARIserver_X.Y]# cp SCENARIserverX.Y.war /opt/SCENARIserver/tomcat/webapps/
Vous êtes maintenant prêt pour tester votre nouveau serveur :
- démarrez le service xvfb :
[root@myserver SCENARIserver_X.Y]# /etc/init.d/xvfb start Starting Virtual Frame Buffer X Server (Xvfb) as local display :1.0
- démarrez le service SCENARIserver avec la commande /etc/init.d/SCENARIserver start
[root@myserver SCENARIserver_X.Y]# /etc/init.d/SCENARIserver start Starting SCENARIserver service: Using CATALINA_BASE: /opt/SCENARIserver/tomcat Using CATALINA_HOME: /opt/SCENARIserver/tomcat Using CATALINA_TMPDIR: /opt/SCENARIserver/tomcat/temp Using JRE_HOME: /opt/SCENARIserver/jre [ OK ] - testez la connection à la webapp dans un navigateur en tapant l'URL http://127.0.0.1:8080/SCENARIserverX.Y/s/chain/u/ping et en vous identifiant comme admin. Si vous arrivez sur une page totalement blanche, c'est bon, le serveur doit marcher, si vous avez une exception, quelque-chose cloche dans l'installation.
- Utilisation : Dans SCENARIchain ou SCENARIclient ajoutez un serveur distant d'adresse http://myserver:8080/SCENARIserverX.Y par exemple.
Pour la première connexion ou si vous avez perdu le mot de passe, vous pouvez éditer le fichier à la main sur le serveur : <server.work.path>/users/ac/admin/acdef.xml
| Attention ! |
|---|
Les fichiers de mot de passe des utilisateurs sur SCENARIserveur ne sont pas cryptés. Si des personnes risquent d'avoir accès aux fichiers dans le workpath du serveur, modifiez les permissions du répertoire et évitez de ré-utiliser des mots de passe protégeant d'autres accès. |
Installation de SCENARIserver par des packets deb
| Attention ! |
|---|
Cette manière d'installer SCENARIserver est actuelement expérimental mais doit marcher à partir de Debian Squeeze ou Ubuntu 10.04. |
| Conseil |
|---|
Cette manière d'installer SCENARIserver n'est peut-être pas adapté quand vous avez besoin d'une version spécifique de SCEANRIserver. |
- Ajoutez le dépôt scenari-platform.org à votre liste de sources (c.f. InstallLinux)
- Installez le paquet scenariserver3.7-tomcat6, celui-ci doit automatiquement installer toutes les dépendances.
- Paramétrages suplémentaires:
- Adaptez la quantité de RAM aloué à Tomcat dans le fichier /etc/default/tomcat6.
- Si votre Tomcat utilisera un pourcentage important de la RAM disponible vous devez adapter la quantité de swap disponible.
- Si vous devez installer plusiers webapps SCENARI vous devez permettre le partage de OpenOffice dans le paramétrage de tomcat.
- Eléments optionnels :
- LaTeX : certains modèles documentaires permettent d'intégrer des formules mathématiques en LaTeX, reportez-vous sur cette page pour plus d'informations.
- Il est nécessaire de relancer Tomcat une fois l'installation fini :
# service tomcat6 restart
- Installez SCENARIclient (ex: paquet scenariclient3.7.fr-fr) et connectez-vous à votre nouveau serveur : http://localhost:8080/scenariserver3.7 avec le login "admin" et le mot de passe "test".
Procédure testé avec succès le 14/03/2011 sur une Debian Squeeze vierge (c.f. logs)
Procédure d'installation sur un serveur Tomcat existant
- Télécharger SCENARIserver
- Installer openoffice.org 3.x.x), vérifier qu'il s'exécute correctement
- Ajoutez la ligne suivante dans votre script de démarrage tomcat : "export OOO_DISABLE_RECOVERY=1" (pour éviter que les générations ne soit bloquées par des boites de dialogues de récupérations de fichier, comme expliqué dans : http://wiki.services.openoffice.org/wiki/Environment_Variables)
- Décompresser le tarball
- Construction de la web APP
- Assurez-vous qu'une JVM 1.5 de SUN et que ant sont correctement installés sur la machine. Les variables d'environnement suivantes doivent être définies : JAVA_HOME, JAVA_OPTS = -Xmx1500M -Xms1500M -verbose:gc ;
- Anciennes config (si vous n’utilisez pas convert) : Il est trés fortement conseillé d'installer JAI dans cette JVM : https://jai.dev.java.net/binary-builds.html;
- Paramétrer le fichier build.property (en particuler l'adresse du serveur et le path du dossier nativelib - applications tierces);
- exécuter le script de gérération de la WEB APP: "buiWebApp.sh"
- Déploiement
- Assurez vous de de la présence de Tomcat 5.5+ et d'une JVM1.5;
- Installez un serveur X, et exécutez le, ou lancez le a partir des scripts de démarrage de la machine : Xvfb, disponible dans la pluspart des distributions, marche très bien. Voir ici pour le mettre en service
(attention, si vous utilisez un Login Manager, ca ne marchera pas, mais vous pouvez en lancer un 2eme par exemple avec la commande "Xorg :1" pour utiliser le DISPLAY no 1, par défaut c'est 0) - Assurez vous que dans le script de démarrage de tomcat contiennent positionne la variable d'environnement DISPLAY (voir ci dessus : servicetomcat)
- Installer la WebAPP dans Tomcat;
- Copier/coller le contenu du répertoire "libext" dans le répertoire "lib" de Tomcat (pour toute version de Tomcat inférieure à 6 le dossier lib se trouve dans un dossier "common" à la racine de Tomcat);
- Copier/coller le contenu du répertoire "data" dans le réperoire spécifié dans la properties "server.work.path" (changer éventuellement le password admin : dans users/ac/admin/acdef.xml);
- Relancer Tomcat;
- Tester le ping : http://127.0.0.1:8080/SCENARIserverX.Y/s/chain/u/ping; (admin/test)
- Utilisation
- Dans SCENARIchain ou SCENARIclient ajoutez un serveur distant d'adresse http://192.168.2.101:8080/SCENARIserverX.Y par exemple (selon la config définie dans build.property).
Compléments
Attachments
-
install-scserver37-deb-debian6.log
(56.9 KB) -
added by sam 11 months ago.
Log de l'installation de SCENARIserver3.7 sous Debian Squeeze en utilisant le dépôt scenari-platform.org