San*_*gde 19 linux elasticsearch elasticsearch-plugin
当我尝试使用命令启动弹性搜索5.0并获得以下错误时,我./elasticsearch得到以下错误.
[2016-11-23T13:44:09,507][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:116) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:103) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:96) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.cli.Command.main(Command.java:62) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:73) ~[elasticsearch-5.0.1.jar:5.0.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:96) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:155) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286) ~[elasticsearch-5.0.1.jar:5.0.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:112) ~[elasticsearch-5.0.1.jar:5.0.1]
... 6 more
Run Code Online (Sandbox Code Playgroud)
我试图通过切换到其他用户开始尝试sudo ./elasticsearch并得到相同的错误.如何以root用户身份开始弹性搜索?
Elasticsearch不能以root用户身份运行。Elasticsearch本身对此进行了限制。当我们安装elasticsearch时,会自动创建一个名为elasticsearch的新用户和名为elasticsearch的组。可以使用以下命令检查条目
$ sudo less /etc/passwd | grep "elasticsearch"
$ sudo less /etc/group | grep "elasticsearch"
Run Code Online (Sandbox Code Playgroud)
我们需要更改所有与Elasticsearch相关的文件的所有权。请按照以下步骤操作。
脚步:
1.使用下面的示例cmd将所有与ES相关的文件的所有权从root更改为elasticsearch。
$ sudo chown elasticsearch:elasticsearch -R /usr/share/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /var/log/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /var/lib/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /etc/default/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /etc/elasticsearch
Run Code Online (Sandbox Code Playgroud)
2.打开/etc/default/elasticsearch文件并执行以下操作
a)JAVA_HOME=your/java/home/path
b)add the following entries at the end
i) START_DAEMON=true
ii) ES_USER=elasticsearch
iii) ES_GROUP=elasticsearch
Run Code Online (Sandbox Code Playgroud)
3.现在启用Elasticsearch服务并启动
$ sudo systemctl enable elasticsearch
$ sudo systemctl start elasticsearch
$ sudo systemctl status elasticsearch
Run Code Online (Sandbox Code Playgroud)
4.使用curl测试elasticsearch。假设您的主机IP为192.168.5.194,并且ES在端口9200上运行
$ curl -X GET ‘192.168.5.194:9200’
Run Code Online (Sandbox Code Playgroud)
完成了!
参考 :https : //stackoverflow.com/a/48390311/1445978
小智 7
此问题的根本原因是:不允许ElasticSearch从root用户运行.此问题还有另一种可能性"仅为root用户设置Java路径,而不是为所有其他用户设置Java路径".解决这个问题:
步骤1:通过命令将elasticSearch目录的所有权从root更改为其他用户. $ sudo chown -R current_User:Group_Name elasticsearch-5.5.0
Setp 2:在类路径中检查当前用户的Java集[不仅适用于root].如果命令:$ java -version或echo $ JAVA_HOME命令给出空结果.这意味着我们应该在当前用户的classpath [system env varible]中设置Java,然后按照步骤3.否则启动elasticsearch服务.
步骤3:编辑/ etc/profile并根据系统dir导出添加两行JAVA_HOME ="Java目录位置"
export PATH = $ JAVA_HOME/bin:$ PATH运行$ source source/etc/profile
在此之后运行elasticSearch服务.它对我很有帮助.
有两种方法可以解决这个问题:
方法一: 下载 zip 文件 n 解压后按以下命令启动
bin/elasticsearch -Des.insecure.allow.root=true -d
Run Code Online (Sandbox Code Playgroud)
方法二:
vi bin/elasticsearch
Run Code Online (Sandbox Code Playgroud)
添加允许 root 的属性:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
Run Code Online (Sandbox Code Playgroud)
保存并关闭。 您现在可以从 root 开始。
小智 0
之前针对 ES2 曾询问过这个问题(How to run Elasticsearch 2.1.1 as root user in Linux machine)
相同的解决方案可能适用于 5 个。
如前所述,您可能不应该这样..