Debian 7 (wheezy)
にElasticsearch6.xをインストールしました。 service elasticsearch start
で始めようとしましたが、エラーメッセージが表示されます
root@debian:~# Sudo -i service elasticsearch start
[FAIL] Starting Elasticsearch Server: failed!
nano /var/log/elasticsearch/elasticsearch.log
でelasticsearchログファイルを調べようとしましたが、このエラーが発生しました
[2017-12-14T11:25:39,153][WARN ][o.e.b.Natives ] unable to load JNA native support library, native methods will be disabled.
Java.lang.UnsatisfiedLinkError: Native library (com/Sun/jna/linux-x86/libjnidispatch.so) not found in resource path ([file:/usr/share/elasticsearch/lib/lucene-spatial-$
at com.Sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.Java:962) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at com.Sun.jna.Native.loadNativeDispatchLibrary(Native.Java:922) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at com.Sun.jna.Native.<clinit>(Native.Java:190) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at Java.lang.Class.forName0(Native Method) ~[?:1.8.0_151]
at Java.lang.Class.forName(Class.Java:264) ~[?:1.8.0_151]
at org.elasticsearch.bootstrap.Natives.<clinit>(Natives.Java:45) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.Java:103) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.Java:171) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.Java:322) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:121) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.Java:112) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.Java:86) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.Java:124) [elasticsearch-cli-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.Command.main(Command.Java:90) [elasticsearch-cli-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:92) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:85) [elasticsearch-6.1.0.jar:6.1.0]
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives ] cannot check if running as root because JNA is not available
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives ] cannot install system call filter because JNA is not available
[2017-12-14T11:25:39,215][WARN ][o.e.b.Natives ] cannot register console handler because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_NPROC because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_AS beacuse JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_FSIZE because JNA is not available
どうすればこれを修正できますか? Javaをインストールしましたが、それはversion javac 1.8.0_151
です。
私のコードで何がうまくいかない可能性がありますか? `
さて、私は解決策を見つけました。どうやら私のVMメモリストレージ(RAM)は1 GB-2 GBだったので、VMのRAM容量を少なくとも4GBに増やし、マシンを再起動します。そして、エラスティック検索は問題なく動作し始めました。
/etc/sysconfig/elasticsearch
に移動しますES_Java_OPTS="-Djna.tmpdir=/var/lib/elasticsearch/tmp"
を追加します。
(新しいElasticsearchの場合は、Djava.io.tmpdir
の代わりにDjna.tmpdir
を使用してください)
systemctl start elasticsearch
またはservice start elasticsearch
を使用してElasticsearchを開始します。/var/lib/elasticsearch/
内に作成されたtmp
フォルダを確認できます。elasticsearch
ユーザーの実行権限が必要ですi -l /var/lib/elasticsearch
で権限を確認してください権限ファイルに以下のような権限があることを確認してください
dr-xr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root lib
drwxr-x--- elasticsearch elasticsearch elasticsearch
問題が解決されることを願っています。
/tmp/
ディレクトリの権限を確認してください。 noexec
があったに違いありません。
/tmp
は、JNAをサポートするためにexec
が必要です。回避策は、elasticsearchsysconfigファイルでtmp
ディレクトリを指定することです。
export Java_OPTS="-Djava.io.tmpdir=$ES_HOME/tmp"
のようなもの
$ES_HOME/tmp
ディレクトリがあり、elasticsearch
ユーザーがそのディレクトリへの書き込み権限を持っていることを確認してください。
強化されたOSを使用していたため、またデフォルトのumaskが0027
であるため、この問題が発生しました。
コマンドプロンプトから実行すると、Windows 1でも同じ問題が発生しました。
unable to load JNA native support library, native methods will be disabled.
これを解決するには、管理者権限でelasticsearch.exeを実行するだけで十分でした([スタート]をクリック-> [コマンド]と入力-> [コマンドプロンプト]を右クリック-> [名前を付けて実行]を選択管理者 ")