Page suivante

Installation de Nutch 0.8.1 sous Ubuntu 6.10

Nutch est un projet Open Source de moteur de recherche. En voici la description faite par le site francophone Frutch :

"Cette initiative a pour but de développer, déployer, intégrer et maintenir un moteur de recherche totalement transparent. C'est à dire de mettre à la disposition de chacun un moteur à la fois flexible, impartial, gratuit, coopératif et indépendant."

Nutch peut être utilisé en interne comme moteur de recherche. C'est cette utilisation que nous allons aborder ici.

Ce tutoriel décrit l'installation du JDK Java de Sun, du serveur Tomcat 5, et du moteur de recherche Nutch 0.8.1 sur une distribution Linux Ubuntu 6.10.
L'installation décrite permet de faire fonctionner Nutch et de "crawler" une URL. Libre à vous de modifier les procédures pour les adapter à vos besoins.

Ubuntu 6.10 "Edgy Eft"

La version d'Ubuntu utilisée ici est la plus simple possible : une version "serveur" minimaliste, sans serveur X, sans LAMP ni serveur DNS. L'image ISO utilisée pour installer cette version est : ubuntu-6.10-server-i386.iso, téléchargeable sur les différents mirroirs Ubuntu.
Nous ne rentrerons pas dans le détail de l'installation ici du système, consultez pour plus d'informations le site ubuntu-fr, extrêmement riche en documentation et tutoriels, dont je me suis aidé pour les parties Java et Tomcat.

Rappel : le compte root sous Ubuntu

Sous Ubuntu, le compte root ne peut pas ouvrir de session. Pour effectuer toutes les opérations d'administration, connectez-vous avec le compte utilisateur créé à l'installation, puis faites un

sudo -s

Le mot de passe demandé est celui du compte utilisateur. A partir de là, vous travaillez en tant que root.

Mise à jour de Ubuntu

Par précaution, mieux vaut mettre à jour votre système avant de commencer l'installation des différents éléments. Comme nous allons avoir besoin d'utiliser des paquets Debian qui ne trouvent pas sur les sources d'installations par défaut, nous allons commencer par modifier la liste des dépôts APT.
Avec l'éditeur vi ou tout autre éditeur de fichier texte, éditer le fichier /etc/apt/sources.list, qui doit ressembler à peu près à ceci :

#
# deb cdrom:[Ubuntu-Server 6.10 _Edgy Eft_ - Release i386 (20061025.1)]/ edgy main restricted

deb cdrom:[Ubuntu-Server 6.10 _Edgy Eft_ - Release i386 (20061025.1)]/ edgy main restricted

deb http://fr.archive.ubuntu.com/ubuntu/ edgy main restricted
deb-src http://fr.archive.ubuntu.com/ubuntu/ edgy main restricted

(...)

Nous allons ajouter les dépôts universe et multiverse à la ligne "deb" :

#
# deb cdrom:[Ubuntu-Server 6.10 _Edgy Eft_ - Release i386 (20061025.1)]/ edgy main restricted

deb cdrom:[Ubuntu-Server 6.10 _Edgy Eft_ - Release i386 (20061025.1)]/ edgy main restricted

deb http://fr.archive.ubuntu.com/ubuntu/ edgy main restricted universe multiverse
deb-src http://fr.archive.ubuntu.com/ubuntu/ edgy main restricted

(...)

Enregistrer et fermer le fichier, puis passer à la mise à jour du système :

apt-get update
apt-get upgrade

Haut

Sun Java JDK

Le serveur Tomcat nécessite la présence de Java.
Si les dépôts APT ont bien été configurés comme décrit plus haut, l'installation de Java JDK se fait très simplement par la commande suivante :

apt-get install sun-java5-jdk

Une fois l'installation terminée, vérifiez son fonctionnement :

java -version

Cette instruction doit vous retourner les informations sur la version de Java qui vient d'être installée.
Si vous obtenez un message d'erreur du style java : command not found, consultez cette page de ubuntu-fr pour essayer de résoudre votre problème.

Variable d'environnement NUTCH_JAVA_HOME

Editer le fichier /etc/profile et ajouter les lignes suivantes

NUTCH_JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.08
export NUTCH_JAVA_HOME

Vérifiez que NUTCH_JAVA_HOME pointe sur le répertoire d'installation Java de votre système.

