./elasticsearch
コマンドでエラスティック検索5.0を開始しようとしたときにエラーが発生しました。エラーが発生しました。
[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
他のユーザーに切り替えて開始しようとしましたが、Sudo ./elasticsearch
を試しましたが、同じエラーが発生しました。 rootユーザーとしてエラスティック検索を開始するには?
Elasticsearchは、rootユーザーを実行できません。 Elasticsearch自体がこれを制限しています。 elasticsearchをインストールすると、elasticsearchという名前の新しいユーザーとelasticsearchという名前のグループが自動的に作成されます。次のコマンドを使用してエントリを確認できます
$ Sudo less /etc/passwd | grep "elasticsearch"
$ Sudo less /etc/group | grep "elasticsearch"
すべての elasticsearch関連ファイル の所有権を変更する必要があります。以下の手順に従ってください。
手順:
1.以下のexample cmdを使用して、すべてのES関連ファイルの所有権をルートから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
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
3.今すぐelasticsearchサービスを有効にして開始
$ Sudo systemctl enable elasticsearch
$ Sudo systemctl start elasticsearch
$ Sudo systemctl status elasticsearch
4. curlを使用してelasticsearchをテストします。ホストIPが192.168.5.194であり、ESがポート9200で実行されているとします
$ curl -X GET ‘192.168.5.194:9200’
完了!!
この問題の根本的な原因は次のとおりです。ElasticSearchはルート所有者からの実行を許可されていません。この問題には別の可能性があります。「Javaパスは、他のすべてのユーザーに対してではなく、rootユーザーに対してのみ設定されます」。この問題の解決策:
ステップ1:コマンドでelasticSearchディレクトリの所有権をルートから他のユーザーに変更します。 $ Sudo chown -R current_User:Group_Name elasticsearch-5.5.
Setp 2: Check Java現在のユーザーのクラスパスに設定する(ルートだけでなく)。コマンドの場合:$ Java -versionまたはecho $ Java_HOMEコマンド空の結果を与えます。つまり、現在のユーザーのクラスパス[システム環境変数]でJavaを設定し、ステップ3に従ってください。それ以外の場合はelasticsearchサービスを開始する必要があります。
ステップ3:/ etc/profileを編集し、システムごとに2行追加しますdir export Java_HOME = "Java dir location"
export PATH = $ Java_HOME/bin:$ PATH $ source source/etc/profileを実行します
この後、elasticSearchサービスを実行します。私にとっては完璧に機能しました。
この問題を解決するには2つの方法があります:
方法1: Zipファイルnをダウンロードして解凍し、次のコマンドで開始します
bin/elasticsearch -Des.insecure.allow.root=true -d
方法2:
vi bin/elasticsearch
ルートを許可するためのプロパティを追加します。
ES_Java_OPTS="-Des.insecure.allow.root=true"
保存して閉じます。 rootで今すぐ開始できます。
同じ問題があり、別のユーザーと接続する必要がありました。しかし最初に、私は彼にbin/elasticsearchを実行する権利を与えなければなりませんでした。
よくある間違いは、ルートフォルダーからbin/elasticsearchを実行することです。
Sudo
特権を与えずに別のユーザーを作成します。例:adduser elasticsearch
次に、そのユーザーにフォルダの所有権を付与しますex:chown -R elasticsearch:elasticsearch elasticsearch-folder
その後、そのユーザーに切り替えます。例:su elasticsearch
次に、サービスを実行してみます。例:./elasticsearch-xxx/bin/elasticsearch
返信が少し遅れましたが、今でも関連があります。 this に従うと同じ問題に直面しました。最後の手段は、解凍されたフォルダーの所有権を変更することでした。
ただやったSudo chown <nonrootuser> <unzipped-es-folder> -R
トリックを行います。
追伸:Ubuntu 17.04 LTSでそれをやっていた。
これはES2に対して以前に尋ねられました( LinuxマシンでElasticsearch 2.1.1をrootユーザーとして実行する方法 )
同じソリューションが5でも機能する場合があります。
前に述べたように、おそらくそうすべきではありません。