Outils pour utilisateurs

Outils du site


installer_solr

Installer Solr

Sources :

Cas d'utilisation

Le cas d'utilisation décrit est l'installation d'une instance de Solr sur un serveur Debian 7/8 en vue de prototypage1).

Plus précisément, on choisit la version de Solr que l'ont installe et on utilise une version packagée intégrant un serveur de servlet. Autrement dit, aucun autre composant serveur ne sera nécessaire. En revanche, la présence d'une version minimale de Java JRE reste un pré-requis.

Bien que le système cible soit équipé de Virtualmin, l'installation de Solr sera indépendante de Virtualmin2).

Récupération de la version

Dans notre cas, le choix de version de Solr (5.4.1) est dicté par l'application, basée sur une instance Drupal 7 et interfacée via un module communautaire.

On récupère la version souhaitée de Solr via la page d'archivage des versions.

Installation

Comme indiqué en introduction, la version de Solr choisie incorpore le serveur de servlet. Il est donc inutile d'installer Java, Tomcat, etc.

Principe

  • télécharger l'archive et la somme de contrôle
  • vérifier la somme de contrôle
  • décompresser l'archive dans un répertoire de travail
  • installer JRE, s'il n'est pas déjà présent3)
  • lancer le script d'installation de Solr en tant que service

Pré-requis

Afin de procéder correctement à une installation correcte :

  • le système doit être muni de la commande sudo (sinon apt-get install sudo)
  • l'installation doit être effectué par une utilisatrice disposant des droits de sudo (et non par root)

Dans tous les cas, Solr sera installé et configuré pour être exécuté avec les droits de l'utilisatrice solr, automatiquement créée.

Actions

$ cd /tmp
$ wget http://archive.apache.org/dist/lucene/solr/5.4.1/solr-5.4.1.tgz
$ wget http://archive.apache.org/dist/lucene/solr/5.4.1/solr-5.4.1.tgz.md5
$ md5sum -c solr-5.4.1.tgz.md5

Sachant syntaxe du script d'installation est la suivante :

install_solr_service.sh <archive_compressée_de_Solr> [OPTIONS]

il est inutile de décompresser toute l'archive. On se contente d'extraire le script d'installation :

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

Installer Java (on a choisi une version légère de JRE)

$ sudo apt-get install openjdk-7-jre-headless

puis de lancer l'exécution du script:

$ sudo ./install_solr_service.sh solr-5.4.1.tgz

Voici l'affichage typique produit par le script d'installation se déroulant sans erreur4).

id: solr : utilisateur inexistant
Creating new user: solr
Ajout de l'utilisateur système « solr » (UID 117) ...
Ajout du nouveau groupe « solr » (GID 122) ...
Ajout du nouvel utilisateur « solr » (UID 117) avec pour groupe d'appartenance « solr » ...
Création du répertoire personnel « /var/solr »...

Extracting solr-5.4.1.tgz to /opt


Installing symlink /opt/solr -> /opt/solr-5.4.1 ...


Installing /etc/init.d/solr script ...


Installing /etc/default/solr.in.sh ...

● solr.service - LSB: Controls Apache Solr as a Service
   Loaded: loaded (/etc/init.d/solr)
   Active: active (running) since lun. 2017-07-17 15:35:02 CEST; 5s ago
  Process: 9215 ExecStart=/etc/init.d/solr start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/solr.service
           └─9264 java -server -Xms512m -Xmx512m -XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:TargetSurvivorRat...

juil. 17 15:34:56 server8 su[9217]: Successful su for solr by root
juil. 17 15:34:56 server8 su[9217]: + ??? root:solr
juil. 17 15:34:56 server8 su[9217]: pam_unix(su:session): session opened for user solr by (uid=0)
juil. 17 15:35:02 server8 solr[9215]: [169B blob data]
juil. 17 15:35:02 server8 solr[9215]: Started Solr server on port 8983 (pid=9264). Happy searching!
juil. 17 15:35:02 server8 systemd[1]: Started LSB: Controls Apache Solr as a Service.
juil. 17 15:35:02 server8 solr[9215]: [14B blob data]
Service solr installed.