Vous pouvez également simplifier l'accès à ce chemin en créant un lien symbolique nommé java dans le répertoire jvm, et faire pointer NUTCH_JAVA_HOME sur ce lien. La commande à utiliser pour créer le lien symbolique est :

ln -s /usr/lib/jvm/java-1.5.0-sun-1.5.0.08 /usr/lib/jvm/java

(en supposant que Java s'est installé dans /usr/lib/jvm/java-1.5.0-sun-1.5.0.08)

Haut

Serveur Apache Tomcat 5

L'installation de Tomcat est également très simple si vous avez bien ajouté les nouveaux dépôts APT.

Tapez la commande suivante :

apt-get install tomcat5

Pour vérifier le bon fonctionnement de Tomcat après son installation, entrez l'adresse suivante dans un navigateur : http://votre_machine_ubuntu:8180

Si vous obtenez "Liste du répertoire pour /" dans un écran signé Apache Tomcat/5.x, tout va bien.

En cas de problème, consultez la documentation Tomcat de ubuntu-fr.

Haut

Nutch 0.8.1

Installation du logiciel

Commencez par télécharger le fichier nutch-0.8.1.tar.gz sur le site Apache et placez le dans /usr/lib.
Décompressez l'archive :

tar -zxvf nutch-0.8.1.tar.gz

puis créez un lien symbolique pour faciliter l'accès au dossier :

ln -s /usr/lib/nutch-0.8.1 /usr/lib/nutch

Vous pouvez supprimer le fichier nutch-0.8.1.tar.gz

Emplacement de la cible de Nutch

Créez un dossier urls dans le dossier d'installation de Nutch, puis un fichier urls.txt dans ce dossier :

mkdir /usr/lib/nutch/urls
touch /usr/lib/nutch/urls.txt


Editer le fichier urls.txt, pour y entrer les adresses des sites que vous souhaitez indexer. Par exemple :


http://premierserveur.mon_intranet.fr/dossier_1
http://secondserveur.mon_intranet.fr/dossier_8

Configuration de Nutch

Editer le fichier /usr/lib/nutch/conf/crawl-urlfilter.txt.
Dans la ligne des extensions ignorées, supprimer les extensions de fichier que souhaitez indexer. Les extensions exploitables ignorées par défaut sont Microsoft Powerpoint (ppt) et Excel (xls). Vous pouvez également retirer les fichier image de type jpg, gif, auquel cas leurs noms seront indexés.


# skip image and other suffixes we can't yet parse -\.(gif|GIF|jpg|JPG|ico|ICO|css|sit|eps|wmf|zip|xls|ppt|mpg|gz|rpm|tgz|mov|MOV|exe|png)$

Dans la ligne # accept hosts in MY.DOMAIN.NAME, modifier en remplaçant MYDOMAINNAME par votre nom de domaine. Pour enlever la limitation au nom de domaine, supprimer le texte MYDOMAINNAME.


# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MYDOMAINAME/

Enfin, en dernière ligne, si vous souhaitez supprimer la limitation au nom de domaine de la ligne précédente, faire la modification suivante :


# skip everything else
-.

Remplacer par :

# accept everything else
+.

Editer le fichier /usr/lib/nutch/conf/nutch-default.xml, trouver le paramètre http.agent.name et entrer un nom :


<value>NUTCHCRAWLER</value>

Pour supprimer la limitation de taille des fichiers analysés en http, trouver le paramètre http.content.limit et remplacer la valeur par défaut 65536 par -1.


<property>
  <name>http.content.limit</name>
    <value>-1</value>

Pour supprimer la limitation du nombre de tokens de l'indexer (qui peut tronquer les documents bureautiques de type Word ou Excel), trouver le paramètre indexer.max.tokens. La documentation de Nutch propose d'utiliser la variable Integer.MAX_VALUE. Mais après plusieurs essais, il semble que cette variable ne soit pas prise en compte. Pour contourner ce problème, on peut utiliser la valeur maximale d'un entier Java 32 bits signé, soit 2147483647.


<property>
  <name>indexer.max.tokens</name>
    <value>2147483647</value>

Pour activer tous les plugins qui permettent d'indexer les documents bureautiques de type Microsoft Word, Excel, Powerpoint et les fichiers PDF, trouver la partie plugin.includes, et ajouter pdf|msword|mspowerpoint|msexcel ainsi que analysis-(fr) dans la ligne.


<property>
  <name>plugin.includes</name>
    <value> protocol-http|urlfilter-regex|parse-(text|html|js|pdf|msword|mspowerpoint|msexcel)
|index-basic|query-(basic|site|url)|summary-basic|scoring-opic|analysis-(fr)</value>

Lancement de l'indexation

Nutch est maintenant prêt à réaliser la première indexation de votre intranet. Placez vous dans le dossier /usr/lib/nutch et lancez la commande :

bin/nutch crawl urls -dir crawldir -depth 3

où :

Haut

Configuration de Tomcat

L'indexation terminée, si tout s'est bien passé, un dossier crawldir a été créé dans le répertoire d'installation de Nutch.

Nous allons maintenant configurer Tomcat pour qu'il publie la page de recherche générée par Nutch. Arrêtez Tomcat :

/etc/init.d/tomcat5 stop

Supprimez le dossier ROOT du répertoire de publication de Tomcat. Par défaut ce répertoire se trouve dans /usr/share/tomcat5/webapps :

rm -rf /usr/share/tomcat5/webapps/ROOT*

(Attention à cette commande !! Mal utilisé, un rm -rf peut être dévastateur, car il supprime toute une arborescence !)

Il faut maintenant copier le fichier nutch-0.8.1.war dans le dossier webapps de Tomcat, et le renommer ROOT.war. Lorsque nous le redémarrerons, Tomcat décompressera ce fichier dans un dossier ROOT, qui contiendra l'arborescence Web de Nutch.

Haut

Sécurité Java de Tomcat

Nous devons modifier certains paramètres de sécurité du serveur Tomcat pour que Nutch fonctionne correctement. Cet article très complet de Sourceforge.net décrit le détail des différentes erreurs Java que l'on rencontre par défaut avec Nutch, et comment les contourner.
La configuration se fait dans le fichier /etc/tomcat5/policy.d/04webapps.policy dans lequel nous allons ajouter des autorisations. En début de fichier, trouvez la section grant { et ajoutez les lignes suivantes :


grant {
 // Modifications pour Nutch
  permission java.util.logging.LoggingPermission "control", "";
  permission java.io.FilePermission "./*", "read,write,execute,delete";
  permission java.util.PropertyPermission "user.dir", "read";
  permission java.util.PropertyPermission "disableLuceneLocks", "read";
  permission java.util.PropertyPermission "java.io.tmpdir", "read";
  permission java.util.PropertyPermission "org.apache.*", "read";
  permission java.io.FilePermission "/-", "read,write,execute,delete";
  permission java.lang.RuntimePermission "createClassLoader", "";

Veillez à bien respecter la casse !
En théorie, ces autorisations suffisent. Il se peut néanmoins que de nouvelles erreurs de type java.lang.NoClassDefFoundError apparaissent lorsque des recherches sont lancées. Dans ce cas, une solution est d'ajouter la ligne suivante dans la même section :

permission java.security.AllPermission;

Attention, il est fort possible que des failles de sécurité soient ouvertes par cette commande.

Haut

Démarrage de Tomcat

Se placer dans le répertoire crawldir de Nutch, et démarrer le serveur Tomcat :

/etc/init.d/tomcat5 start

Attendre quelques instants, puis arrêter de nouveau Tomcat.

/etc/init.d/tomcat5 stop

Dans le dossier /usr/share/tomcat5/webapps/, un dossier ROOT a du être créé par Tomcat. Vous pouvez supprimer le fichier ROOT.war que vous y avez copié lors de la configuration de Tomcat.

Editer le fichier /usr/share/tomcat5/webapps/ROOT/WEB-INF/classes/nutch-default.xml et trouver la section searcher.dir. Remplacer la valeur crawl par le chemin d'accès complet au répertoire crawldir de Nutch créé à l'indexation :


<property>
  <name>searcher.dir</name>
    <value>/usr/lib/nutch/crawldir</value>

Faites la même modification dans le fichier /usr/lib/nutch/conf/nutch-default.xml.

Vous pouvez maintenant démarrer Tomcat, en tapant :

/etc/init.d/tomcat5 start

La page de recherche de Nutch est à présent accessible sur http://votre_machine_ubuntu:8180 . Lancez une requête et vérifiez le résultat. Si vous obtenez une erreur java.lang.NoClassDefFoundError, vérifiez les paramètres de sécurité Java de Tomcat.

Page suivante

Arnaud Goupil - - Dernière modification : 22/08/2010 à 10:18.