Installation/Utilisation de Xindice 1.1 avec PHP sur Linux
dernière mise à jour : 08 juillet 2004
Document écrit par Eric MERY :
eric.mery@laposte.net


Cette page a été écrite dans le but de partager le maximum d'informations sur l'utilisation de Xindice et PHP. Aussi, si vous utilisez vous aussi le couple PHP/Xindice et que vous souhaitez partager vos astuces que ce soit sur l'installation et l'utilisation, n'hésitez pas à m'écrire pour que je mette à jour cette page afin que tout le monde puisse en profiter.... ! Merci d'avance. eric.mery@laposte.net
The purpose of this page is to share as many information as possible about the way of using Xindice and PHP. So if you are using also the couple PHP/indice and you want to share your tricks for both installation and use, please don't hesitate to write to me so that I can update this page and let everybody take benefit of it.Thanks in advance. eric.mery@laposte.net

    Apache Xindice est une base de données native XML open source soutenue par le projet JAKARTA (Apache). La base de données développée en JAVA, doit être hébergée par un moteur de servlet pour fonctionner (type TOMCAT, Jetty...). Il est donc possible de s'y connecter par l'intermédiaire d'une application JAVA, de pages JSP ou de Servlets. Cependant il est aussi possible d'utiliser la base en tant que Service Web afin d'y accéder à partir d'autres langages tels que le PHP. Pour cela, on utilise le protocole xmlrpc pour que PHP puisse communiquer avec Xindice.
Nous allons donc décrire dans ce document la mise en oeuvre du couple PHP/Xindice sur une machine Linux. Pour cela, nous allons installer le moteur de servlet TOMCAT. Ainsi, notre machine possèdera deux serveurs HTTP : Apache sur le port 8080 et TOMCAT sur le port 8090. C'est sur ce dernier que sera hébergé Xindice.

Environnement d'installation et logiciels utilisés :

Logiciel Version Nom du fichier
Linux Mandrake 10.0 -
Apache 1.3.31 apache_1.3.31.tar.gz
Xindice 1.1b4 xml-xindice-1.1b4-src.tar.gz
JDK 1.4.2 j2sdk-1_4_2_04-linux-i586.bin
PHP 4.3.7 php-4.3.7.tar.gz
Tomcat 5.0.25 jakarta-tomcat-5.0.25.tar.gz

Attention : la version 1.0 de Xindice fonctionne complètement différemment de la 1.1. Ce qui suit n'est valide que pour la verison 1.1.
Remarque : toutes les commandes ci-dessous sont réalisées en tant que root.

 

I Pré requis
II Installation du JDK
III Installation de TOMCAT
IV Installation de Xindice 1.1b4
V Installation du browser PHP
VI Scripts PHP
VII Sécurisation de l'accès à Xindice
VIII Annexes

 

Pré requis

Installez les librairies libxml 2 et libxslt sur votre machine linux pour pouvoir profiter des fonctions DOM XML dans vos scripts PHP :
- Télécharger sur la page 'http://xmlsoft.org/downloads.html' les fichiers 'libxml2-2.6.10.tar.gz' et 'libxslt-1.1.7.tar.gz'.
- Installez les (./configure, make et make install)
- Recompilez PHP avec l'option --with-dom --with-dom-xslt

Pour que PHP puisse dialoguer avec Xindice en xmlrpc, il faut que la librairie xmlrpc ait été installée sur la machine et que PHP ait été compilé avec l'option --with-xmlrpc. Pour cela :
- Téléchargez sur la page http://xmlrpc-epi.sourceforge.net/main.php?t=php_about  ou http://sourceforge.net/project/showfiles.php?group_id=23199 les dernières versions de xmlrpc-epi-xxx et  xmlrpc-epi-php-xxx
- Installez ces librairies
- recompilez PHP avec l'option --with-xmlrpc

Exemple de compilation dynamique de PHP 4.3.7 avec Apache 1.3.31 :
./configure --with-zlib --with-apxs=/usr/local/apache/bin/apxs --with-dom --with-dom-xslt --with-xmlrpc

 

