Accueil > Téléchargement et installation > Exemples d'installation


Installation sous linux

Dernière modification : 23/05/2001 14:20:00     Contact : Martin Sévigny

Cet article décrit l'installation de la plate-forme SDX v1.0 (version beta 1) sur un système linux Mandrake 7.2. Nous verrons successivement le réglage de linux, l'installation du SDK Java (Software Development Kit), l'installation du moteur de servlets Tomcat et enfin, l'installation de SDX v1.0 (version beta 1). Pour tous renseignements complémentaires, vous pouvez me contacter par mél : francois.pinot@culture.gouv.fr ou par téléphone au 03.87.56.41.02 (DRAC de Lorraine).

Paramétrage de linux

L'installation de linux Mandrake 7.2 se fait en mode serveur en acceptant les options proposées par défaut, ce qui est simple et rapide. Après le premier démarrage, on peut désactiver divers services qui ont été intallés mais qui ne sont pas vraiment nécessaires pour le fonctionnement de SDX. La commande drakxservices permet de choisir les services que linux doit démarrer à l'initialisation du système. A titre indicatif, voici la liste des services actifs sur mon installation :

Le service httpd est le serveur Web Apache 1.3.14 qui, s'il est utilisé avec SDX, permet de mélanger les documents SDX avec d'autres sources Web. Le serveur de bases de données dont SDX a besoin est mysql. Les services telnet et wu-ftpd ne sont pas nécessaires pour le fonctionnement de SDX, mais ils sont bien utiles pour la gestion à distance de la plate-forme. La seule décision concernant la sécurité est le choix du wrapper TCP xinetd plutôt que le classique inetd. Pour les autres éléments de sécurité, je me repose lâchement sur les services du DOSI. Il va sans dire qu'une étude détaillée sur les éléments de sécurité à apporter à une plate-forme SDX sera la bienvenue.

Les autres services de cette liste sont nécessaires au fonctionnement de linux, mais je ne m'étendrai pas ici sur leur description.

Enfin, il faut installer le paquetage apache-devel car nous en aurons besoin pour compiler un module de bibliothèque dynamique pour le serveur Web Apache. Mettre le deuxième cdrom de la distribution Mandrake 7.2 dans le lecteur et taper les commandes suivantes :

mount /mnt/cdrom
rpm -ivh /mnt/cdrom/Mandrake/RPMS2/apache-devel-1.3.14-2mdk.i586.rpm

Installation du SDK Java

SDX a besoin du SDK Java (sofware development kit) pour fonctionner. Il vaut mieux récupérer la dernière version directement sur le site de Sun. Il faut télécharger le fichier j2sdk-1_3_0_02-linux-rpm.bin (section RedHat RPM shell script) qui est un script d'auto-extraction du paquetage rpm correspondant. Une fois ce fichier copié dans le répertoire de root, exécuter la commande ./j2sdk-1_3_0_02-linux-rpm.bin, qui va extraire le paquetage j2sdk-1_3_0_02-linux.rpm après vous avoir posé les question rituelles sur la lecture et l'acceptation de la licence Sun.

Une fois le paquetage rpm extrait, il faut l'installer avec la commande rpm -ivh j2sdk-1_3_0_02-linux.rpm. Pour une installation seule du SDK Java, il faudrait modifier les variables d'environnement de l'utilisateur root. Nous ferons cela à l'étape suivante lorsque nous configurerons tomcat.

Le SDK Java ayant été installé dans /usr/java/jsk1.3.0_02/, les fichiers j2sdk-1_3_0_02-linux-rpm.bin et j2sdk-1_3_0_02-linux.rpm ne sont plus nécessaires et peuvent être supprimés du répertoire de l'utilisateur root.

Installation de tomcat

Nous aurons besoin de certaines variables d'environnement aussi bien pour Java que pour Tomcat. Pour éviter de les ressaisir à chaque session, nous créons dans le répertoire /root un script nommé tomcatenv dont le contenu est donné dans le tableau suivant :

JAVA_HOME=/usr/java/jdk1.3.0_02
export JAVA_HOME

JAKARTA_HOME=/usr/jakarta
export JAKARTA_HOME

TOMCAT_HOME=$JAKARTA_HOME/jakarta-tomcat-3.2.1
export TOMCAT_HOME

PATH=$PATH:$JAVA_HOME/bin
export PATH

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export CLASSPATH

Ne pas oublier de rendre ce script exécutable avec la commande chmod 755 tomcatenv. Modifier le fichier /root/.bashrc en y ajoutant tout à fin la ligne

. /root/tomcatenv

De cette manière, chaque fois que l'on ouvrira une session sous le nom de root, ces variables seront positionnées. Pour l'heure, nous le faisons manuellement en tapant la commande ./tomcatenv, et nous vérifions que tout c'est bien passé en affichant les variables d'environnement (printenv).

Se positionner dans le répertoire /usr, y créer un répertoire nommé jakarta, s'y positionner. Télécharger l'archive jakarta-tomcat-3.2.1.tar.gz (version binaire de Tomcat), la décompresser, et supprimer la copie. Télécharger l'archive jakarta-tomcat-3.2.1-src.tar.gz (sources de Tomcat nécessaires pour compiler la bibliothèque dynamique de liaison entre Tomcat et le serveur Web Apache), la décompresser, et supprimer la copie. Ce qui nous donne la suite d'instructions :

