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

新手上路,请多包涵

我最近将我的机器从 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

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

编辑

为 root 设置 JAVA_HOME 后出现错误:

 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.

原文由 salmanwahed 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 457
2 个回答

我找到了这个问题的解决方案。解决方案来自这个讨论线程 - 无法在 elastic 的网站上使用 Ubuntu 16.04 启动 elasticsearch

似乎要让 Elasticsearch 在 16.04 上运行,你必须将 START_DAEMON 设置为 true on /etc/default/elasticsearch 。默认情况下它会被注释掉,取消注释会使 Elasticsearch 重新启动就好了。

Be sure to use systemctl restart instead of just start because the service is started right after installation, and apparently there’s some socket/pidfile/something that systemd keeps在能够再次启动服务之前必须释放它。

原文由 salmanwahed 发布,翻译遵循 CC BY-SA 4.0 许可协议

问题出在日志文件上,“找不到 Java 运行时。”

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

这是我解决问题的方法。

  1. 检查 elasticsearch 初始化文件

须藤纳米 /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: $@" >&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. 现在重新启动服务并检查elasticsearch服务

sudo systemctl 重新启动 elasticsearch

sudo systemctl elasticsearch 状态

curl -X GET “ http://localhost:9200

希望这会有所帮助

原文由 Yugo Gautomo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题