Не удается запустить 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
Здесь мое решение проблемы.
Проверьте файл инициализации эластичного поиска
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
Проверьте файл java-wrappers.sh
sudo nano/usr/share/java-wrappers/java-wrappers.sh
Теперь вы можете видеть предупреждение от
#Displays a warning
java_warning() {
echo "[warning] $0: [email protected]" >&2;
}
- Каким-то образом каталоги 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*"
Теперь перезапустите сервис и проверьте сервисы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/*