Skip to content

Instantly share code, notes, and snippets.

@opi
Last active March 13, 2017 14:22
Show Gist options
  • Save opi/97eeafbdfe19183a7cccca81728bfbbe to your computer and use it in GitHub Desktop.
Save opi/97eeafbdfe19183a7cccca81728bfbbe to your computer and use it in GitHub Desktop.

Installation d'Apache Solr sur Debian Jessie (pour Drupal 7)

Il semble assez courant d'utiliser le moteur d'indexation Apache Solr pour Drupal via la panoplie de module autour de Search API.

Mais installer Solr n'est pas aussi simple qu'installer un module Drupal. Voici donc un guide d'installation, basé sur Debian Jessie.

Pré-requis

Apache Solr en développé en Java, il nous faut donc installer la plateforme d'execution JRE (Java Runtime Environment).

Verifions d'abord que Java ne soit pas déja installé

java -version

Si cette commande retourne une erreur du type "The program java can be found in the following packages", alors Java n'est pas présent. Nous devons l'installer

apt install default-jre

Note: d'autres préféreront installer openjdk avec la commande suivante :

apt install openjdk-7-jre

ou, si les jessie-backports sont activés :

apt install openjdk-8-jre

Installation

1/ Se placer dans un dossier temporaire

cd /tmp

2/ Télécharger la version 5.4.1 d'Apache Solr, compatible avec le module Search API Solr

wget https://archive.apache.org/dist/lucene/solr/5.4.1/solr-5.4.1.tgz

3/ Décompresser l'archive pour lancer le script d'installation

tar xzf solr-5.4.1.tgz solr-5.4.1/bin/install_solr_service.sh --strip-components=2

bash ./install_solr_service.sh solr-5.4.1.tgz

Ce script installe Apache Solr, ajoute un utilisateur unix solr, et configure un service unix pour permettre de démarrer ou d'arrêter le daemon.

Pour être sur qu'Apache Solr sera démarré lors d'un redémarrage du serveur, il faut activer ce service :

systemctl enable solr.service

## Création d'un index

Apache Solr permet de gérer plusieurs index. Nous allons en activer un, appelé exemple

mkdir /var/solr/data/exemple
chown -R solr:solr /var/solr/data/exemple/

## Protection de l'interface d'administration

A cette étape, l'interface d'administration du serveur Solr est publiquement accessible à l'adresse http://IP.DE.MON.SERVEUR:8983 (8983 étant le port par défaut d'un serveur Solr). Ça n'est pas forcement souhaitable, une personne mal intentionnée pourrait vider l'index ou effectuer d'autres taches d'administration.

Nous allons donc configurer Solr (via son serveur HTTP Jetty) pour être accessible uniquement via l'IP locale.

Dans le fichier /opt/solr/server/etc/jetty-http.xml, cherchez la ligne contenant le terme jetty.host et ajouter l'attribut default="127.0.0.1". Nous devons obtenir la ligne suivante :

<Set name="host"><Property name="jetty.host" default="127.0.0.1" /></Set>

Ainsi, l'interface d'administration est uniquement accessible à l'adresse http://127.0.0.1:8983. C'est plus sécurisé, mais finalement pas pratique car on ne peut pas y acceder depuis notre navigateur.

## Proxy

Mettons en place un Proxy Apache afin d'acceder à cette interface d'administration depuis l'exterieur.

Note : La configuration pour Nginx ne devrait pas être trop différente.

1/ Activer les modules proxy/http pour Apache

a2enmod proxy
a2enmod proxy_http

2/ Créer un VirtualHost

Ajouter un fichier /etc/apache2/sites-available/solr.conf et ajouter la configuration suivante :

<VirtualHost *:80>
    # URL pour l'interface d'administration Solr
    ServerName solr.mon-site.fr

    # Réécriture des URL
    RewriteEngine On
    RewriteRule ^\/solr(.*)$ $1 [L,R]

    # Configuration du proxy
    ProxyPreserveHost off
    ProxyRequests off
    ProxyPass / http://127.0.0.1:8983/solr/
    ProxyPassReverse / http://127.0.0.1:8983/solr/

    # Protection par mot de passe de cette url
    <Proxy *>
        Order deny,allow
        Allow from all
        
        AuthType Basic
        AuthName "Password Required"
        AuthUserFile /etc/apache2/conf/.solr-htpasswd
        Require valid-user
    </Proxy>
</VirtualHost>

3/ Mot de passe

L'accès à l'interface d'administration sera protégée par un mot de passe, il nous faut le définir. En supposant que le paquet apache2-utils soit installé, definissons notre mot de passe avec la commande suivante :

htpasswd -c /etc/apache2/conf/.solr-htpasswd solr

Cette commande vous demande de saisir un mot de passe (ou mieux, une phrase de passe).

Ici solr est l'identifiant associé au mot de passe. Nous sommes libre de le choisir.

4/ Relancer Apache

apache2ctl graceful

Si tout c'est bien passé, on doit pouvoir acceder a l'interface d'administration de notre serveur Apache Solr a l'adresse définie dans notre VirtualHost Apache, ici http://solr.mon-site.fr, en utilisant le mot de passe généré.

Modules Drupal

Documentation

Différentes ressources qui m'ont aidé pour l'installation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment