centos 7安裝es 及異常處理


首先,我們從官網下載zip包:
(官網:https://www.elastic.co/downloads/elasticsearch)

 


 


 

直接使用瀏覽器下載可能會很慢,我一般會copy下載鏈接,然后wget下來:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip

如無意外應該可以安裝成功。

接下來就是運行了,這是關鍵所在,首先我們前往安裝目錄elasticsearch的安裝目錄,一般會在:
cd /usr/bin/elasticsearch-5.2.0

這個時候如果你直接運行elasticsearch會報以下錯誤:
執行: bin/elasticsearch
錯誤信息:

Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config Likely root cause: java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config ...

見圖:


 

elasticsearch github上有這個錯誤的issue(https://github.com/elastic/ansible-elasticsearch/issues/58)
感興趣的可以看看這個錯誤的具體原因,我這里主要提供解決方法。

這個錯誤我覺得主要是因為找不到配置文件,但是如果你直接在安裝目錄里去啟動elasticsearch的話,elasticsearch只會在當前目錄找config文件夾,如果安裝成service的形式應該是可以找到配置文件,但我沒去嘗試,后面試試。

問題知道了,我們可以直接把/etc目錄下的elasticsearch配置文件copy過來:

 cp -r /etc/elasticsearch /usr/share/elasticsearch/config

這個時候我們再啟動就不會報剛才的錯誤了,我們再試一遍:
bin/elasticsearch

意料之中,這時候會提示以下錯誤:

[2017-01-17T21:54:48,798][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:125) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.1.2.jar:5.1.2] Caused by: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:100) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:176) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:306) ~[elasticsearch-5.1.2.jar:5.1.2] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.1.2.jar:5.1.2] ... 6 more

這個錯誤的原因是elasticsearch不允許使用root啟動,因此我們要解決這個問題需要新建一個用戶來啟動elasticsearch(參考:https://my.oschina.net/topeagle/blog/591451?fromerr=mzOr2qzZ)

具體操作如下:

➜  ~ groupadd elsearch
➜  ~ useradd elsearch -g elsearch -p elsearch
➜  ~ cd /usr/share ➜ chown -R elsearch:elsearch elasticsearch ➜ su elsearch

這個時候在這個用戶去啟動elasticsearch,一般情況下這個時候就能成功起來了,可能還會出現一些錯誤,如:

hcw-X450VC% ./elasticsearch 2017-01-17 21:03:31,158 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) at java.lang.SecurityManager.checkPermission(SecurityManager.java:585) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1848) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:322) at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) at org.apache.logging.log4j.core.jmx.Server.register(Server.java:389) at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:167) at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:140) at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:541) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:206) at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:220) at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:197) at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:125) at org.elasticsearch.common.logging.LogConfigurator.configureWithoutConfig(LogConfigurator.java:67) at org.elasticsearch.cli.Command.main(Command.java:85) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82)

這是因為elasticsearch需要讀寫配置文件,我們需要給予config文件夾權限,上面新建了elsearch用戶,elsearch用戶不具備讀寫權限,因此還是會報錯,解決方法是切換到管理員賬戶,賦予權限即可:

sudo -i chmod -R 775 config

這個時候就可以起來了,來看看效果:


 

在瀏覽器查看:


 

到這里為止,centos 7 安裝elasticsearch就完成了

 

 


轉載請標明本文來源:http://www.cnblogs.com/yswenli/p/6397351.html
更多內容歡迎我的的github:https://github.com/yswenli
如果發現本文有什么問題和任何建議,也隨時歡迎交流~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM