Elasticsearch无法以root身份运行,导致无法运行Sonar服务器

gzszwxb4  于 2023-06-29  发布在  ElasticSearch
关注(0)|答案(5)|浏览(200)

我正在尝试安装SonarQube:我遵循了这些步骤:
Setting up SOnarQube Tuto : here
总结一下:

  • 下载声纳并将其移动到/opt/sonar
  • 将这些coonfig步骤添加到/opt/sonar/conf/sonar.properties

sonar.jdbc.username=sonar sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.web.host=127.0.0.1
sonar.web.context=/sonar
sonar.web.port=9000
  • sonar实现为服务:

sudo cp /opt/sonar/bin/linux-x86-64/sonar.sh.d/sonar

sudo gedit /etc/init.d/sonar

新增两行:

SONAR_HOME=/opt/sonar
PLATFORM=linux-x86-64
Modify the following lines:

WRAPPER_CMD="${SONAR_HOME}/bin/${PLATFORM}/wrapper"
WRAPPER_CONF="${SONAR_HOME}/conf/wrapper.conf"

...

PIDDIR="/var/run"
Register as a Linux service:

sudo update-rc.d -f sonar remove
sudo chmod 755 /etc/init.d/sonar
sudo update-rc.d sonar defaults

在这些步骤之后:我试着从以下位置运行声纳:localhost:9000/sonar和执行后:sudo /etc/init.d/sonar start奇怪的是,它没有运行。 因此,当我运行sudo /etc/init.d/sonar status时,我发现它在几秒钟后执行步骤,并在日志文件中抛出一些错误,如下所示:

es.log:

2017.12.09 18:05:14 ERROR es[][o.e.b.Bootstrap] Exception
java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.3.jar:5.6.3]
2017.12.09 18:05: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.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.6.3.jar:5.6.3]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.3.jar:5.6.3]
    ... 6 more

任何建议??

2j4z5cfb

2j4z5cfb1#

SonarSource升级了Elasticsearch工具,作为最新SonarQube LTS版本的一部分。因此,SonarQube不能作为根用户运行。请参阅this博客、SonarQube 6.6升级说明和this SO问题。

u0njafvf

u0njafvf2#

更改对sonar文件的root访问权限。尝试以正常用户访问方式运行。

chown <another user>:<user group> sonar.sh
gpfsuwkq

gpfsuwkq3#

我也面临着同样的问题,在得到解决方案之前花了大量的时间。
错误与

2017.12.09 18:05:14 ERROR es[][o.e.b.Bootstrap] Exception
java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.3.jar:5.6.3]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.3.jar:5.6.3]

解决方案使用adduser命令创建一个'sonar'用户//我使用的是linux系统chown -R sonar-install-folder/在sonar.sh启动脚本中编辑www.example.com文件sonar-install-folder/bin/linux-x86-6,并将#RUN_AS_USER更改为RUN_AS_USER=sonar
然后使用下面的命令

./sonar.sh stop

优雅地停止SonarQube... SonarQube没有运行。

./sonar.sh start

正在启动SonarQube...启动SonarQube。

./sonar.sh status

SonarQube正在运行(22100)。
因此,基本上ElasticSearch不需要由root用户运行。默认情况下,RUN_AS_USER在启动脚本中被注解,该脚本选择了我的当前用户,即root,然后一些linux权限规则出现,由于elasticsearch进程没有启动,导致sonar进程也关闭。
从sonar.log可以明显看出

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
2020.05.08 06:36:36 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
2020.05.08 06:36:36 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
2020.05.08 06:36:36 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
qmb5sa22

qmb5sa224#

创建新用户以运行sonarQube或访问SonarQube Jmeter 板
用于创建ubuntu风格的用户。

sudo adduser sonar.

执行上述命令后,它将要求passwd

adduser sonar sudo

adduser sonar admin

sudo su sonar

chown sonar:sonar sonar.sh

ruarlubt

ruarlubt5#

创建一个仅专用于sonarqube示例的非root用户

sudo adduser --system --no-create-home --group --disabled-login sonar

设置SonarQube文件夹的权限

sudo chown -R sonar:sonar /opt/sonarqube

启动进程

sudo -Hu sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh start

相关问题