Le but de cet article est d'installer et d'intégrer le moteur de recherche Apache Solr pour Drupal sur une Debian Lenny.
Installation de composantes nécessaires pour Drupal
Installation LAMP
On installe classiquement toute notre architecture LAMP avec une seule commande :
# apt-get install apache2 libapache2-mod-php5 php5-mysql php5-gd php5-mcrypt php-pear php5-cli php-soap php5-curl mysql-server mysql-client cronolog subversion
# a2enmod rewrite
Création du répertoire dédié au site :
# mkdir -p /var/www/drupalsolr.domaine.tld/{var/{log/apache,tmp/upload},tmp}
Installation de drush
# cd /opt
# wget http://ftp.drupal.org/files/projects/drush-6.x-3.3.tar.gz
# tar xvzf drush-6.x-3.3.tar.gz
# rm drush-6.x-3.3.tar.gz
# ln -s /opt/drush/drush /usr/bin
Installation de drupal
Voici en quelques commandes comment installer Drupal :
# cd /var/www/drupalsolr.domaine.tld/ # drush dl drupal # mv drupal* www # cp www/sites/default/default.settings.php www/sites/default/settings.php # mkdir www/sites/default/files # mkdir www/sites/all/{modules,themes} # wget http://ftp.drupal.org/files/projects/fr-6.x-1.0.tar.gz -O www/fr-6.x-1.0.tar.gz # tar xvzf www/fr-6.x-1.0.tar.gz -C www/ # rm www/fr-6.x-1.0.tar.gz
Créer la base de données
mysql> create database drupalsolr character set utf8 ;
mysql> grant all privileges on drupalsolr.* to 'drupal_youzer'@'localhost' identified by 'password' with grant option ;
Modifier la ligne de paramétrage de la base de données dans www/sites/default/settings.php :
$db_url = 'mysql://drupal_youzer:password@localhost/drupalsolr';
Configuration Apache et droits
Sur mon svn, je met à disposition des fichiers de conf de vhost apache et un script de gestion des droits :
# cd /var/www/drupalsolr.domaine.tld/ # echo 't' | svn --username anonymous --password anonymous export https://subversion.cheramy.name/admin/drupal/etc # echo 't' | svn --username anonymous --password anonymous export https://subversion.cheramy.name/admin/drupal/scripts # sed -i 's/aremplacer/drupalsolr.domaine.tld/g' etc/* scripts/*
Au besoins adaptez les fichiers.
Le fichier etc/apache_80.conf est la configuration du vhost http
Le fichier etc/apache_443.conf est la configuration du vhost https. Attention à bien créer vos certificats (voir article sur les PKI)
Tout deux incluent le fichier etc/core.conf qui contient la configuration générique des vhosts.
Le script scripts/user_rights.sh permet de mettre à jour les droits sur les fichiers.
On exécute ce fichier et on crée les liens nécessaires pour activer les vhosts (je suppose ici que vous activez le vhost ssl) :
# ./scripts/user_rights.sh # cd /etc/apache2/sites-available # ln -s /var/www/drupalsolr.domaine.tld/etc/apache_80.conf xxx-drupalsolr.domaine.tld_80 # ln -s /var/www/drupalsolr.domaine.tld/etc/apache_443.conf yyy-drupalsolr.domaine.tld_443 # a2enmod ssl # a2ensite xxx-drupalsolr.domaine.tld_80 # a2ensite yyy-drupalsolr.domaine.tld_443 # /etc/init.d/apache2 reload
On peut maintenant finaliser l'install de Drupal via l'interface Web : http://drupalcrm.domaine.tld/install.php
Ajout de modules
# cd /var/www/drupalsolr.domaine.tld/www
# drush dl admin
# drush dl backup_migrate
# drush dl securepages
# drush dl securepages_prevent_hijack
# drush dl token
# drush dl pathauto
Activer les modules (attention de bien avoir un vhost https pour les modules securepages) :
# drush en admin -y
# drush en backup_migrate -y
# drush en pathauto -y
# drush en securepages -y
# drush en securepages_prevent_hijack -y
# drush cc all
Attention si vous n'avez pas de résolution dns à mettre la ligne suivante dans votre fichier /etc/hosts :
127.0.0.1 drupalsolr.guidtz-intra.org
Installation d'Apache Solr
Installation de Java
Apache Solr à besoins de tomcat et donc de Java, il faut donc activer les branches non-free des dépôts et installer le jdk de Java6. Voici mon fichier /etc/apt/sources.list :
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://www.backports.org/debian lenny-backports main contrib non-free
deb-src http://www.backports.org/debian lenny-backports main contrib non-free
Puis
# apt-get install sun-java6-jdk
Installation de Tomcat
Malheuresement pour nous Apache Solr à besoins d'une version 6 de Tomcat et la version dans les paquets Debian Lenny est la 5.5.
Il faut donc installer Tomcat à la main :
# cd /opt/
# wget http://apache.osuosl.org/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz
# tar xvzf apache-tomcat-6.0.29.tar.gz
# rm apache-tomcat-6.0.29.tar.gz
# ln -s /opt/apache-tomcat-6.0.29/ /opt/tomcat6
Installation d'Apache Solr
On peut maintenant mettre en place Apache Solr :
# cd /opt
# wget http://apache.osuosl.org/lucene/solr/1.4.1/apache-solr-1.4.1.tgz
# tar xvzf apache-solr-1.4.1.tgz
# rm apache-solr-1.4.1.tgz
# cp apache-solr-1.4.1/dist/apache-solr-1.4.1.war ./tomcat6/webapps/solr.war
# cp -r apache-solr-1.4.1/example/solr ./
On configure tomcat pour exécuter solr :
# mkdir -p /opt/tomcat6/conf/Catalina/localhost
# vi /opt/tomcat6/conf/Catalina/localhost/solr.xml
<Context docBase="/opt/tomcat6/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/opt/solr" override="true" />
</Context>
Configurer Tomcat
Il faut configurer Tomcat pour supporter l'UTF-8, dans le fichier /opt/tomcat6/conf/server.xml, remplacez le bloc :
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
par
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
C'est aussi dans ce bloc qu'il faut configurer l'adresse de binding de Tomcat pour le faire écouter que sur l'adresse locale, il fait bien sur ensuite faire un proxy avec Apache, mais bon c'est un autre sujet, on limitera l'accès à Tomcat avec la configuration d'un firewall (shorewall par exemple).
Il faut aussi créer un utilisateur qui puisse accéder à la partie "manager" de Tomcat, on édite le fichier /opt/tomcat6/conf/tomcat-users.xml :
<tomcat-users>
<role rolename="manager"/>
<user username="tomcat" password="azerty" roles="manager"/>
</tomcat-users>
Démarrage de Tomcat
Vu que l'on a installé Tomcat à la main, il va falloir créer un script de démarrage :
# vi /etc/init.d/tomcat
# Tomcat auto-start
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr"
export CATALINA_OPTS="-Xms64m -Xmx64m"
case $1 in
start)
sh /opt/tomcat6/bin/startup.sh
;;
stop)
sh /opt/tomcat6/bin/shutdown.sh
;;
restart)
sh /opt/tomcat6/bin/shutdown.sh
sh /opt/tomcat6/bin/startup.sh
;;
esac
exit 0
Rendre exécutable ce script puis créer les liens pour les runlevels :
# chmod 755 /etc/init.d/tomcat
# update-rc.d tomcat defaults
On démarre Tomcat et pour vérifier que tout marche on peut se connecter sur l'url : http://ip:8080 et http://ip:8080/manager
Installation et configuration du module Drupal Apache Solr
Le grand fan de la Salsa du démon (il se reconnaîtra) m'a conseillé de prendre la version Beta du module Apache Solr, on télécharge et installe donc le module Drupal suivant :
# cd /var/www/drupalsolr.guidtz-intra.org/www/sites/all/modules/
# wget http://ftp.drupal.org/files/projects/apachesolr-6.x-2.0-beta3.tar.gz
# tar xvzf apachesolr-6.x-2.0-beta3.tar.gz
# rm apachesolr-6.x-2.0-beta3.tar.gz
Pour configurer Apache Solr pour Drupal, il faut recopier les fichiers schema.xml et solrconfig.xml dans le répertoire /opt/solr/conf.
Il faut mettre en place les librairies PHP client pour Solr dans le répertoire du module apachesolr :
# svn checkout -r22 http://solr-php-client.googlecode.com/svn/trunk/ SolrPhpClient
On met à jour les droits du projet et on active le module solr :
# /var/www/drupalsolr.guidtz-intra.org/scripts/user_rights.sh
# cd /var/www/drupalsolr.guidtz-intra.org/www
# drush en apachesolr
drush en apachesolr
The following projects will be enabled: search, apachesolr
Do you really want to continue? (y/n): y
search was enabled successfully. [ok]
apachesolr was enabled successfully. [ok]
Pour finir on configure le module dans drupal :