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.
- créez le dossier /opt/SCENARIserver/
[root@myserver ~]# mkdir /opt/SCENARIserver [root@myserver ~]# cd /opt/SCENARIserver [root@myserver SCENARIserver]#
- (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
- 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
- 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 :
- 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_xxx.tar.gz . [root@myserver scservinstall]# tar xzf SCENARIserver_xxx.tar.gz [root@myserver scservinstall]# cd SCENARIserver_X.Y/
- é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 ...
- 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
- posez si besoin la 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]# ./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
- 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 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
- 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 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
- 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
- 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 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.
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. |
- 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
-
install-scserver37-deb-debian6.log
(56.9 KB) -
added by sam 2 years ago.
Log de l'installation de SCENARIserver3.7 sous Debian Squeeze en utilisant le dépôt scenari-platform.org