Titre: Installation de WebObjects 5.3 Version: 2.1 Dernière modification: 2011/02/17 11:00 Auteur: Aurélien Minet <aurelien dot minet at cocktail dot org> Statut: version finale Licence: Creative Commons - by-nc-sa 2.0 ( http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ) Remarques: les pré-requis sont de connaître le shell et ce qu'est une JVM, d'avoir la maîtrise de l'os utilisé. le document est "orienté" Linux et Bash mais la procédure d'installation reste applicable à d'autres Unix (ils ont besoin de la JVM 1.5 de Sun) rien dans ce document n'est supporté par Apple ce document dans sa globalité n'est pas spécifique Cocktail (sauf pour certains jar dans Extensions) au niveau de la typographie: le code, les lignes de commandes, le contenu des fichiers sont en italique 1
Installation de WebObjects 5.3 2
Versions: date n version 10/07/2008 0 brouillon 13/08/2008 1.0 Version initiale commentaires 16/06/2009 1.2 corrections mineurs sur les chown 06/09/2010 2.0 16/02/2011 2.1 Mise à jours générale suite au passage a Java 1.5. Ajout/modification de la procédure pour Max OS X Leopard et Snow Leopard, ajout des.plist Corrections, reformulation, clarification sur la version de Java et du driver jdbc a utiliser. Les version au format X.y.z ne sont pas listées, elles ne contiennent que des corrections (coquilles...). L'information contenue ne change pas. 3
Objectif:... 5 Introduction:... 5 1. Le runtime... 6 2. UNIX... 7 Etape n 1:... 7 Etape n 2:... 7 Etape n 3:... 8 3. OS X Leopard et Snow Leopard... 9 Leopard Desktop et Snow Leopard... 9 Leopard Server... 9 Remarque...10 Conclusion... 11 4
Objectif: savoir "installer"/utiliser le runtime sur UNIX gérer l'exécution des 2 "daemons" WebObjects changer de version Introduction: Apple ne vend plus WebObjects comme ce fut le cas jusqu'à la version 5.2, il est fournit avec OS X Server (payant) jusqu'à la version Leopard et avec XCode (gratuit). La licence XCode permet d'installer/distribuer WebObjects pour le déploiement d'applications réalisées avec ce dernier, extrait de la Licence: En accord avec le conditions générales de cette licence, vous pouvez utiliser, installer et permettre l'accès à d'autres personnes au logiciel de déploiement WebObjects compris dans le logiciel de développement pour déployer des programmes d'application développés grâce au logiciel d'apple WebObjects. (Licence complète dans le package sous forme de pdf) La problématique suivant les systèmes d'exploitation : OS X Tiger installer XCode 2.4 OS X Tiger Server OS X Leopard / OS X Snow Leopard OS X Leopard Server tout UNIX disposant d'une JVM 1.4.2 (/1.5) de Sun autre OS disposant d'une JVM 1.4.2 (/1.5) de Sun OS disposant d'une JVM 1.4.2 (/1.5) mais pas de Sun déjà installé installation manuelle déjà installé mais en 5.4 donc downgrader en 5.3 mais conserver la 5.4 pour les updates installation manuelle installation manuelle possible, fonction des spécificités de l'os cela est bien sur fonction des spécificités de l'os et de la compatibilité de la JVM. Un fonctionnement correct n'est pas impossible mais risque d'être difficile. Ainsi l'installation de WebObjects 5.3 sous Unix est le cœur de ce document mais la problématique OS X Leopard (10.5) est également abordée. 5
1. Le runtime Le runtime WebObjects correspond à: /System/Library/Frameworks/ JavaDTWGeneration.framework JavaDirectToWeb.framework JavaEOAccess.framework JavaEOApplication.framework JavaEOControl.framework JavaEODistribution.framework JavaEOGeneration.framework JavaEOInterface.framework JavaEOInterfaceCocoa.framework JavaEOInterfaceSwing.framework JavaEOProject.framework JavaEORuleSystem.framework JavaEOTool.framework JavaFoundation.framework JavaJDBCAdaptor.framework JavaJNDIAdaptor.framework JavaWOExtensions.framework JavaWOJSPServlet.framework JavaWebObjects.framework JavaWebServicesClient.framework JavaWebServicesGeneration.framework JavaWebServicesSupport.framework JavaXML.framework /System/Library/PrivateFrameworks/JavaMonitor.framework /System/Library/PrivateFrameworks/EOPlaceholders.framework /System/Library/WebObjects/JavaApplications /System/Library/WebObjects/WODocumentRoot /Library/WebObjects/Extensions/axis-ant.jar /Library/WebObjects/Extensions/axis.jar /Library/WebObjects/Extensions/commons-discovery.jar /Library/WebObjects/Extensions/commons-logging.jar /Library/WebObjects/Extensions/jaxrpc.jar /Library/WebObjects/Extensions/log4j-1.2.8.jar /Library/WebObjects/Extensions/saaj.jar /Library/WebObjects/Extensions/wsdl4j.jar /Library/WebServer/Documents/WebObjects (cette liste peut contenir quelques jar, répertoires en plus et/ou non WebObjects) Pour obtenir le runtime il suffit d'installer XCode. Ensuite le principe est d'avoir l'arborescence correspondant à /System dans $NEXT_ROOT et /Library dans $NEXT_ROOT/Local. NEXT_ROOT est une variable d'environnement utilisée par les scripts pour trouver les éléments du runtime et construire le CLASSPATH. Ainsi NEXT_ROOT correspond au répertoire dans lequel il faudrat copier l'arborescence. 6
2. UNIX L'installation sous Unix est générique, WebObjects 5.X n'est que du Java. WebObjects peut fonctionner sous Solaris, FreeBSD, Linux du moment qu'un JRE 1.5 est disponible (une version de Sun). Etape n 1: Il faut : installer la JVM 1.5 d'oracle (anciennement Sun), attention: ne pas avoir gcj dans le path, n'y d'openjdk! récupérer les éléments du runtime ( webobjects_5.3.3.tgz ) décompresser l'archive, dans /opt par exemple, un répertoire webobjects_5.3.3 est créé positionner la variable d'environnement NEXT_ROOT : export NEXT_ROOT=/opt/webobjects_5.3.3 le runtime WebObjects est maintenant utilisable. Pour le déploiement il faut lancer les 2 daemons: wotaskd: $NEXT_ROOT/Library/WebObjects/JavaApplications/wotaskd.woa/ wotaskd -WOPort 1085 JavaMonitor: $NEXT_ROOT/Library/WebObjects/JavaApplications/JavaMonitor.woa/ JavaMonitor -WOPort 56789 -WOApplicationName Monitor - WOLifebeatDestinationPort 1085 JavaMonitor ne doit être lancé que sur l'un des serveurs du "site", il n'est là que pour configurer les wotaskds et gérer les instances des applications. (des exemples de scripts de démarrage pour le wotaskd et JavaMonitor basés sur StartStopDaemons du projet Debian sont disponibles) Etape n 2: Idéalement WebObjects ne doit pas fonctionner sous l'utilisateur root. Donc créer: 1 groupe (pratique lorsque l'on a plusieurs utilisateurs afin qu'ils puissent lire les fichiers de l'autre) ex: apple puis au choix: 1 utilisateurs pour l'exécution des processus et la mise a jours des applicatifs. ex: apple ou wosrv 2utilisateurs (utilisation très sécuritaire): 1 utilisateur pour l'exécution des processus (mot de passe verrouillé) ex: wosrv 1 utilisateur pour la gestion des fichiers applicatifs (.woa, framework et jar) ex: woapp 7
Le ou les 2 utilisateurs ne sont pas privilégiés (ils n'ont pas forcement de shell, sftp peut suffir pour woapp) c'est pourquoi il faut changer les droits de certains répertoires. Tout doit appartenir au root dans $NEXT_ROOT sauf ce qui est dans Local : wosrv a besoin d'écrire dans $NEXT_ROOT/Local/logs (fichiers de logs) et $NEXT_ROOT/Local/Library/WebObjects/Configuration (fichier SiteConfig.xml ) woapp a besoin d'écrire dans $NEXT_ROOT/Local/Library/WebObjects/Extensions $NEXT_ROOT/LocalLibrary/WebObjects/Applications ce qui correspond à: dans le cas d'un seul utilisateur: mkdir -p $NEXT_ROOT/Local/logs chown wosrv:apple $NEXT_ROOT/Local/logs chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Configuration chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Extensions chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Applications dans le cas de deux utilisateurs: mkdir -p $NEXT_ROOT/Local/logs chown wosrv:apple $NEXT_ROOT/Local/logs chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Configuration chown woapp:apple $NEXT_ROOT/Local/Library/WebObjects/Extensions chown woapp:apple $NEXT_ROOT/Local/Library/WebObjects/Applications Etape n 3: Remplacer les jar dans $NEXT_ROOT/Local/Library/WebObjects/Extensions avec ceux fournis dans Extensions.tgz (certains sont rajoutés car utilisés par certaines applications Cocktail, d'autres changent juste de version) tout les jar nécessaires ne sont pas fournis dans Extensions.tgz pour des raison de licences, il faut donc installer : le driver JDBC, il doit aussi être présent dans ORACLE_HOME/jdbc/lib choisir la version pour Java 1.5 (il est aussi disponible sur http://www.oracle.com/ technology/software/tech/java/sqlj_jdbc/index.html ) ical4j.jar ( http://ical4j.sourceforge.net ) (n'est utilisé que par certaines applications) (cette opération est la seule spécificité Cocktail) modifier Library/Frameworks/JavaWebObjects.framework/Resources/ WebServerConfig.plist la valeur de WOAdaptorURL doit correspondre à l'url (du point de vue du client qui va ce connecter) de votre serveur http où sera installé mod_webobjects. Donc normalement cela doit être doit correspondre ServerName dans la configuration Apache du vhost, par exemple seveur.domaine.tld. créer $NEXT_ROOT/Local/Library/WebObjects/Applications/Frameworks/, les frameworks non Apple devront y être installé. ajouter des scripts de lancement dans /etc/init.d (start-stop-daemon du projet Debian est recommandé, voir scripts d'exemples dans scripts.tgz) mettre un password dans le JavaMonitor 8
il est recommandé d'utiliser d'autres ports que ceux par défaut 1085 et 56789 même si seul Apache doit avoir accès aux ports des applications. enfin tout les "HOSTS" déclarés dans le monitor dans l'onglet du même nom doivent être correctement déclaré dans /etc/hosts, avec leur FQDN, pour vérifier faire sur chaque serveur: hostame -f, (le fichier /etc/hosts doit être utilisé en premier lors de la résolution de noms, voir nsswitch.conf). si vous n'avez qu'un seul serveur WebObjects utilisez 127.0.0.1 comme Host. vous pouvez déclarer pour le Host l'adresse IP plutôt que le nom (dans le cas de plusieurs adresses IP sur le serveur déclarer celle qui sera utilisée par Apache) $NEXT_ROOT/Library/WebObjects/JavaApplications/wotaskd.woa/Contents/ Resources/SpawnOfWotaskd.sh est le script utilisé par le wotaskd pour lancer les applications. Il est recommandé de le modifier pour rediriger stdout et sdterr vers un fichier de logs afin d'avoir une première source d'information lorsqu'une application ne démarre pas. On peut changer pour: /bin/bash $@ 2>&1 1>> $NEXT_ROOT/Local/logs/webobjects.log & Il est possible d'avoir plusieurs installations, il faut simplement multiplier les NEXT_ROOT, avoir plusieurs scripts de démarrage et éventuellement créer plusieurs groupes/utilisateurs. Il faudra faire attention aux ports utilisés (l'utilisation d'une adresses IP par NEXT_ROOT est possible, il faudra alors lancer toutes les applications avec -WOHost x.y.z.w). 3. OS X Leopard et Snow Leopard Leopard Desktop et Snow Leopard Etant donné qu'il n'y a plus WebObjects par défaut il faut simplement recopier le runtime au même endroit. Il faut éventuellement créer des.plist et des users pour Launchd. Attention les permissions sur les.plist doivent être 644 pour system/wheel/everyone sinon launchctl de faire une erreur du type "dubious permissions". Ne pas oublier que la version de Java supportée par WebObjects 5.3 est la 1.4.2 mais fonctionne très bien avec Java 1.5 Leopard Server Le principe est de "downgrader" de la 5.4 vers la 5.3 ou plus exactement pouvoir passer d'une version à une autre. Pour cela créer 2 répertoires là où il y a des éléments WebObjects, un pour chaque versions. Pour la version qui doit être utilisée il faut faire des liens symboliques (ou copie) vers les éléments du répertoire correspondant à la bonne version Ainsi pour les éléments de /System/Library/Frameworks/ créer 2 répertoires : mkdir /System/Library/Frameworks/WebObjects54 mkdir /System/Library/Frameworks/WebObjects53 y mettre les frameworks WebObjects. 9
ensuite pour passer d'une version à une autre: for framework in `ls /System/Library/Frameworks/WebObjects5X`; do rm /System/Library/Frameworks/$framework; ln -sf /System/Library/Frameworks/WebObjects5X/$framework /System/Library/ Frameworks/$framework; done il en va de même pour les autres éléments du runtime, ils ne sont pas nécessaires au lancement d'applications Cocktail sauf ce qui concerne les jar dans Extensions (axis.jar notamment). Il est a noter que WebObjects version 5.3 fonctionne avec une JVM 1.4.2 ou 1.5 alors que la version 5.4 avec une JVM 1.5 ou 1.6. Il faut donc penser à changer de JVM. (il est possible de changer dans les.woa/contents/macos/*.txt l'exécutable java à utiliser) Le wotaskd et JavaMonitor peuvent être lancé en vesion 5.4 et lancer/gérer des applications en 5.3 (les 2 daemons n'ont pas évolué depuis la 5.2 où si c'est le cas ils communiquent toujours de la même manière au niveau heartbeat et DirectAction) Remarque Avec les dernières version d'os X et sur les machines récentes le démarrage du wotaskd et du javamonitor peut avoir lieux avant le démarrage du réseau ce qui les rend non fonctionnel. Le palliatif est de modifier les scripts shell (ceux dans les.woa) et d'y rajouter un sleep juste avant la ligne "eval exec". 10
Conclusion L'installation de WebObjects 5.3 est simple, il faut juste avoir un JRE 1.5 d'installé, décompresser l'archive et exporter NEXT_ROOT. Pour du confort et de la sécurité il faut créer des utilisateurs et des scripts de lancement. 11