web-dev-qa-db-fra.com

Impossible de démarrer elasticsearch en tant que service dans Ubuntu 16.04

J'ai récemment mis à niveau ma machine depuis Ubuntu 14.04 à 16.04. J'ai du mal à utiliser le elasticsearch comme service. I installéelasticsearch en utilisant:

Sudo apt-get install elasticsearch

Maintenant Sudo service elasticsearch status la commande me montre ce résultat:

elasticsearch.service - LSB: Starts elasticsearch
   Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled)
   Active: active (exited) since Sat 2016-07-30 18:28:13 BDT; 1h 19min ago
     Docs: man:systemd-sysv-generator(8)
 Main PID: 7988 (code=exited, status=1/FAILURE)
   CGroup: /system.slice/elasticsearch.service

Jul 30 18:28:13 dimik elasticsearch[10266]: [warning] /etc/init.d/elasticsearch: No Java runtime was found
Jul 30 18:28:13 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 18:28:46 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 18:35:30 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 19:04:36 dimik systemd[1]: Started A search engine.
Jul 30 19:07:48 dimik systemd[1]: Started A search engine.
Jul 30 19:27:01 dimik systemd[1]: Started A search engine.
Jul 30 19:27:51 dimik systemd[1]: Started A search engine.
Jul 30 19:28:54 dimik systemd[1]: Started A search engine.
Jul 30 19:29:18 dimik systemd[1]: Started LSB: Starts elasticsearch.

Bien que Java est installé sur ma machine et je peux démarrer le serveur en utilisant cette commande.

Sudo /usr/share/elasticsearch/bin/elasticsearch

Je suis un peu coincé ici. Toute aide serait appréciée.

Modifier

Après avoir configuré Java_HOME pour rooter l'erreur:

elasticsearch.service - LSB: Starts elasticsearch
   Loaded: loaded (/etc/init.d/elasticsearch; bad; vendor preset: enabled)
   Active: active (exited) since Sat 2016-07-30 18:28:13 BDT; 3h 32min ago
     Docs: man:systemd-sysv-generator(8)
 Main PID: 7988 (code=exited, status=1/FAILURE)
   CGroup: /system.slice/elasticsearch.service

Jul 30 18:35:30 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 19:04:36 dimik systemd[1]: Started A search engine.
Jul 30 19:07:48 dimik systemd[1]: Started A search engine.
Jul 30 19:27:01 dimik systemd[1]: Started A search engine.
Jul 30 19:27:51 dimik systemd[1]: Started A search engine.
Jul 30 19:28:54 dimik systemd[1]: Started A search engine.
Jul 30 19:29:18 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 20:02:07 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 20:20:21 dimik systemd[1]: Started LSB: Starts elasticsearch.
Jul 30 21:59:21 dimik systemd[1]: Started LSB: Starts elasticsearch.
12
salmanwahed

J'ai trouvé la solution à ce problème. La solution vient de ce fil de discussion - Impossible de démarrer elasticsearch avec Ubuntu 16.04 sur le site Web d'Elastic.

Il semble que pour faire fonctionner Elasticsearch sur 16.04 vous devez définir START_DAEMON à vrai sur /etc/default/elasticsearch. Il est commenté par défaut, et sans commentaire, Elasticsearch redémarre très bien.

Assurez-vous d'utiliser systemctl restart au lieu de simplement start parce que le service démarre juste après l'installation, et apparemment il y a socket/pidfile/something que systemd conserve qui doit être libéré avant de pouvoir redémarrer le service.

35
salmanwahed

Le problème réside dans les fichiers journaux, "No Java runtime was found."

Jul 30 18:28:13 dimik elasticsearch[10266]: [warning] /etc/init.d/elasticsearch: No Java runtime was found

Voici ma solution au problème.

  1. Vérifier le fichier init elasticsearch

    Sudo nano /etc/init.d/elasticsearch

rechercher

. /usr/share/Java-wrappers/Java-wrappers.sh
find_Java_runtime openjdk8 Oracle8 openjdk7 Oracle7 openjdk6 Sun6 default
export Java_HOME
  1. Vérifiez le fichier Java-wrappers.sh

    Sudo nano /usr/share/Java-wrappers/Java-wrappers.sh

Maintenant, vous pouvez voir que l'avertissement vient de

#Displays a warning
Java_warning() {
    echo "[warning] $0: $@" >&2;
}
  1. D'une manière ou d'une autre, les répertoires Java ne sont pas répertoriés dans les fichiers jvm-list.sh

Modifiez maintenant le fichier jvm-list.sh

Sudo nano /usr/lib/Java-wrappers/jvm-list.sh

Editez la ligne ajoutez vos fichiers de répertoires Java, dans mon cas, ajoutez/usr/lib/jvm/Java-8-Oracle *

__jvm_Oracle8="/usr/lib/jvm/jdk-8-Oracle-* /usr/lib/jvm/jre-8-Oracle-* /usr/lib/jvm/Java-8-Oracle*"
  1. Redémarrez maintenant le service et vérifiez les services elasticsearch

    Sudo systemctl redémarre elasticsearch
    Statut de recherche élastique Sudo systemctl
    curl -X GET " http: // localhost: 92 "

J'espère que cela aiderait

9
Yugo Gautomo
  1. Ouvrez le fichier /etc/init.d/elasticsearch dans l'éditeur, Commentaire sous les lignes

    . /usr/share/Java-wrappers/Java-wrappers.sh
    find_Java_runtime openjdk8 Oracle8 openjdk7 Oracle7 openjdk6 Sun6 default
    

    Définissez Java_HOME manuellement comme ceci:

    export Java_HOME="/usr"
    
  2. service elasticsearch start

2
Vishwas Samant

Mon problème était différent, j'ai démarré elasticsearch manuellement en tant qu'utilisateur root, donc certains fichiers ont été créés avec une propriété incorrecte, donc l'utilisateur elasticsearch ne peut pas écrire dessus.

Vous pouvez essayer de démarrer elasticsearch à partir de la console pour voir les erreurs:

Sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch \
 -Des.default.config=/etc/elasticsearch/elasticsearch.yml \
 -Des.default.path.home=/usr/share/elasticsearch \
 -Des.default.path.logs=/var/log/elasticsearch \
 -Des.default.path.data=/var/lib/elasticsearch \
 -Des.default.path.work=/tmp/elasticsearch \
 -Des.default.path.conf=/etc/elasticsearch

Pour réparer ma machine, je devais faire:

rm -rf /var/log/elasticsearch/*
rm -rf /var/lib/elasticsearch/*
2
avalla