无法在ubuntu 16.04中将elasticsearch作为服务启动

sal*_*hed 12 python java elasticsearch ubuntu-16.04

我最近将我的机器从Ubuntu升级14.0416.04.我正面临使用即elasticsearch服务的问题.我安装 elasticsearch使用:

sudo apt-get install elasticsearch
Run Code Online (Sandbox Code Playgroud)

现在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.
Run Code Online (Sandbox Code Playgroud)

虽然Java安装在我的机器上,但我可以使用此命令启动服务器.

sudo /usr/share/elasticsearch/bin/elasticsearch
Run Code Online (Sandbox Code Playgroud)

我有点被困在这里.任何帮助将不胜感激.

编辑

设置JAVA_HOMEroot后错误:

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.
Run Code Online (Sandbox Code Playgroud)

sal*_*hed 37

我找到了解决这个问题的方法.解决方案来自此讨论主题 - 无法在弹性网站上使用Ubuntu 16.04启动elasticsearch.

似乎要让Elasticsearch运行,16.04你必须设置START_DAEMON为true /etc/default/elasticsearch.默认情况下它会被注释掉,并且取消注释它会使Elasticsearch再次启动.

一定要使用systemctl restart,而不是仅仅start因为服务是正确安装后启动,而且显然有一些socket/pidfile/somethingsystemd保持必须能够再次启动该服务之前发布.


Yug*_*omo 9

问题出在日志文件"没有找到java运行时".

Jul 30 18:28:13 dimik elasticsearch[10266]: [warning] /etc/init.d/elasticsearch: No java runtime was found
Run Code Online (Sandbox Code Playgroud)

这是我解决问题的方法.

  1. 检查elasticsearch init文件

    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
Run Code Online (Sandbox Code Playgroud)
  1. 检查java-wrappers.sh文件

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

现在您可以看到警告来自

#Displays a warning
java_warning() {
    echo "[warning] $0: $@" >&2;
}
Run Code Online (Sandbox Code Playgroud)
  1. 不知何故,java目录未列在jvm-list.sh文件中

现在编辑jvm-list.sh文件

sudo nano /usr/lib/java-wrappers/jvm-list.sh
Run Code Online (Sandbox Code Playgroud)

编辑行添加你的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*"
Run Code Online (Sandbox Code Playgroud)
  1. 现在重启服务并检查elasticsearch服务

    sudo systemctl restart elasticsearch
    sudo systemctl elasticsearch status
    curl -X GET" http:// localhost:9200 "

希望这会有所帮助