Getting elasticsearch “can not run as root” error after upgrading from SonarQube 6.5 to 6.6. Nothing else changed

匿名 (未验证) 提交于 2019-12-03 00:46:02

问题:

Getting elasticsearch "can not run as root" error after upgrading from SonarQube 6.5 to 6.6. Nothing else changed.

CentOS release 6.8 (Final) Java(TM) SE Runtime Environment (build 1.8.0_101-b13)

java.lang.RuntimeException: can not run elasticsearch as root         at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.2.jar:5.6.2] 2017.10.20 11:59:14 WARN  es[][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:136) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.6.2.jar:5.6.2] Caused by: java.lang.RuntimeException: can not run elasticsearch as root         at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.2.jar:5.6.2]         at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.2.jar:5.6.2]         ... 6 more 

回答1:

I also experienced this problem, running SonarQube, as root, on Centos 7, not inside docker. As mentioned in previous comments, the problem comes from SonarQube upgrading ElasticSearch, and the new version no longer allows itself to be run as root.

In my environment the fix was easy enough: I had already created a user ("sonar") and group ("sonar") to "own" the sonarqube files. Since my SonarQube process had been running as root, it had left the logs and temp files owned by root.
1. I stopped the service.
2. Reassigned all the ownserships ("chown -R sonar:sonar /opt/sonarqube-6.6")
3. Changed #RUN_AS_USER= in /opt/sonarqube-6.6/bin/linux-x86-64/sonar.sh line 48 to RUN_AS_USER=sonar and both the sonarqube service and its elasticsearch service restarted without further problems. I was left having to go to http://<sonarhost:port>/setup to upgrade the database and from there everything worked fine.



回答2:

Change in systemd:

User=sonar Group=sonar 

and change all source and #RUN_AS_USER=sonar It will run. It seem the error in enviroment when run in root then su to sonar



回答3:

I downloaded sonarqube-6.5 and tried setting up a new user "sonar" but still es fails for me with the same reason - Ubuntu 16.4.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!