cd /usr
mkdir /jakarta
cd jakarta
 ...
tar zxvf jakarta-tomcat-3.2.1.tar.gz
rm jakarta-tomcat-3.2.1.tar.gz
 ...
tar zxvf jakarta-tomcat-3.2.1-src.tar.gz
rm jakarta-tomcat-3.2.1-src.tar.gz

(Les points de suspension représentent les phases de téléchargement des archives).

Nous allons maintenant configurer Tomcat. Pour cela, se positionner dans son répertoire de configuration, sauver les fichiers originaux dans un répertoire que l'on nomme original-conf et copier les fichiers dont on aura besoin dans le répertoire conf. Puis se positionner dans le répertoire bin et démarrer Tomcat avec le script startup.sh

cd ${TOMCAT_HOME}/conf
mkdir original-conf
mv * original-conf
cd original-conf
cp server.xml ..
cp web.xml ..
cp workers.properties ..
cp tomcat-users.xml ..

cd ${TOMCAT_HOME}/bin
./startup.sh

Vous pouvez alors vérifier le fonctionnement de Tomcat en l'appelant depuis votre navigateur favori avec l'URL http://nom.du.serveur:8080/nom.du.serveur doit être remplacé par le nom complet de votre serveur (ex : sdx-lorraine.culture.fr) . Si le nom du serveur n'est pas enregistré dans le DNS de votre domaine, vous pouvez le remplacer par son adresse IP.

Tomcat est un serveur Web qui écoute sur le port 8080. Dès qu'il est lancé, il faut vérifier son bon fonctionnement en testant les examples JSP et les examples de Servlets. Si tout fonctionne bien, stopper Tomcat avec le script shutdown.sh du répertoire bin de Tomcat.

Bien que l'on puisse utiliser Tomcat comme seul serveur Web, il est plus intéressant de bénéficier de la puissance du serveur Web Apache. Dans cette configuration, les requêtes arrivent sur le serveur Web Apache qui transmet ces dernières à Tomcat si elles le concernent. Dans le cas contraire, Apache traite lui-même les requêtes. Ainsi, on peut avoir un traitement Web classique en plus de SDX.

La liaison entre le serveur Web Apache et Tomcat se fait par un module de bibliothèque dynamique appelé mod_jk.so. Nous allons compiler ce module d'après les sources de Tomcat, le copier dans le répertoire des bibliothèques dynamiques du serveur Apache, puis nous effacerons les sources de Tomcat dont nous n'aurons plus besoin. Dans le tableau suivant, les symboles \ indiquent une coupure de ligne pour un affichage plus lisible. Dans la réalité, il faut taper la commande sur une seule ligne sans les \

