Wenn du vor der Frage stehst: Wie Elasticsearch in Homestead aufsetzen, ist dieser Beitrag für dich gemacht.
TL;DR
- Passe deine
Homestead.yaml
an: Snippet. - Provisioniere die Box.
Basis
An manchen Stellen, hilft es eine gleiche Basis zu haben.
Die Homestead.yaml
In folgenden Beispielen gehen wir einfach von folgender Homestead.yaml
aus.
Diese Datei liegt innerhalb des Homestead-Ordners.
box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
Vermutlich nutzt du eine andere Konfiguration. Das ist kein Problem.
Was ist mit Homestead-Ordner gemeint?
Der Ordner in dem dein Homestead installiert ist.
Homestead.yaml anpassen
Seit Elasticsearch das erste Mal in Homestead ein unterstütztes Feature wurde, ist der Weg um das Feature zu nutzen drei größeren Veränderungen durchlaufen.
Jeweils passen wir unsere Homestead.yaml
an und provisionieren die Box neu (vagrant provision
oder vagrant up --provision
).
Homestead v5.5
bis v5.7
[...]
elasticsearch: 6
ports:
- send: 9200
to: 9200
Ab Homestead v5.8
bis v6
Eine Neuheit in v5.8: Liste an Features.
Auf einen Schlag wurden blackfire
, grafana
, minio
ähnlich einfach nutzbar.
[...]
features:
- elasticsearch:
version: 7
ports:
- send: 9200
to: 9200
Seit Homestead v7
In Homestead v7 haben sich zwei Dinge geändert:
- Wir müssen Elasticsearch Versionen vollständig angeben. Vollständig heißt:
{major}.{minor}.{patch}
. - Wir können Services beim Start erzwingen oder deaktivieren.
[...]
features:
- elasticsearch:
version: 7.10.1
services:
- enabled:
- "elasticsearch"
ports:
- send: 9200
to: 9200
Box provisionieren
Ist die Homestead.yaml
angepasst, müssen wir noch provisionieren.
- Öffne ein Terminal deiner Wahl.
- Springe in deinen Homestead-Ordner.
- Falls die Box gestartet ist, führe
vagrant provision
aus. - Andernfalls
vagrant up --provision
.
Wie du prüfst ob Elasticsearch läuft
Nun haben wir Dinge gemacht um Elasticsearch bereitzustellen. Aber irgendwie wissen wir nicht ob Elasticsearch funktioniert.
Um das herauszufinden haben wir einige Möglichkeiten. Hier sind zwei.
In jedem Fall verbinden wir uns mit unserer Box:
- Terminal öffnen.
- In den Homestead-Ordner springen.
- Via SSH verbinden (z.B.:
vagrant ssh
).
Prüfen ob Service Elasticsearch läuft
systemctl is-active elasticsearch
Wir erwarten etwas ähnliches wie:
vagrant@homestead:~$ systemctl is-active elasticsearch
active
Sollte der service nicht aktiv sein, so können wir das ändern mit:
sudo /etc/init.d/elasticsearch restart
Elasticsearch API prüfen
Alternativ können wir HTTP Anfragen senden und schauen was zurück kommt. Daraus lernen wie ob Elasticsearch ansprechbar ist oder eben nicht.
Dafür einfach innerhalb der SSH-Verbindung:
curl localhost:9200
Daraufhin erwarten wir etwas ähnliches wie:
{
"name" : "homestead",
"cluster_name" : "homestead",
"cluster_uuid" : "nlZjeu1YQwG7btyF0uEU-A",
"version" : {
"number" : "7.10.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
"build_date" : "2020-12-05T01:00:33.671820Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Während Provisionierung Elasticsearch is already installed
, aber Service ist nicht verfügbar
Unter unglücklichen Umständen geht Homestead während der Installation davon aus, das ein Feature bereits installiert ist.
Unglückliche Umstände kann eine fehlerhafte Provisionierung durch:
- ungültiger Elasticsearch Version,
- keiner Internetverbindung,
- oder Elasticsearch down bzw. nicht erreichbar.
Solltest du in das Problem rennen, das alles sauber konfiguriert, aber Elasticsearch einfach nicht verfügbar ist, könnte es helfen die Datei ~/.homestead-features/elasticsearch
in der Box zu löschen.
sudo rm ~/.homestead-features/elasticsearch
Und eine neue Provisionierung anzustoßen.
Schreibe einen Kommentar