Installation de Tomcat 8 sur Synology

Installation de Tomcat 8 sur SynologyCe billet est le premier d’une longue série et se focalise pour le moment uniquement sur l’installation de Tomcat 8 sur Synology, de sa configuration et de l’exposition d’un war Hello World sur Internet grâce à un virtual host. Java 8 sera installé via le système de package tandis que Tomcat sera installé manuellement afin de mieux gérer sa configuration et potentiellement disposer de plusieurs instances.

UPDATE 02/01/2016 : Séparation tomcat et répertoire de déploiement

Installation de Java 8

Le package Java 8 de Synology propose d’installer l’OpenJDK. Dans 99% des cas cette version libre du standard Java SE suffit (il y a au final peu de différences avec le JDK d’Oracle). A contrario de Tomcat, il est préférable d’installer Java 8 via le système de package de Synology puisque nous restons dans le cadre de la configuration globale de la plateforme, nous profiterons ainsi des mises à jour automatiques. L’installation manuelle peut aussi se faire très simplement, pourvu que vos variables d’environnements soient bien configurées.

Par principe, on se connecte en ssh et on vérifie que l’installation c’est bien déroulée :

java -version
openjdk version « 1.8.0_60 »
OpenJDK Runtime Environment
OpenJDK 64-Bit Server VM

Installation de Tomcat 8 sur Synology

Il y a beaucoup d’avantages à installer Tomcat manuellement, cela permet :

  • de disposer de la dernière version (Synology étant peu réactif par rapport aux outils de développement)
  • de garder pleinement la main sur la configuration, sans surcouche de Synology
  • de se mettre à l’abri d’effets de bords indésirables par rapport aux mises à jour de Synology
  • de gérer plusieurs instances de façon homogène

L’idée est d’avoir à terme plusieurs instances de Tomcat, dont la plupart hébergeront une IHM web et seront accessibles depuis Internet. Pour le moment, nous allons faire plus simple et n’installer qu’une seule instance, dans un répertoire « safe » c’est à dire non accessible par le groupe http. Pour la suite on supposera une installation de tomcat dans le dossier partagé /volume1/app/tomcat.

Il faut donc :

  • télécharger tomcat 8
  • décompresser l’archive dans le répertoire partagé /volume1/app/tomcat par exemple

Les archives (war) seront déployées dans les dossiers accessibles par le groupe http afin de rester homogène : tout ce qui est accessible par le web doit être dans ce répertoire web prévu a cet effet. Si vous avez ou prévoyez d’avoir de nombreux sites/sous domaines, je vous conseille de bien organiser ce répertoire. Il y a beaucoup de façon de faire, voila un exemple :

Vérification de l’installation

Une fois connecté en ssh, dans le dossier bin de tomcat, lancer startup.sh. Si vous obtenez le message suivant :

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

C’est certainement que vous étiez déjà connecté en SSH au moment de l’installation de Java 8, vous devez simplement vous reconnecter.

grep JAVA /etc/profile         # variables globales, mises à jour par Synology
JAVA_HOME=/var/packages/Java8/target/j2sdk-image/jre          # Synology Java runtime enviroment
export CLASSPATH PATH JAVA_HOME LANG # Synology Java runtime enviroment
echo $JAVA_HOME
/var/packages/Java8/target/j2sdk-image/jre
./volume1/app/tomcat/bin/startup.sh
Using CATALINA_BASE:   /volume1/web/thorpora/demo/spring
Using CATALINA_HOME:   /volume1/web/thorpora/demo/spring
Using CATALINA_TMPDIR: /volume1/web/thorpora/demo/spring/temp
Using JRE_HOME:        /var/packages/Java8/target/j2sdk-image/jre
Using CLASSPATH:       /volume1/web/thorpora/demo/spring/bin/bootstrap.jar:/volume1/web/thorpora/demo/spring/bin/tomcat-juli.jar
Tomcat started.

Vous devriez pouvoir dès maintenant accéder à votre tomcat via l’ip locale de votre synology : http://192.168.xx.xx:8080.

Installation d’un war Hello World