Installation du JDK

Pour installer TOMCAT et  Xindice, nous avons besoin du JDK installé sur la machine.
- Téléchargez le dernier SDK (et non le JRE) sur le site de SUN à l'adresse suivante : http://java.sun.com/j2se/1.4.2/download.html. Le fichier se nomme : 'j2sdk-1_4_2_04-linux-i586.bin'.
- Copiez le fichier dans /usr/local et exécutez le.
- Une fois le JDK installé, déclarez la variable d'environnement JAVA_HOME. Pour cela :
emacs /etc/profile &
Dans le fichier, rajouter :
JAVA_HOME=/usr/local/j2sdk1.4.2_04
export JAVA_HOME
PATH=$PATH:${
JAVA_HOME}/bin
export PATH

 

Installation de TOMCAT

Xindice dans sa version 1.1 ne fonctionne qu'en tant qu'application web sur un moteur de servlet Nous allons donc installer TOMCAT sur notre machine
- Téléchargez la dernière version de TOMCAT (format binaire et non la source) sur le site 'Apache France' à l'adresse suivante : http://www.apachefrance.com/Telechargement/17/. Le fichier se nomme : 'jakarta-tomcat-5.0.25.tar.gz'
- Copiez le fichier dans /usr/local et décompressez le :
tar zxvf jakarta-tomcat-5.0.25.tar.gz
- Une fois TOMCAT décompressé, renommez le répertoire /usr/local/jakarta-tomcat-5.0.25 en /usr/local/jakarta-tomcat-5 pour faire plus simple :
mv /usr/local/jakarta-tomcat-5.0.25 /usr/local/jakarta-tomcat-5
- Déclarez le variable d'environnement CATALINA_HOME :
emacs /etc/profile &
Dans le fichier, rajouter :
CATALINA_HOME=/usr/local/jakarta-tomcat-5
export CATALINA_HOME
PATH=$PATH:${CATALINA_HOME
}/bin
export PATH
- Nous allons maintenant éditer le fichier de configuration de TOMCAT pour modifier le port d'écoute (par défaut le port est sur 8080, port déjà utilisé par apache). Nous allons donner comme valeur de ce port : 8090.
emacs $CATALINA_HOME/conf/server.xml &
Dans le fichier, rechercher 8080 et remplacez le par 8090.
- Vous pouvez maintenant démarre TOMCAT  grâce à $CATALINA_HOME/bin/./startup.sh et stopper TOMCAT  grâce à $CATALINA_HOME/bin/./shutdown.sh
- Vous pouvez tester l'installation de TOMCAT en allant sur http://localhost:8090/. Si vous voyez la page d'accueil de TOMCAT, c'est gagné.

 

Installation de Xindice 1.1b4

Maintenant que le JDK et TOMCAT sont installés, nous allons pouvoir installer Xindice.
- Téléchargez la source de Xindice à l'adresse suivante : http://xml.apache.org/xindice/download.cgi. Le fichier se nomme 'xml-xindice-1.1b4-src.tar.gz'
- Copiez le dans /usr/local, décompressez le :
tar zxvf xml-xindice-1.1b4-src.tar.gz
- Installez Xindice :
./build.sh
- Une fois Xindice installé, il faut déclarer la variable d'environnement XINDICE_HOME. Pour cela :
emacs /root/.bashrc &
Dans le fichier, rajouter :
XINDICE_HOME=/usr/local/xml-xindice-1.1b4
export XINDICE_HOME
PATH=...:${XINDICE_HOME
}/bin
export PATH
- Copier le fichier $XINDICE_HOME/dist/xindice-1.1b4.war dans le répertoire $CATALINA_HOME/webapps. Renommez en même temps le fichier en xindice.war :
cp $XINDICE_HOME/dist/xindice-1.1b4.war  $CATALINA_HOME/webapps/xindice.war
- Vous pouvez tester l'installation de Xindice en allant sur http://localhost:8090/xindice. Si vous voyez le browser de Xindice, c'est gagné.

 

Installation du browser PHP : xindice_php_admin

