Не удается запустить elasticsearch как услугу в ubuntu 16.04

Недавно я обновил свою машину с Ubuntu 14.04 до 16.04. Я столкнулся с проблемой использования elasticsearch в качестве сервиса. я установлен elasticsearch, используя:

sudo apt-get install elasticsearch

Теперь команда sudo service elasticsearch status показывает мне этот результат:

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.

Хотя Java установлен на моем компьютере, и я могу запустить сервер, используя эту команду.

sudo /usr/share/elasticsearch/bin/elasticsearch

Я как бы застрял здесь. Любая помощь будет оценена.

Edit

После настройки JAVA_HOME для root выполните ошибку:

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.

Ответ 1

Я нашел решение этой проблемы. Решение приходит из этой темы обсуждения Невозможно начать поиск elastics с Ubuntu 16.04 на эластичном веб-сайте.

Кажется, что для запуска Elasticsearch на 16.04 вам нужно установить START_DAEMON в true на /etc/default/elasticsearch. Он по умолчанию прокомментирован, и, раскомментируя его, он снова запустил Elasticsearch.

Обязательно используйте systemctl restart вместо start, потому что  сервис запускается сразу после установки, и, по-видимому, есть  some socket/pidfile/something, что systemd сохраняет это должно быть освобождено  прежде чем сможете снова запустить службу.

Ответ 2

Проблема заключается в файлах журнала: "Среда выполнения Java не найдена".

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

Здесь мое решение проблемы.

  1. Проверьте файл инициализации эластичного поиска

    sudo nano/etc/init.d/elasticsearch

поиск

. /usr/share/java-wrappers/java-wrappers.sh
find_java_runtime openjdk8 oracle8 openjdk7 oracle7 openjdk6 sun6 default
export JAVA_HOME
  1. Проверьте файл java-wrappers.sh

    sudo nano/usr/share/java-wrappers/java-wrappers.sh

Теперь вы можете видеть предупреждение от

#Displays a warning
java_warning() {
    echo "[warning] $0: [email protected]" >&2;
}
  1. Каким-то образом каталоги java не перечислены в файлах jvm-list.sh

Теперь отредактируйте файл jvm-list.sh

sudo nano /usr/lib/java-wrappers/jvm-list.sh

Отредактируйте строку, добавьте файлы каталогов Java, в моем случае добавьте /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. Теперь перезапустите сервис и проверьте сервисыasticsearch

    sudo systemctl перезапустить эластичный поиск
    sudo systemctl эластичный поиск статуса
    curl -X GET "http://localhost:9200"

Надеется, что это поможет

Ответ 3

  • Откройте файл /etc/init.d/elasticsearch в редакторе, комментарий ниже строки

    . /usr/share/java-wrappers/java-wrappers.sh
    find_java_runtime openjdk8 oracle8 openjdk7 oracle7 openjdk6 sun6 default
    

    Установите JAVA_HOME вручную так:

    export JAVA_HOME="/usr"
    
  • сервис elasticsearch start

Ответ 4

Моя проблема была в другом, я запустилasticsearch вручную как пользователь root, поэтому некоторые файлы были созданы с неправильным владением, поэтому пользовательasticsearch не может писать на них.

Вы можете попробовать запустить эластичный поиск из консоли, чтобы увидеть ошибки:

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

Чтобы исправить на моей машине, я должен был сделать:

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