Installation de Apache Solr pour TYPO3

De Typo3 CMS / Documentation Typo3 / Support Typo3.

Note d'installation brute. A affiner et remettre en forme

Sommaire

Installation de Apache Tomcat et Solr

aptitude update
aptitude install tomcat6 tomcat6-admin

Téléchargement et installation de Solr

wget http://apache.cict.fr//lucene/solr/1.4.1/apache-solr-1.4.1.tgz
tar xvfz apache-solr-1.4.1.tgz
cd apache-solr-1.4.1
cp dist/apache-solr-1.4.1.war /var/lib/tomcat6/webapps/solr.war

Configuration de Solr en single core

Par défaut Solr fonctionne en mode single core. Si vous n'avez qu'un seul site a indexer dans une seul langue cette configuration est suffisante.

Depuis les fichiers de l'installation TYPO3 (/opt/solr-tomcat/ )

cp -fr solr /var/lib/tomcat6/
chown -R tomcat6:tomcat6 /var/lib/tomcat6/solr

Dans le fichiers /var/lib/tomcat6/solr/conf/solrconfig.xml Rechercher "<lockType>native</lockType>" remplacer par " <lockType>simple</lockType>"

// A vérifier l'utilité Rechercher "<unlockOnStartup>false</unlockOnStartup>" remplacer par "<unlockOnStartup>true</unlockOnStartup>"

Pour les tests, ensuite a affiner pour la mise en prod, rechercher : " <maxTime>3600000</maxTime>" remplacer par "<maxTime>10000</maxTime>"


Rédémarrer tomcat

/etc/init.d/tomcat6 restart


Configuration de Solr en multi-core

Le fichier "solr.xml" Créer un fichier solr.xml dans le home de votre de solr (dans notre cas il s'agit de /var/lib/tomcat6/solr/)

<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true" sharedLib="lib">
  <cores adminPath="/admin/cores">
    <core name="monsite1" instanceDir="monsite1" />
    <core name="monsite2" instanceDir="monsite2" />
  </cores>
</solr>

Détaillons le fichiers :

  • solr.cores.adminPath correspond au path relatif pour l'accès a l'administration des différentes site, normalement celui proposé par défaut devrait convenir a la plupart des configuration.
  • solr.cores.core.name : cet attribut indique le nom par lequel vous accederer a la configuation du site depuis l'interface web. Dans notre exemple on aura http://localhost/solr/monsite1/admin/ et http://localhost/solr/monsite2/admin/
  • solr.cores.core.instanceDir : correspond au dossier dans lequel sont stocker les informations et donnée spécifique au site. La path est relative au home de solr, nous aurons donc ici deux dossiers, "/var/lib/tomcat6/solr/monsite1/" et "/var/lib/tomcat6/solr/monsite2/"

Dans chaque dossier de site on crée un dossier de configuration "conf" contenu a minima un fichier schema.xml et un fichier solrconfig.xml spécifique a chaque site. Vous pouvez copier le dossier conf du solr.home dans pour créer le dossier conf de chaque site.

Dans le fichier solrconfig.xml de chaque site modifier recherche la ligne :

<lib dir="./typo3/" />

Et la modifier afin d'obtenir

<lib dir="../typo3/" />


Rédémarrer tomcat

/etc/init.d/tomcat6 restart


Problèmes rencontrés et solutions

Erreur "Too many open files"

Après avoir indexed un certain nombre de page et donc générer des fichiers d'indexation on peut avoir lors d'un redémarrage de tomcat6 une erreur "GRAVE" du type :

GRAVE: java.lang.RuntimeException: java.io.FileNotFoundException: /var/lib/tomcat6/solr/data/index/_i.tvd (Too many open files)

Il semble qu'il y n'ai pas de solution officielle pour ce problème. Il est en revanche possible de le contourner en modifiant le fichier "/etc/init.d/tomcat6". Il faut ajouter les deux lignes suivantes en début de script.

ulimit -Hn 16384
ulimit -Sn 16384

Le nombre correspond à la nouvelle limite (qui est par défaut a 1024). Le -H correspond au fichier ouvert en "Hard". Le -S correspond au fichier ouvert en "Soft".

Outils personnels

Formation Typo3 à Paris
Boite Oblady