- Télécharger à l'adresse suivante : http://wiki.apache.org/xindice/XindicePHPAdmin ou http://www.ruminate.co.uk/samples/ le fichier 'xindice_php_admin_v.0.Alpha.zip'
- Décompressez le dans un répertoire accessible par Apache :
unzip xindice_php_admin_v.0.Alpha.zip
- Modifiez le fichier de configuration se trouvant dans /include/common.php avec vos paramètres :
$xindicehost='localhost';
$
xindiceurl='/xindice/db';
$
xindiceport='8090';
$
basecoll='/db';
- Accédez via le navigateur au browser...

 

Scripts PHP

Maintenant que tout est en place, il ne vous reste plus qu'à faire un include dans vos scripts PHP de la classe permettant de se connecter à Xindice et d'y effectuer des opérations. Cette classe est dans le fichier Xindice.php se trouvant dans /include du brower PHP.

 

Sécurisation de l'accès à Xindice : Basic HTTP authentification

Si vous souhaitez sécuriser l'accès à Xindice avec une authentification basique, suivez la procédure ci-dessous :

- Nous allons tout d’abord sécuriser l’accès à la ressource ‘xindice’ hébergée par TOMCAT.
Pour cela, il va falloir modifier le fichier de configuration ‘web.xml’ présent dans ‘$CATALINA_HOME/web_apps/xindice/WEB-INF/’.
Décommentarisez les ligne suivantes :
<security-constraint>
   <web-resource-collection>
     <web-resource-name>Xindice Server</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>xindice</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>xindice</realm-name>
  </login-config>
  <security-role>
    <role-name>xindice</role-name>
 
</security-role>

- Puis nous allons ajouter un utilisateur ayant le rôle ‘xindice’ dans le fichier des utilisateurs de TOMCAT.
Pour cela, éditons le fichier ‘$CATALINA_HOME/conf/tomcat-users.xml’ pour que le fichier ressemble à ça :
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="xindice"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="login_utilisateur" password="password_utilisateur" roles="xindice"/>
</tomcat-users>
…en remplaçant bien sûr les valeurs login_utilisateur et password_utilisateur pas celles souhaitées.

- Il ne nous reste plus qu’à configurer l’accès à la base Xindice depuis vos scripts PHP. Pour cela dans la classe Xindice.php, effectuez les modifications suivantes dans la fonction send($xml) :
$header = "POST " .$this->url . " HTTP/1.0\n";
$header .= "User-Agent: simple\n";
$header .= "Host: " . $this->host . "\n";
$header .= "Authorization: Basic " . base64_encode($this->username .":" . $this->password) . "\n";
$header .= "Content-Type: text/xml\n";
$header .= "Content-Length: " . strlen($xml) . "\n\n";

 

Annexes

http://xml.apache.org/xindice/index.html : Site de Xindice
http://xml.apache.org/xindice/community/howto/installation/tomcat.html : Installation de Xindice avec TOMCAT
http://wiki.apache.org/xindice/XindicePHPAdmin : Browser PHP sur Xindice développé par Jim Fuller (basé sur la classe de Jill Rhoads)
http://etudiant.univ-mlv.fr/~mroussea/tomcat/tomcat.php?rub=20 : Tutorial sur TOMCAT et la sécurisation des ressources
http://marc.theaimsgroup.com/?l=xindice-users&r=1&w=2 : mailing list de Xindice

 


Cette page a été écrite dans le but de partager le maximum d'informations sur l'utilisation de Xindice et PHP. Aussi, si vous utilisez vous aussi le couple PHP/Xindice et que vous souhaitez partager vos astuces que ce soit sur l'installation et l'utilisation, n'hésitez pas à m'écrire pour que je mette à jour cette page afin que tout le monde puisse en profiter.... ! Merci d'avance. eric.mery@laposte.net
The purpose of this page is to share as many information as possible about the way of using Xindice and PHP. So if you are using also the couple PHP/indice and you want to share your tricks for both installation and use, please don't hesitate to write to me so that I can update this page and let everybody take benefit of it.Thanks in advance. eric.mery@laposte.net

retour à l'accueil