JasperReports server 3.7.1 sous Tomcat 6
========================================
Ce guide vous indique la marche a suivre pour installer JasperServer 3.7.1 avec PostgreSQL sous Tomcat 6. cette installation a été testé sous
* Debian 6.0 (Squeeze)
* Ubuntu 9.10 (Karmic Koala)
* Ubuntu 10.04 (Lucid Lynx)
Fichiers sources
----------------
Il faut recuperer les sources suivants
* Archive de `JasperServer `_ (fichier jasperserver-ce-3.7.1-bin.zip)
* Driver `JDBC `_ pour PostgreSQL
Installation des paquets
------------------------
Java
^^^^
En premier nous devons installer le JDK de java en version 6
.. code-block:: bash
apt-get install sun-java6-jdk
Tomcat
^^^^^^
Ensuite il faut installer Tomcat 6.0
.. code-block:: bash
apt-get install tomcat6
PostgreSQL
^^^^^^^^^^
Installation de PostgreSQL 8.4
.. code-block:: bash
apt-get install postgresql-8.4
Configuration
-------------
PostgreSQL
^^^^^^^^^^
Nous devons nous connecter en tant qu'utilisateur **postgres** pour effectuer les opérations d'administration
.. code-block:: bash
$ sudo su - postgres
En tant qu'utilisateur **postgres**, nous devons créer un utilisateur ainsi qu'une base de données
.. code-block:: bash
# En premier l'utilisateur
$ createuser -S -D -R -P -E jasperserver
Saisissez le mot de passe pour le nouveau role :
Saisissez le a nouveau :
# Ensuite la base de donnees
$ createdb -E UTF-8 -O jasperserver jasperserver "BDD pour jasper server"
Si vous souhaitez utiliser la BI avec JasperServer il sera utile d'avoir un base de données propre pour l'extraction du cube OLAP afin de ne pas pénaliser la base de production. Pour cela nous utiliserons un utilisateur et une base de données séparés.
.. code-block:: bash
# En premier l'utilisateur
$ createuser -S -D -R -P -E jasperanalysis
Saisissez le mot de passe pour le nouveau role :
Saisissez le a nouveau :
# Ensuite la base de donnees
$ createdb -E UTF-8 -O jasperanalysis jasperanalysis "BDD pour la BI"
Jasper Server
^^^^^^^^^^^^^
Décompresser l'archive jasperserver-ce-3.7.1-bin.zip
.. code-block:: bash
unzip jasperserver-ce-3.7.1-bin.zip
Avant de poursuivre, il faut stopper le service Tomcat
.. code-block:: bash
invoke-rc.d tomcat6 stop
et position la variable d'environnement **JAVA_HOME**
.. code-block:: bash
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre/
Dans le dossier buildomatic de l'archive décompressée, je trouve la commande **js-ant** c'est a partir de celle ci que nous allons effectuer toutes les manipulations.
Nous allons créer le fichier **default_master.properties** a partir d'un des 2 exemples (prendre celui de PostgreSQL)
.. code-block:: bash
cd jasperserver-ce-3.7.1-bin/buildomatic/
cp ./sample_conf/inst-postgresql_master.properties ./default_master.properties
modifier les lignes ci-dessous en les dé-commentant ou les modifiant
.. code-block:: ini
appServerType = tomcat6
appServerDir = /var/lib/tomcat6
# database type
dbType=postgresql
# database location and connection settings
dbHost=localhost
dbUsername=jasperserver
dbPassword=jasperserver
# JasperServer db name, sample db names
js.dbName=jasperserver
# web app name
# (set one of these to deploy to a non-default war file name)
webAppNameCE = jasperserver
Après avoir modifier les paramètres ci-dessus, il faut exécuter les commande ci-dessous (et dans cet ordre)
.. code-block:: bash
# initialisation de la base de données
./js-ant init-js-db-ce
# Import des droits et config minimal en base
./js-ant import-minimal-ce
# Déploiemennt de l'application
./js-ant deploy-webapp-ce
ensuite il faut créer un lien symbolique dans le répertoire **/etc/tomcat6/Catalina/localhost/** vers le fichier de context
.. code-block:: bash
cd /etc/tomcat6/Catalina/localhost
ln -s /var/lib/tomcat6/webapps/jasperserver/META-INF/context.xml ./jasperserver.xml
Il faut ensuite ajouter des droits de lecture sur le fichier de propriétés, et y ajouter dans la partie
.. code-block:: bash
vi /etc/tomcat6/policy.d/04webapps.policy
.. code-block:: text
grant {
// Permission for JasperServer
permission java.io.FilePermission "/var/lib/tomcat6/webapps/jasperserver/WEB-INF/classes/logging.properties", "read";
};
Il faut editer ensuite le fichier
.. code-block:: bash
vi /etc/tomcat6/policy.d/50user.policy
.. code-block:: text
grant codeBase "file:var/lib/tomcat6/webapps/jasperserver/-" {
permission java.security.AllPermission;
};
Pour que le fichier de log se mettent dans le dossier **/var/log/tomcat6** au lieu de **WEB-INF/logs**,
il faut éditer le fichier **WEB-INF/log4j.properties** et modifier ces lignes en mettant ceci (le dossier /var/log/tomcat6 appartient déjà à l'utilisateur tomcat)
.. code-block:: ini
# pour le log principal
log4j.appender.fileout.File=/var/log/tomcat6/jasperserver.log
# Pour tracer les requetes de jasper analysis
log4j.appender.jasperanalysis.File=/var/log/tomcat6/jasperanalysis.log
Ajout des droits de l'utilisateur tomcat6 au dossier jasperserver
.. code-block:: bash
chown -R tomcat6:root /var/lib/tomcat6/webapps/jasperserver/
Installer le driver PostgreSQL (postgresql-8.1-407.jdbc3.jar fournit dans l'archive jasper) dans /usr/share/tomcat6/lib
Il faut également désactiver un paramètre de sécurité, pour cela ouvrer le fichier /etc/default/tomcat6 et ajouter ceci à la fin
.. code-block:: text
# Modification des réglages pour JasperReport Server
TOMCAT6_SECURITY=no
pour que la machine virtuelle puisse charger toutes les classes, il faut augmenter certains paramètres mémoires, mais également remplacer des packages par d'autres
.. code-block:: text
# Modification pour JasperServer
JAVA_OPTS="-Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512M"
JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.MessageFactory=org.apache.axis.soap.MessageFactoryImpl"
JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.SOAPConnectionFactory=org.apache.axis.soap.SOAPConnectionFactoryImpl"
JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.SOAPFactory=org.apache.axis.soap.SOAPFactoryImpl"
JAVA_OPTS="$JAVA_OPTS -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpli"
Ensuite il faut redémarrer le serveur Tomcat
.. code-block:: bash
invoke-rc.d tomcat6 start
Troubles et résolution
----------------------
Erreur: net/sf/jasperreports/engine/fill/JRExtendedIncrementerFactory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Le serveur n'a pas assez de mémoire pour charger toutes les classes
Assuré vous que le fichier /etc/default/tomcat6 prenne bien en compte les paramètres mémoires.
Message d'erreur
^^^^^^^^^^^^^^^^
Si vous obtenez ce message **jsexception.error.creating.connection** vous avez un problème d'accès à la base de données.
Noyau Linux GR Security
^^^^^^^^^^^^^^^^^^^^^^^
Si vous rencontrez des problèmes avec un noyau Linux GRsec, passer à un noyau standard.