tgds.net

Utilisation de Macromedia UltraDev avec PostgreSQL, Tomcat et Apache

Tony Grant 2001
Avec l'assistance de Justin Clift, Peter Mount et les membres de postgresql-general list d'e-mail

Macromedia UltraDev est un RAD pour les serveurs d'applications ASP, ColdFusion ou JSP. Nous utilisons la base de données PostgreSQL depuis 1997. Notre but est d'utiliser cet environnement de développement rapide pour la création d'applications web simples sur le serveur d'applications Tomcat avec Apache et PostgreSQL sous sytème d'exploitation Linux.

Les versions binaires de toutes ces applications ont été preférées dans notre cas. Notre objectif est de simplifier le processus pour les non développeurs. Cependant il est essentiel de bien connaître le système Linux et la structure des répertoires.

Vous pouvez trouver tout ce qui suit dans les documentations diverses. Notre objectif est de centraliser un maximum d'informations pour en faire un pense-bête. Ce document ne remplace pas la lecture des documentations des logiciels mis en oeuvre. Surtout les documentations de Dreamweaver UltraDev et de PostgreSQL. Ces documentations sont excellentes, lisez-les maintenant avant de continuer.

Les machines :

Un serveur de base de données Linux et un serveur d'applications web. Dans un environnement de production il doit en principe y avoir deux machines. Dans notre environnement de développement les serveurs sont sur la même machine.

Les logiciels:

Nos exemples utilisent le RedHat 7.0. Si vous utilisez un autre Linux vous êtes déjà en mesure de modifier les chemins d'accès aux fichiers de configuration standards.

Apache - dernier rpm du serveur ftp RedHat

JDK1.3 - binaire 1.3_0.2 sur le serveur ftp Sun

Jakarta Tomcat - 3.2 binaire pour RedHat 7.0 sur Apache.org

Ant - rpm sur Apache.org

mod_jk.so - precompilé sur Apache.org ftp

PostgreSQL - 7.1 rpms sur PostgreSQL.org

Un serveur ftp - sur votre CD RedHat

Installation:

Devenez root pour installer les rpm et binaires

Installez le JDK.

Puis:

cd /usr/java
mv jdk1.3.(version_number) /usr/Java/jdk1.3

Modifiez/etc/profile pour inclure le chemin vers votre JDK /usr/Java/jdk1.3

Installez Apache

Copiez mod_jk.so vers le répertoire qui contient les modules.

Installez Tomcat

cd /usr/local
mv jakarta-tomcat-xxx /usr/local/tomcat

Installez Ant

Installez PostgreSQL

Attention !

Nous avons constaté que votre application postgreSQL doit être compilée avec les options --enable-multibyte --enable-locale en plus de --enable-java. Quand vous passez à la création de votre base ci-dessous utilisez creatdb -E LATIN1

Cela va permettre au JDBC de retourner les caractères accentués lors des requêtes.

Le pilote JDBC, postgresql.jar, doit-être copié vers /usr/local/tomcat/lib. Merci à Justin pour cette astuce.

Tout trouver, télécharger et installer : cela a pris une demi journée. A bon entendeur... si vous êtes un peu "pressé"!

Configuration:

Là ça se corse! Il m'a fallu du temps pour comprendre la configuration de Tomcat car l'installation inclue les fichiers destinés à NT. Les fichiers pour IIS et Netscape serveur sont là dedans aussi... Ne suivez pas les instructions pour le module Tomcat mod_jserv ! Utilisez les instructions pour mod_jk à la place. Lisez-les avec attention avant de modifier votre fichier httpd.conf ainsi :

LoadModule jk_module modules/mod_jk.so
AddModule mod_jk.c

Mes modules Apache sont dans un répertoire qui s'appelle "modules" dans l'arborescence d'Apache. Redémarrez Apache et vérifiez que votre module se charge correctement.

Où installer vos applications:

Installez votre répertoire racine pour vos applications dans /usr/local/tomcat/webapps/nomdemonapp.

ASTUCE - ne pas utiliser le nom "test" pour votre application ! Il y a déjà une application qui s'appelle test dans le répertoire webapps.

Créez un utilisateur tomcat et son groupe et en faire le propriétaire de /usr/local/tomcat/webapps/nomdemonapp

Configurez /usr/local/tomcat/webapps/nomdemonapp comme racine ftp pour votre utilisateur tomcat.

Maintenant nous devons modifier les fichiers suivants :

/etc/httpd/conf/httpd.conf

JkWorkersFile /usr/local/tomcat/conf/workers.properties
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel warn
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13

Alias /examples "/usr/local/tomcat/webapps/examples"
<Directory "/usr/local/tomcat/webapps/examples">
Options Indexes FollowSymLinks
</Directory>

