如何在 Linux 机器上以 root 用户身份运行 Elasticsearch 2.1.1
Posted
技术标签:
【中文标题】如何在 Linux 机器上以 root 用户身份运行 Elasticsearch 2.1.1【英文标题】:How to run Elasticsearch 2.1.1 as root user in Linux machine 【发布时间】:2016-04-27 12:34:53 【问题描述】:我正在尝试在我的 Linux 机器上运行 Elasticsearch 2.1.1,我是它的 root 用户。
当我尝试执行 Elasticsearch 时,出现以下错误:
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
Refer to the log for complete error details.
我参考了互联网上的一些建议,他们提到以不同的用户身份运行它。我的方案是仅以 root 用户身份运行。如何在不以不同用户身份运行的情况下克服此问题。
【问题讨论】:
我不相信有办法绕过它,出于安全原因,您必须以其他用户身份运行它。 以 root 身份运行网络服务器是极其危险的。这决不能发生。特别是这个答案钉它:askubuntu.com/a/16201/35185请参考这个线程:askubuntu.com/questions/16178/why-is-it-bad-to-login-as-root 【参考方案1】:基于以下code-snippet 看起来您应该能够通过启用属性来实现这一点 es.insecure.allow.root
例子:
bin/elasticsearch -Des.insecure.allow.root=true
【讨论】:
非常感谢。你的建议成功了,但现在我面临不同的错误。我在下面粘贴错误,Exception in thread "main" java.lang.IllegalStateException: Failed to obtain node lock, is the following location writable?: [/anvs/indexstore/mysample] Likely root cause: java.io.IOException: No locks available at sun.nio.ch.FileDispatcherImpl.lock0(Native Method) at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:90) at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1082)
你检查文件夹/anvs/indexstore/mysample的权限了吗?
当前答案在最新的 elasticsearch 中不再有效。
@rjurney。是的,上述选项在 5.X 及更高版本中不起作用。有什么办法可以克服吗?
嗨,你找到 ES5 的答案了吗?【参考方案2】:
打开脚本文件:
vi bin/elasticsearch
为允许根添加属性:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
保存并关闭。 您现在可以从 root 启动。祝你好运。
【讨论】:
它适用于 2.4.1。 elasticsearch 目录的所有者是'elasticsearch'【参考方案3】:你也可以创建别名
别名 elasticsearch='elasticsearch -Des.insecure.allow.root=true'
在 bashrc 文件中添加以上行,之后 elasticsearch 命令将起作用。
【讨论】:
@BoPennings 是的,它在 5.X 版本中已被弃用。您必须在您的框中创建一个非 root 用户,并且您必须将 elasticsearch 用户名和组更改为新创建的非 root 用户然后你必须开始这个过程。【参考方案4】:您应该更改 elasticsearch-X.X.X 的所有者和组并以该用户身份运行。它适用于 elasticsearch-5.3.0
【讨论】:
【参考方案5】:有两种解决方法可以解决此问题:
解决方案 1: 下载 zip 文件 n 解压缩,然后按照以下命令开始
bin/elasticsearch -Des.insecure.allow.root=true -d
解决方案 2:
vi bin/elasticsearch
添加属性以允许root运行两个实例:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
保存并关闭。 您现在可以从 root 开始。
【讨论】:
【参考方案6】:我们需要在 Linux 服务器中创建一个新用户说 user = es
并授予sudo chown -R es elasticsearch-6.1.0/
然后你可以切换'es'用户帐户并运行./elasticsearch-6.1.0/bin/elasticsearch
【讨论】:
elastic.co 不支持以 root 身份运行 elasticsearch以上是关于如何在 Linux 机器上以 root 用户身份运行 Elasticsearch 2.1.1的主要内容,如果未能解决你的问题,请参考以下文章
如何在官方 docker php 映像上以非 root 用户身份运行 composer