Can't run Sonar Server caused by Elasticsearch cannot running as root

26,891

Solution 1

Change the root access to the sonar file. Try running in normal user access.

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

Solution 2

SonarSource has upgraded the Elasticsearch tool used as a part of the latest SonarQube LTS version. As a result SonarQube cannot be run as a root. See this blog and the SonarQube 6.6 upgrade notes and this SO question.

Solution 3

I was facing the same issue and spend good amount of time before getting the solution.

Error was same as

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]

Solution Create a ‘sonar’ user using adduser command //I was using linux system chown -R sonar sonar-install-folder/ Edit the sonar.sh file sonar-install-folder/bin/linux-x86-6 in start script and change the #RUN_AS_USER to be RUN_AS_USER=sonar

And then use below commands

./sonar.sh stop

Gracefully stopping SonarQube... SonarQube was not running.

./sonar.sh start

Starting SonarQube... Started SonarQube.

./sonar.sh status

SonarQube is running (22100).

So, basically elastic search doesnt require to be run by root user. By default the RUN_AS_USER was commented in the startup script which was picking my current user which was root, and then some linux permission rules come into picture due to which elasticsearch process was not getting up and which was causing sonar process to go down as well.

It was evident from 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
Share:
26,891
firasKoubaa
Author by

firasKoubaa

Updated on July 05, 2022

Comments

  • firasKoubaa
    firasKoubaa almost 2 years

    I'm trying to install SonarQube : i ve followed those steps :

    Setting up SOnarQube Tuto : here

    To summarize it :

    • Downloading Sonar and moving it to /opt/sonar
    • adding those coonfig steps to /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

    and

    sonar.web.host=127.0.0.1
    sonar.web.context=/sonar
    sonar.web.port=9000
    
    • implementing sonar as a service:

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

    sudo gedit /etc/init.d/sonar
    

    Insert two new lines:

    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
    

    After those steps : i ve tried to run Sonar from : localhost:9000/sonar and after executing : sudo /etc/init.d/sonar start ` Strangely , it didsn't run .

    SO when i run `sudo /etc/init.d/sonar status , i discover that it goes steps after few seconds , and it throws some error in it log file , like the following :

    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
    

    Any suggestions ??

  • Steve E.
    Steve E. over 5 years
    Changing ownership of a file has no impact on the privileges it has at runtime unless setuid is set.
  • Jeroen Heier
    Jeroen Heier over 5 years
    Any reason why this answer was suddenly no longer accepted?