Liferay sur un couple Tomcat 6 / Windows Server EE 2003 R2 en 64 bits

J’ai récemment dû installer liferay version 5.2.3 avec du tomcat 6.0.20 en prod sur des machines Windows Server EE 2003 R2 et après pas mal de galères, j’ai décidé qu’un petit post sauverait peut être la vie d’un malheureux ingé qui se retrouverait dans une situation identique.

Premier point, étant donné que c’est de la prod, obligé d’installer le bignou en tant que service, sinon c’est trop facile…

Deuxième point, obligé de mettre une jvm 64 bits, sinon on est limité au niveau du Xmx qu’on peut attribuer. Je ne sais jamais exactement quelle est cette limite qui est finalement bien différente selon les environnements. Dans mon cas, c’était Xmx1146M, inacceptable bien entendu.

Les contraintes étant posées, passons à la solution :

Problème : si vous avez téléchargé tomcat 6 tel quel, c’est la version 32 bits que vous avez, et ça ne fonctionnera pas avec votre jvm 64 bits. Donc il faut récupérer les binaires 64 bits qui sont pour l’instant assez confidentiels mais qu’on peut tout de même récupérer ici : http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_20/res/procrun/amd64/

Donc, armé de ces nouveaux binaires (vous devez écraser les anciens tomcat6.exe et tomcat6w.exe), recommencer la procédure d’installation du service en ayant pris soin de désinstaller le premier si c’est nécessaire (service.bat uninstall prod). Maintenant tout est paré pour que ça marche vous dites vous!!

Sauf que non ce serait bien trop simple. Comme constaté ici : http://www.liferay.com/web/guest/community/forums/-/message_boards/message/3062109, liferay part dans un stack overflow avec cette configuration. 2 solutions s’offrent alors à vous :

  • Passer avec des binaires recompilés qu’on peut trouver ici : http://liferay.cignex.com/palm_tree/book/tomcat6x64/ La c’est la fin des soucis et tout doit normalement rouler.
  • Ou alors vous décidez que prendre des binaires recompilés et non officiels est trop risqué pour vous (pourtant partir sur du windows en prod c’etait déjà risqué mais là on entre dans un autre débat…) et il faut alors utiliser le mode "java" du service au lieu du mode "jvm". Ceci nous amène alors à la partie suivante : Configuration du service.
  • Configuration du service
    Pour configurer votre service tomcat il suffit de renommer votre fichier tomcat6w.exe avec le nom que vous avez donné au service, à savoir prod.exe dans notre exemple. Ensuite double cliquer sur ce fichier et une popup de configuration apparait : windowsTomcatService.png
    Pour ceux qui ont choisi la 1ère solution avec les binaires recompilés, toute la configuraiton se passe dans l’onget Java. C’est le mode "standard".
    Pour ceux qui ont choisi la 2ème solution il faut aller dans l’onglet "Startup" et mettre le mode à "Java" au lieu de "jvm". Ceci provoque que java est appelé directement au lieu de passer par des librairies natives pour démarrer la jvm.
    Attention, ceci doit également être fait dans l’onglet "Shutdown". Ensuite l’ensemble de la configuration doit être mise dans la boite Arguments, en veillant bien à mettre un property par ligne. Voici un exemple de ma configuration finale :

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=5000
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.class.path=D:\front1\tomcat\bin\bootstrap.jar
-Dcatalina.base=D:\front1\tomcat
-Dcatalina.home=D:\front1\tomcat
-Djava.endorsed.dirs=D:\front1\tomcat\endorsed
-Djava.io.tmpdir=D:\front1\tomcat\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\front1\tomcat\conf\logging.properties
-Xrs
-Xms512M
-Xmx1536M
-XX:PermSize=392M
-XX:MaxPermSize=392M
-Dplatform=front1
-Dfile.encoding=UTF-8
-Djavax.net.ssl.trustStore=D:/front1/tomcat/.keystore
org.apache.catalina.startup.Bootstrap
start

Un paramètre peut vous paraitre peu classique dans la conf ci dessus, il s’agit de -Xrs. Ceci a été rajouté pour faire face à un problème (eh oui, encore un !) d’arrêt intempestif du tomcat lors d’une déconnexion de session RDP. Ce paramètre réduit le nombre de signaux auxquels la jvm répond et notamment celui du LOGOFF. Pour plus d’info voir ici : http://java.sun.com/javase/6/docs/technotes/tools/solaris/java.html

Voila, avec tout ça on a finalement réussi à faire tourner notre application. Un montage automatique d’un NAS  par l’utilisateur "système local" (celui qui fait tourner le service) nous a encore un peu ralenti mais au bout du compte, là encore on s’en est sorti.
Maintenant, à tous ceux qui osent prétendre qu’héberger ses applications sous windows plutôt qu’un bon vieux linux est sans impacts, j’espère qu’ils auront le bonheur de tomber sur cet article et de cesser la mauvaise foi par la même occasion…

Bonne année à tous !


Vous avez trouvé cette publication utile? Cliquer sur
Ippon
Ippon est un cabinet de conseil en technologies, créé en 2002 par un sportif de Haut Niveau et un polytechnicien, avec pour ambition de devenir leader sur les solutions Digitales, Cloud et BigData.

Ippon accompagne les entreprises dans le développement et la transformation de leur système d’information avec des applications performantes et des solutions robustes.

Ippon propose une offre de services à 360° pour répondre à l’ensemble des besoins en innovation technologique : Conseil, Design, Développement, Hébergement et Formation.

Nous avons réalisé, en 2016, un chiffre d’affaires de 24 M€ en croissance organique de 20%. Nous sommes aujourd’hui un groupe international riche de plus de 300 consultants répartis en France, aux USA, en Australie et au Maroc.
FRANCE Website LinkedIn