JkMount /examples/servlet/* ajp13
JkMount /examples/*.jsp ajp13

<Location "/examples/WEB-INF/">
AllowOverride None
deny from all
</Location>

<Location "/examples/META-INF/">
AllowOverride None
deny from all
</Location>

Alias /admin "/usr/local/tomcat/webapps/admin"
<Directory "/usr/local/tomcat/webapps/admin">
Options Indexes FollowSymLinks
</Directory>

JkMount /admin/servlet/* ajp13
JkMount /admin/*.jsp ajp13

<Location "/admin/WEB-INF/">
AllowOverride None
deny from all
</Location>

<Location "/admin/META-INF/">
AllowOverride None
deny from all
</Location>

Alias /nomdemonapp "/usr/local/tomcat/webapps/nomdemonapp"
<Directory "/usr/local/tomcat/webapps/nomdemonapp">
Options Indexes FollowSymLinks
</Directory>

JkMount /nomdemonapp/servlet/* ajp13
JkMount /nomdemonapp/*.jsp ajp13

<Location "/nomdemonapp/Connections/">
AllowOverride None
deny from all
</Location>

Ici nous bloquons l'accès au répertoire qu'UltraDev utilise pour stocker les détails de la connexion, y compris le mot de passe de votre base de données... Je n'ai pas protégé _mmDBScript , j'ai essayé mais cela a empéché la connexion. Ultérieurement nous pourrions valider ou non si cela représente un problème de sécurité.

/usr/local/tomcat/conf/server.xml

Modifiez les « Connectors » tout en bas en rajoutant :

<Connector className="org.apache.tomcat.service.PoolTcpConnector">
<Parameter name="handler" value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
<Parameter name="port" value="8009"/>
</Connector>

Ajoutez le contexte pour votre application :

<Context path="/nomdemonapp"
docBase="webapps/nomdemonapp"
debug="0"
reloadable="true" >
</Context>

Et enfin /usr/local/tomcat/conf/workers.properties doit être modifié pour Linux.

Par la suite :

export TOMCAT_HOME=/usr/local/tomcatexport JAVA_HOME=/usr/java/jdk1.3

Si vous redémarrez votre serveur à ce point la dernière ligne n'est pas nécessaire. Nous avons modifié /etc/profile plus tôt, souvenez-vous.

Démarrez Tomcat ensuite redémarrez Apache. Maintenant tous les requêtes à http://localhost/examples/ seront envoyées à Tomcat. Testez votre configuration maintenant avant de procèder!

Configurez PostgreSQL pour accepter les connexions Tcp/IP et permettre au propriétaire de la base de données de se connecter depuis la machine qui héberge le serveur d'applications. Démarrez PostgreSQL en suivant les instructions dans les docs PostgreSQL. Créez votre base et essayez de vous connecter avec psql.

Connexion depuis UltraDev :

Ceci a été testé avec la version Windows d'UltraDev 4.0. Tout fonctionne avec la version Mac aussi.

Je vous suggère de faire l'apprentissage d'UltraDev dans sa totalité. Cela vous enseignera les bases avant de vous attaquer à des projets plus ambitieux.

Voici mon dialogue de définition des sites (désole, je n'ai que la version anglaise sous la main). Rajoutez le numéro IP de votre serveur FTP. La racine pour l'utilisateur "tomcat" étant /usr/local/tomcat/webapps/nomdemonapp laissez la case vide. L'URL racine est comme votre Contexte ci-dessus, ou bien http://localhost/nomdemonapp

Maintenant il faut définir une connexion. Ouvrez une page dans votre site d'essai. Nommez votre connexion connNomdemonapp afin de faciliter l'identification. L'utilisateur ici est le propriétaire de la base et non l'utilisateur FTP, les deux peuvent être différents (cela m'a piégé). UltraDev va utiliser le JDBC postgres.jar dans tomcat/lib . Ne copiez pas le posgres.jar dans les endroits habituels de votre chemin Java. Cela peut empécher la connexion comme cela s'est produit chez moi.

J'ai suivi le tutorial avec une base que j'avais déjà sous la main en modifiant les références ou cela était nécessaire. Peut-être Macromedia sera assez gentil d'inclure un pg_dump de leur base de tutorial sur leur site FTP...

Conclusion:

UltraDev est extrèmement convivial dans la création JSP. Les applications fonctionnent dans tout navigateur avec Java activé. Il ne faut pas connaître Java pour faire fonctionner UltraDev. Il faut par contre quelques bases en SQL - mais l'apprentisage SQL de PostgreSQL est très bien fait.

Pour aller plus loin connaître Java est essentiel.

Toute question concernant ce document sera traité sur postgres-general ou postgres-jdbc.

English version. La version anglaise sera mise àjour régulièrement. Un(e) volontaire pour traduire/enrichir la version française sera bienvenu(e)

All trademarks, brand names etc. used on this page are probably registered and owned by the companies mentioned herein.

31-août-2005 © tgds 2005 | tgrant@tgds.net | Privacy | Conditions de vente