153 lines
5.7 KiB
Markdown
153 lines
5.7 KiB
Markdown
---
|
|
categories: databases bdd nosql
|
|
title: Howto Meilisearch
|
|
...
|
|
|
|
- Documentation : [https://www.meilisearch.com/docs](https://www.meilisearch.com/docs)
|
|
- Code : [https://github.com/meilisearch/meilisearch](https://github.com/meilisearch/meilisearch)
|
|
- Licence : [MIT License](https://github.com/meilisearch/meilisearch/blob/main/LICENSE)
|
|
- Langage : Rust
|
|
|
|
**Meilisearch** est un engin de recherche doté d'une API RESTful. Mis à disposition aux conditions de la licence MIT et écrit en Rust, il se démarque de ses concurrents (Elasticsearch, Algolia, etc. Voir le [tableau comparatif](https://www.meilisearch.com/docs/learn/what_is_meilisearch/comparison_to_alternatives)) par sa rapidité d'exécution et un focus sur l'expérience utilisateur. Les données de Meilisearch sont stockées dans [LMDB](https://www.meilisearch.com/docs/learn/advanced/storage#understanding-lmdb).
|
|
|
|
# Requis
|
|
|
|
Le code roule sur [différents systèmes d'exploitation](https://www.meilisearch.com/docs/learn/getting_started/installation#supported-operating-systems) dont les principales distributions de GNU/Linux utilisant `glibc 2.27` ou + sur l'architecture matérielle `amd64/x86_64`.
|
|
|
|
# Installation
|
|
|
|
Une [procédure](https://www.meilisearch.com/docs/learn/cookbooks/running_production) d'installation pour Debian est disponible dans la documentation officielle.
|
|
|
|
La première étape est d'ajouter le dépôt privé du développeur avant d'installer le paquet Debian :
|
|
|
|
~~~
|
|
# echo "deb [trusted=yes] https://apt.fury.io/meilisearch/ /" | tee /etc/apt/sources.list.d/fury.list
|
|
# apt update && apt install meilisearch
|
|
~~~
|
|
|
|
Ensuite on ajoute un nouvel utilisateur UNIX non privilégié qui sera chargé d'exécuter Meilisearch :
|
|
|
|
~~~
|
|
# useradd -d /home/meilisearch -b /bin/false -m -r meilisearch
|
|
~~~
|
|
|
|
Puis on récupère une copie du fichier de configuration principal qu'on ajuste ensuite au besoin :
|
|
|
|
~~~
|
|
# curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > /etc/meilisearch.toml
|
|
# chown meilisearch: /etc/meilisearch.toml
|
|
# editor /etc/meilisearch.toml
|
|
~~~
|
|
|
|
Voici un exemple de contenu pertinent pour le fichier `/etc/meilisearch.toml` :
|
|
|
|
~~~
|
|
env = "production"
|
|
master_key = "YOUR_MASTER_KEY_VALUE"
|
|
db_path = "/home/meilisearch/data"
|
|
dump_dir = "/home/meilisearch/dumps"
|
|
snapshot_dir = "/home/meilisearch/snapshots"
|
|
~~~
|
|
|
|
Pour des raisons de sécurité évidentes, il faut mettre une vraie chaîne aléatoire (générée par exemple via la commande `apg -n1 -m64`) à la place de `YOUR_MASTER_KEY_VALUE`. Aussi, les répertoires cités ci-haut n'existent pas encore, alors il faut les ajouter :
|
|
|
|
~~~
|
|
# sudo -iu meilisearch
|
|
$ mkdir data dumps snapshots log
|
|
$ exit
|
|
~~~
|
|
|
|
Meilisearch peut être lancé via systemd. On commence par éditer un nouveau fichier de configuration nommé `/etc/systemd/system/meilisearch.service` dans lequel on insère quelque chose comme ceci :
|
|
|
|
~~~
|
|
[Unit]
|
|
Description=Meilisearch
|
|
After=systemd-user-sessions.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
WorkingDirectory=/home/meilisearch
|
|
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
|
|
User=meilisearch
|
|
Group=meilisearch
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
~~~
|
|
|
|
... et on lance la nouvelle unité systemd après l'avoir activée :
|
|
|
|
~~~
|
|
# systemctl enable --now meilisearch
|
|
# systemctl status meilisearch
|
|
~~~
|
|
|
|
Le service Meilisearch est maintenant prêt à fonctionner en local (`127.0.0.1:7700`). On voudra probablement le faire communiquer avec le monde extérieur via un serveur mandataire (*proxy*) comme Nginx, HAProxy ou Apache. La doc officielle [donne un exemple pour nginx](https://www.meilisearch.com/docs/learn/cookbooks/running_production#step-5-secure-and-finish-your-setup). En voici un autre pour Apache, qui aura besoin d'un fichier de configuration pour vhost (disons `/etc/apache2/sites-available/meilisearch.conf`) semblable à celui-ci :
|
|
|
|
~~~
|
|
<VirtualHost *:80 *:443>
|
|
|
|
# FQDN principal
|
|
ServerName meilisearch.evolix.net
|
|
|
|
# Repertoire principal
|
|
DocumentRoot /home/meilisearch/www/
|
|
|
|
# SSL
|
|
SSLEngine On
|
|
SSLCertificateFile /etc/letsencrypt/meilisearch/live/fullchain.pem
|
|
SSLCertificateKeyFile /etc/ssl/private/meilisearch.key
|
|
|
|
# Propriete du repertoire
|
|
<Directory /home/meilisearch/www/>
|
|
Require all denied
|
|
Include /etc/apache2/whitelist.conf
|
|
</Directory>
|
|
|
|
# user - group
|
|
AssignUserID meilisearch meilisearch
|
|
|
|
# LOG
|
|
CustomLog /var/log/apache2/access.log vhost_combined
|
|
CustomLog /home/meilisearch/log/access.log combined
|
|
ErrorLog /home/meilisearch/log/error.log
|
|
|
|
# REDIR HTTPS
|
|
RewriteEngine On
|
|
RewriteCond %{HTTPS} !=on
|
|
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
|
|
RewriteRule ^ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
|
|
|
|
ProxyPreserveHost On
|
|
ProxyPass / http://localhost:7700
|
|
ProxyPassReverse / http://localhost:7700
|
|
<Proxy *>
|
|
Require all denied
|
|
Include /etc/apache2/whitelist.conf
|
|
</Proxy>
|
|
|
|
</VirtualHost>
|
|
~~~
|
|
|
|
Le vhost donné en exemple ci-haut écoute sur les ports 80 et 443 (SSL), force la redirection sur `https://` et n'autorise l'accès qu'à une liste d'adresses IP de confiance. Aussi, la directive `AssignUserID` suppose l'installation de Apache 2 MPM ITK. L'activation du vhost se fait de la manière suivante :
|
|
|
|
~~~
|
|
# a2ensite meilisearch
|
|
# apache2ctl -t && { systemctl reload apache2.service; systemctl status apache2.service; }
|
|
~~~
|
|
|
|
Voir [HowtoApache](HowtoApache) au besoin pour plus d'informations.
|
|
|
|
# Mise à jour
|
|
|
|
~~~
|
|
# apt-get update
|
|
# apt-get upgrade meilisearch
|
|
# systemctl restart meilisearch
|
|
~~~
|
|
|
|
# Utilisation
|
|
|
|
Voir le [guide de démarrage rapide](https://www.meilisearch.com/docs/learn/getting_started/quick_start) pour apprendre comment ajouter des documents dans la base de données de Meilisearch, gérer l'indexation et effectuer des recherches.
|