cd ${JAKARTA_HOME}/jakarta-tomcat-3.2.1-src/src/native
cd apache1.3
/usr/sbin/apxs -o mod_jk.so \
  -I${JAVA_HOME}/include/linux \
  -I../jk -I${JAVA_HOME}/include \
  -c *.c ../jk/*.c

cp mod_jk.so /usr/lib/apache

cd ${JAKARTA_HOME}
rm -rf jakarta-tomcat-3.2.1-src

Nous allons modifier la configuration du serveur Apache pour qu'il prenne en compte le nouveau module. Se positionner dans le répertoire de configuration du serveur Apache (cd /etc/httpd/conf), éditer le fichier httpd.conf en ajoutant à la fin du fichier la ligne suivante :

Include /usr/jakarta/jakarta-tomcat-3.2.1/conf/mod_jk.conf

Se positionner dans le répertoire du serveur Apache et créer un lien symbolique vers ses bibliothèques dynamiques (ce lien est utilisé dans le fichier mod_jk.conf).

cd /etc/httpd
ln -s ../../usr/lib/apache libexec

Nous allons créer le fichier mod_jk.conf, puis nous anticiperons sur la section suivante en modifiant déjà le fichier pour indiquer au serveur Apache l'existence des ressources SDX. De cette manière, nous n'aurons à stopper et à redémarrer qu'une fois le serveur Apache.

Lors du premier démarrage de Tomcat, ce dernier a créé un fichier nommé mod_jk.conf-auto. Nous allons copier ce fichier pour créer notre fichier de configuration puis nous le modifierons.

cd ${TOMCAT_HOME}/conf
cp mod_jk.conf-auto mod_jk.conf

Nous éditons le fichier mod_jk.conf afin d'y ajouter à la fin les lignes suivantes, qui ont pour but d'indiquer au serveur Web Apache l'endroit où se trouve SDX et qu'il faut traiter les requêtes SDX via Tomcat.

#########################################################
# Auto configuration for the /sdx context starts.
#########################################################

#
# The following line makes apache aware of the location of the /sdx context
#
Alias /sdx "/usr/jakarta/jakarta-tomcat-3.2.1/webapps/sdx"
<Directory "/usr/jakarta/jakarta-tomcat-3.2.1/webapps/sdx">
    Options Indexes FollowSymLinks
</Directory>

#
# The following line mounts all JSP files and the /servlet/ uri to tomcat
#
JkMount /sdx/* ajp12

#
# The following line prohibits users from directly accessing WEB-INF
#
<Location "/sdx/WEB-INF/">
    AllowOverride None
    deny from all
</Location>

#
# The following line prohibits users from directly accessing META-INF
#
<Location "/sdx/META-INF/">
    AllowOverride None
    deny from all
</Location>

#######################################################
# Auto configuration for the /sdx context ends.
#######################################################

Pour finir, nous allons arrêter le serveur Apache, démarrer Tomcat et redémarrer le serveur Apache.

kill -TERM `cat /var/run/httpd.pid`
cd ${TOMCAT_HOME}/bin
./startup.sh
httpd

Vous pouvez alors vérifier le bon fonctionnement de la liaison entre le serveur Apache et Tomcat en appelant l'URL http://nom.du.serveur/examples/ depuis un navigateur et en vérifiant le bon fonctionnement des examples JSP et des examples Servlets. Si tout fonctionne bien, stopper Tomcat avec le script shutdown.sh. Nous sommes maintenant prêts à aborder l'installation de SDX.

Installation de SDX

Il faut d'abord modifier le script de démarrage de Tomcat pour prendre en compte SDX. Se positionner dans le répertoire binaire de Tomcat

cd ${TOMCAT_HOME}/bin

Editer le script tomcat.sh. Réperer les lignes suivantes :

oldCP=$CLASSPATH

unset CLASSPATH

Insérer juste après ces lignes le texte suivant qui a pour but d'ajouter dans le CLASSPATH les classes Java de SDX.

CLASSPATH=${CLASSPATH}:${TOMCAT_HOME}/webapps/sdx/WEB-INF/classes
for i in ${TOMCAT_HOME}/webapps/sdx/WEB-INF/lib/* ; do
  CLASSPATH=${CLASSPATH}:$i
done

Copier SDX dans le répertoire webapps de SDX, le dézipper, effacer le fichier compressé, copier le répertoire sdx et la documentation xml dans webapps, et supprimer le reste de la distribution qui n'est pas indispensable à cet endroit.

cd ${TOMCAT_HOME}/webapps
...
unzip sdx-1_0b1.zip
rm sdx-1_0b1.zip
cd sdx-1.0b1/webapps
mv sdx ../..
cd ..
mv docs ../sdx
cd ..
rm -rf sdx-1.0b1

Il faut maintenant configurer MySQL. Si vous n'avez pas donné de mot de passe à l'utilisateur root de MySQL (qui n'a rien à voir avec l'utilisateur root de linux), c'est le moment de le faire avec la commande

mysqladmin -u root password 'votre.mot-de-passe'

Nous devons ajouter à MySQL l'utilisateur sdx avec le mot de passe xml, créer la base sdx_v1, garantir tous les droits à l'utilisateur sdx sur la base sdx_v1 et réinitialiser MySQL pour la prise en compte de tous ces changements.

mysql -u root -p mysql
Enter password: ...

mysql>INSERT INTO user (host,user,password)
mysql>VALUES ('localhost.localdomain','sdx',password('xml'));

mysql>CREATE DATABASE sdx_v1;

mysql>GRANT ALL ON sdx_v1.* TO sdx;

mysql>exit

mysqladmin -u root -p reload

Le fichier web.xml de Tomcat doit être modifié pour refléter l'URL de base de SDX sur votre machine. Se positionner dans le répertoire WEB-INF de sdx.

cd ${TOMCAT_HOME}/webapps/sdx/WEB-INF

Editer le fichier web.xml. Trouver les lignes suivantes :

    <!-- L'URL de base (interne) pour cette installation SDX -->
    <context-param>
        <param-name>sdx_baseUrl</param-name>
        <param-value>http://localhost/sdx/</param-value>
    </context-param>

Remplacer localhost par le nom long de votre machine que vous trouverez dans le fichier /etc/hosts. Se positionner dans le répertoire de configuration de sdxdoc

cd ${TOMCAT_HOME}/webapps/sdx/sdxdoc/conf

Editer le fichier catalog, modifier la première ligne (BASE "http://localhost/sdx/sdxdoc/dtd") en y remplaçant localhost par le nom long de votre machine. Ceci est nécessaire pour que SDX trouve bien la DTD correspondant aux documents.

Rappeler MySQL avec la nouvelle base

mysql -u sdx -p sdx_v1
Enter password: xml

A partir de là, l'installation peut continuer en suivant les instructions de la section Configuration initiale, à partir du paragraphe Les tables globales. Lorsque cela est fini redémarrer Tomcat. Le système affiche des messages d'erreur concernant les servlets. Ne pas en tenir compte.

Conclusion

Cette description d'une installation SDX est très détaillée dans un but de pédagogie par la pratique. Si cet aspect pédagogique n'est pas nécessaire, on peut automatiser l'installation dans un script qui pourrait faire partie d'une version régulière de SDX.