wiki:InstallServerLinux

SCENARIserver Linux

SCENARIserver doit être installé comme une webapp dans un serveur de servlet comme  Tomcat.

Attention !

Cette page est en cours de refonte et décrit l'installation des versions 4.0 et plus 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 et 7)
  • Redhat 5.2 (Jbos, Tomcat 6)

Remarques sur la sécurité pour SCENARIserver 4.0

Sécurité des accès

Dans la version 4.0, une limite est identifiée dans le contrôle des permissions, sur le serveur : un utilisateur connecté et authentifié peut bénéficier d'une élévation de privilèges non souhaitée. L'utilisateur doit avoir des compétences en informatique pour commettre cet acte qui serait sciemment malveillant. Les versions 3.7 ne sont pas affecté par ce problème, et la limite sera corrigée dans une prochaine version.

Préservation des données et sauvegardes

Depuis la version 4 de SCENARIserver, deux branches de SCENARIserver sont proposées :

  • SCENARIserverLight : les fichiers de contenu utilisateur sont enregistrés sur le disque dur du serveur sous la même forme que leur vue dans l'atelier. Les backups sont facile à mettre en place : il suffit de sauvegarder tout le workpath, on peut même reprendre ces fichiers pour les déposer dans un SCENARIchain "offline".
  • SCENARIserver (beta) : les fichiers de contenu utilisateur sont enregistrés dans un ensemble de fichiers binaires, tel une base de donnée. Les backups doivent respecter des procédures précises, avec lancement de scripts pour s'assurer de l'état "stable" de la base lors de la copie. Une sauvegarde sans ces scripts récupérerait une base potentiellement en cours d'écriture, et donc inexploitable. Notez aussi que pour cette version "beta", il n'est pas impossible que des bugs soient découvert y compris sur l'enregistrement des données, de bonnes procédures de sauvegardes sont donc indispensables.

Si vous manquez de temps "administrateur système", et que vous pouvez vous passer des fonctions collaboratives de SCENARIserver, utilisez plutôt SCENARIserver light.

Création d'un SCENARIserver dédié

Prérequis

Téléchargez les constituants du serveur:

  • Java : SCENARIserver doit tourner dans une JVM de Oracle, JDK/JRE 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écharger la  JRE 1.6 de Oracle - 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). La version 7 de Tomcat est conseillé.
  • 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.
    • OpenOffice : certains modèles documentaires utilisent OpenOffice pour certaines générations.
      A l'heure actuelle seul la version officielle de  OpenOffice 3.3 est supporté par SCENARIserver.

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.

  1. créez le dossier /opt/SCENARIserver/
    [root@myserver ~]# mkdir /opt/SCENARIserver
    [root@myserver ~]# cd /opt/SCENARIserver
    [root@myserver SCENARIserver]# 
    
  2. (Optionnel) Si vous voulez utiliser la JRE d'Oracle, installez-la dans /opt/SCENARIserver/jre
    [root@myserver SCENARIserver]# cp /home/sam/downloads/jre-xxx.bin .
    [root@myserver SCENARIserver]# chmod u+x jre-xxx.bin 
    [root@myserver SCENARIserver]# ./jre-xxx.bin 
    ...
    [root@myserver SCENARIserver]# mv jrexxx/ jre
    [root@myserver SCENARIserver]# rm -f jre-xxx.bin 
    
  3. décompressez Tomcat dans /opt/SCENARIserver/tomcat
    [root@myserver jre]# cd ..
    [root@myserver SCENARIserver]# cp /home/sam/downloads/apache-tomcat-xxx.tar.gz .
    [root@myserver SCENARIserver]# tar xzf apache-tomcat-xxx.tar.gz 
    [root@myserver SCENARIserver]# mv apache-tomcat-xxx tomcat
    [root@myserver SCENARIserver]# rm -f apache-tomcatxxx.tar.gz
    
  4. 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

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

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 :

  1. 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.
  2. indiquez au Kernel qu'il doit recharger sa configuration :
    #sysctl -p
    
  3. 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
    
  4. Au prochain démarrage de SCENARIserver le nombre maximal de fichiers ouverts simultanément doit être de 4096.

c.f. les pages suivantes :

Paramétrage de tomcat

Veuillez consulter cette page.

Construction de la webapp SCENARIserver

  1. créez un dossier temporaire /tmp/scservinstall
    [root@myserver init.d]# mkdir /tmp/scservinstall
    [root@myserver init.d]# cd /tmp/scservinstall
    [root@myserver scservinstall]# 
    
  2. décompressez SCENARIserver
    [root@myserver scservinstall]# cp /home/sam/downloads/SCENARIserver_xxx.tar.gz .
    [root@myserver scservinstall]# tar xzf SCENARIserver_xxx.tar.gz 
    [root@myserver scservinstall]# cd SCENARIserver_X.Y/
    
  3. éditez le fichier conf/main.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.log.path : chemin complet vers le fichier de log de SCENARI, par défaut celui-ci sera écrit à la racine de server.work.path.
      [root@myserver SCENARIserver_X.Y]# nano conf/main.property 
      ...
      
  4. Paramétrez le fichier conf/advanced/server.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

  5. posez si besoin la variable d'environnement JAVA_HOME
    [root@myserver SCENARIserver_X.Y]# export JAVA_HOME=/opt/SCENARIserver/jre
    
  6. exécutez le script de génération de la webapp:
    [root@myserver SCENARIserver_X.Y]# ./makeWar.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

  1. 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
    
  2. Créez le dossier de travail de la webapp SCENARIserver (spécifié dans le fichier main.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
    
  3. 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
    
  4. 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 main.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
      
  5. changez éventuellement le mot de passe admin : dans le fichier /var/opt/SCENARIserverX.Y/users/ac/admin/acdef.xml
  6. 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 :

  1. 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  ]
    
  2. 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.
  3. Utilisation : Dans SCENARIchain ou SCENARIclient ajoutez un serveur distant d'adresse  http://myserver:8080/SCENARIserverX.Y par exemple.

Installation de SCENARIserver par des packets deb

A partir de SCENARI 3.7 des packets SCENARIserver sont proposés dans le dépôt Debian / Ubuntu de scenari-platform.org.

Conseil

Cette manière d'installer SCENARIserver n'est peut-être pas adapté quand vous avez besoin d'une version spécifique de SCENARIserver.
Le dépôt propose soit les version stables, soit les "nightlys" des applications SCENARI qui sont mis à jour très régulièrement et sont donc inadaptés à un usage en production.

  • Ajoutez le dépôt scenari-platform.org à votre liste de sources (c.f. InstallLinux)
  • Installez le paquet  scenariserver4.0-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  scenariclient4.0.fr-fr) et connectez-vous à votre nouveau serveur : http://localhost:8080/scenariserver4.0 avec le login "admin" et le mot de passe "admin".

Compléments

Attachments