On constate que l'installation a été suivie de l'activation réussie du service. À tout moment, il est possible de s'informer sur l'état du service Solr :

$ sudo service solr status

On s'assure que l'interface web d'administration est bien accessible. D'abord localement sur depuis le serveur lui-même :

$ lynx http://localhost:8983/

puis, depuis un autre système/ordi, avec un navigateur graphique, en pointant sur l'url : http://hostname:8983/ , où hostname est le nom du serveur.

Si tout s'est bien déroulé, on constate que Solr est actif mais qu'il n'existe aucun Core.

Créer un Core

Solr ayant été installé en mode standalone5), nous allons créer un Core6).

Notre objectif étant d'exploiter Solr à travers le module communautaire de Drupal dénommé Search API Solr Search, nous allons nous appuyer sur les fichiers de configuration Solr proposés par ce module. Ces fichiers sont contenus dans un répertoire modèle structuré au format attendu par Solr.

Dans l'exemple traité, on crée deux Core Solr : un pour l'application en production, l'autre pour l'application en pré-production.

Principe

  1. récupérer le module
  2. en extraire le répertoire de configuration de Solr correspondant à la version installée
  3. créer un le core de prodcution à partir de cette configuration
  4. créer un le core de pré-prodcution à partir de cette même7) configuration.

Action

$ cd /tmp
$ wget https://ftp.drupal.org/files/projects/search_api_solr-7.x-1.12.tar.gz
$ tar xf search_api_solr-7.x-1.12.tar.gz search_api_solr/solr-conf/5.x --strip-components=2
$ sudo su - solr -c "/opt/solr/bin/solr create -c drupal_prod -d /tmp/5.x -n drupal_prod"
$ sudo su - solr -c "/opt/solr/bin/solr create -c drupal_pre_prod -d /tmp/5.x -n drupal_pre_prod"

Dans l'exemple, le répertoire cible de configuration (-c) et le “nom logique” (-n) qui sera utilisé par Solr sont identiques. C'est un choix, par une obligation ! En revanche, on voit que le répertoire contenant le modèle de configuration (-d) utilisé (/tmp/5.x) existe de manière autonome.

Si l'on souhaite supprimer un core existant, on le désigne par le nom du répertoire cible de configuration.

$ sudo su - solr -c "/opt/solr/bin/solr delete -c drupal_pre_prod"

Et pour en savoir plus sur la commande de création de Core, autant demander à la commande elle-même :

$ sudo su - solr -c "/opt/solr/bin/solr create -help"

Protection

L'interface Web d'administration de Solr ne bénéficie d'aucune protection. Si le serveur ne se trouve derrière un pare-feu correctement configuré, il convient de mettre en place un contrôle d'accès.

À défaut d'inspiration ou de temps pour installer une protection efficace et proportionnée, mettre en place un blocage total depuis internet tout en autorisant l'accès local depuis le serveur:
$ sudo iptables -A INPUT -p tcp -s localhost --dport 8983 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 8983 -j DROP

Il pourra être intéressant d'autoriser un poste d'adaministration ou tout un réseau. La première règle donne le motif à utiliser, en remplaçant localhost par ce qui convient à votre cas. Suppression des règles(Pour un mini-mémo sur l'ajout et la suppression de règles : How To List and Delete Iptables Firewall Rules.)) :

$ sudo iptables -D INPUT -p tcp --dport 8983 -j DROP
$ sudo iptables -D INPUT -p tcp -s localhost --dport 8983 -j ACCEPT
1)
Comprendre : à ne pas suivre pour une mise en production.
2)
Comprendre : Solr ne sera pas un serveur virtuel au sens de Virtualmin.
3)
La commande : “which java” indiquera si java est disponible.
4)
En cas d'erreur, lire les messages depuis le début qui peut être chassé par le mode d'emploi du script, par défilement dans la fenêtre de terminal.
5)
Et non SolrCloud.
6)
Et non une Collection.
7)
Logique ! En production et pré-production, il s'agit de la même application, la même interface et les mêmes données.
installer_solr.txt · Dernière modification: 2017/07/19 09:38 par flaz