L’étape suivante est simple, nous allons simplement déployer un war d’exemple et vérifier qu’il est bien accessible, pour le moment juste en local. Par soucis de sécurité nous n’installerons pas ce war directement dans tomcat mais dans un sous répertoire du dossier partagé web, prévu a cet effet. Remplacez les chemin d’accès en fonction de votre configuration.

  • création d’un répertoire web/sample/hello (pour l’exemple)
  • création de la configuration tomcat
    • Créer le fichier configuration : app/tomcat/conf/Catalina/localhost/hello-world.xml
  • télécharger hello-world.war, le copier dans /volume1/web/thorpora/demo/hello
  • extraire l’archive dans le dossier (7z x hello-world.war)
  • vérifier que la web app fonctionne en local : http://192.168.xx.xx:8080/hello-world
war-hello-world

Installation de Tomcat 8 sur Synology

Il est nécessaire d’extraire soit même les fichiers du war (tomcat effectue cette extraction automatiquement uniquement lorsque le war est dans le répertoire webapp de tomcat).

Rendre accessible notre war avec un vhost

L’objectif est maintenant de rendre accessible notre application de démonstration Hello World depuis Internet via demo.thorpora.fr/hello-world. Cela va de soi, vous devez avoir au préalable avoir configuré votre sous domaine chez votre registar pour qu’il pointe vers votre serveur.

Puis dans le répertoire site-enabled, ajouter le vhost suivant :

Je ne conseille pas d’écrire directement vos vhosts dans le répertoire site-enabled, mieux vos faire des liens symboliques de vos vhosts qui doivent être enregistrés en lieu sûr. Cela à notamment comme avantage de s’épargner des changements de configuration inattendus de Synology…

Recharger la configuration Nginx : nginx -s reload

Avec ce fonctionnement, il n’y a besoin d’aucun droit particulier sur le dossier Tomcat, il est donc préférable de retirer tous les droits superflus. Pensez à ne plus utiliser la ligne de commande mais bien l’IHM Synology pour la gestion des ces droits (Synology utilise les ACL Windows et non les droits Unix).

Vous pouvez maintenant tester l’url : https://demo.thorpora.fr/hello-world. L’installation de Tomcat 8 sur Synology est terminée mais vous pouvez allez plus loin pour sa configuration.

Configuration de Tomcat

Pour disposer de paramétrages spécifiques à une instance Tomcat, la solution préconisée est d’ajouter un fichier setenv.sh dans le répertoire bin. Ce fichier, s’il existe, est exécuté automatiquement au démarrage. Il permet notamment :

  • de définir d’autres chemins pour les logs, les fichiers temporaires etc
  • de définir des paramètres de mémoire particuliers

Si vous modifiez des chemins, assurez vous que les répertoires indiqués existent bien. Ci-après un exemple de configuration du fichier setenv.sh :

 Installation de Maven

Certes, cette partie n’a pas vraiment de rapport avec l’installation de Tomcat 8 sur Synology. Mais dès lors que l’on parle de Java, ce n’est qu’une question de temps avant d’avoir besoin de Maven ! N’existant pas de package officiel il faut l’installer manuellement. Vous pouvez décompressez l’archive ou vous souhaitez, j’ai personnellement opté pour la création d’un répertoire partagé dédié à la programmation dans lequel j’ai mis maven.

  • Télécharger maven
  • Décompresser l’archive, par exemple dans /volume1/code/
  • Ajouter les variables globales dans /etc/profile

Vous devez intégrer cette partie avant la dernière ligne car celle-ci exporte la variable PATH. Après (re)connexion en ssh :

mvn -version
Apache Maven 3.3.9

Cette fois c’est terminé pour notre installation de Tomcat 8 sur Synology 🙂 Prochains objectifs : installer des applications comme Jenkins !

6 réponses

  1. Bonjour Yannick.
    Je suis entrain d’essayer d’installer jenkins sur ma machine et je me suis dis que cet article était un bon point de départ.
    J’ai réussi a déployer le war mais je ne trouve pas le répertoire site-enabled. Saurais-tu ou il se trouve ?

    Merci

    Kevin

  2. Yo Kevin ! C’est de la conf, donc dans /etc généralement, ensuite tu utilises nginx il me semble, donc /etc/nginx 🙂
    Après c’est un lien symbolique, donc le répertoire « réel » n’est pas celui-ci mais ça ne change rien du tout.
    Perso dans ce répertoire /etc/nginx/site-enabled j’y mets aussi des liens symboliques vers mes vhosts qui sont ailleurs, je sais plus dans quel article j’en parle.

  1. 2 janvier 2017

    […] comment installer et configurer Jenkins 2 sur Synology. Nous avons vu précédemment comment installer Tomcat 8 sur Synology, je vous recommande d’y jeter un œil puisque nous allons avoir besoin de Java et d’un […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *