1

I got CentOS7 on a VM and I try to install properly SonarQube 7.2.1. So I follow this tutorial and install PostgreSQL instead of the MariaDB. I edit the sonar.properties as they say and I correctly install Java 8.

When I want to start with sudo systemctl start sonar I got an error so I do journalctl -xe and systemctl status sonar.service

The first return me

L'unité (unit) sonar.service a commencé à démarrer.
août 03 14:20:44 localhost.localdomain bash[19570]: /bin/bash: /home/enovia/sonarqube-7.2.1/bin/linux-x86-64/sonar.sh: Aucun fichier ou dossier de ce type
août 03 14:20:44 localhost.localdomain systemd[1]: sonar.service: control process exited, code=exited status=127
août 03 14:20:44 localhost.localdomain systemd[1]: Failed to start SonarQube Service.
-- Subject: L'unité (unit) sonar.service a échoué
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

And the second

sonar.service - SonarQube Service
   Loaded: loaded (/etc/systemd/system/sonar.service; enabled; vendor preset: disabled)

  Active: activating (auto-restart) (Result: exit-code) since ven. 2018-08-03 14:41:14 CEST; 3s ago

 Process: 21093 ExecStart=/bin/bash /home/enovia/sonarqube-7.2.1/bin/linux-x86-64/sonar.sh start (code=exited, status=127)


août 03 14:41:14 localhost.localdomain systemd[1]: sonar.service: control process exited, code=exited status=127

août 03 14:41:14 localhost.localdomain systemd[1]: Failed to start SonarQube Service.

août 03 14:41:14 localhost.localdomain systemd[1]: Unit sonar.service entered failed state.

août 03 14:41:14 localhost.localdomain systemd[1]: sonar.service failed.

Here's my sonar.properties :

sonar.jdbc.username=sonar

sonar.jdbc.password=DatabasePass

sonar.jdbc.url=jdbc:postgresql://localhost/sonar

sonar.web.port=10900

Sonar logs file :

`

--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.07.30 15:50:44 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /home/enovia/Bureau/sonarqube-7.2.1/temp
2018.07.30 15:50:44 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2018.07.30 15:50:45 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/home/enovia/Bureau/sonarqube-7.2.1/elasticsearch]: /home/enovia/Bureau/sonarqube-7.2.1/elasticsearch/bin/elasticsearch -Epath.conf=/home/enovia/Bureau/sonarqube-7.2.1/temp/conf/es
2018.07.30 15:50:45 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
2018.07.30 15:50:58 INFO  app[][o.e.p.PluginsService] no modules loaded
2018.07.30 15:50:58 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2018.07.30 15:52:30 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2018.07.30 15:52:32 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/home/enovia/Bureau/sonarqube-7.2.1]: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/home/enovia/Bureau/sonarqube-7.2.1/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:/home/enovia/Bureau/sonarqube-7.2.1/lib/jdbc/mysql/mysql-connector-java-5.1.46.jar org.sonar.server.app.WebServer /home/enovia/Bureau/sonarqube-7.2.1/temp/sq-process8191574965959719695properties
2018.07.30 15:53:36 INFO  app[][o.s.a.SchedulerImpl] Process [web] is stopped
2018.07.30 15:53:38 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
2018.07.30 15:53:38 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
2018.07.30 15:53:38 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.07.31 12:05:33 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /home/enovia/Bureau/sonarqube-7.2.1/temp
2018.07.31 12:05:33 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2018.07.31 12:05:34 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/home/enovia/Bureau/sonarqube-7.2.1/elasticsearch]: /home/enovia/Bureau/sonarqube-7.2.1/elasticsearch/bin/elasticsearch -Epath.conf=/home/enovia/Bureau/sonarqube-7.2.1/temp/conf/es
2018.07.31 12:05:34 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Startup failed: Timed out waiting for signal from JVM.
JVM did not exit on request, terminated
JVM exited on its own while waiting to kill the application.
JVM exited in response to signal SIGKILL (9).
JVM Restarts disabled.  Shutting down.
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.07.31 12:15:56 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /home/enovia/Bureau/sonarqube-7.2.1/temp
2018.07.31 12:15:56 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2018.07.31 12:15:57 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/home/enovia/Bureau/sonarqube-7.2.1/elasticsearch]: /home/enovia/Bureau/sonarqube-7.2.1/elasticsearch/bin/elasticsearch -Epath.conf=/home/enovia/Bureau/sonarqube-7.2.1/temp/conf/es
2018.07.31 12:15:57 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2018.07.31 12:15:58 INFO  app[][o.e.p.PluginsService] no modules loaded
2018.07.31 12:15:58 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2018.07.31 12:16:08 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2018.07.31 12:16:08 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/home/enovia/Bureau/sonarqube-7.2.1]: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/home/enovia/Bureau/sonarqube-7.2.1/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:/home/enovia/Bureau/sonarqube-7.2.1/lib/jdbc/mysql/mysql-connector-java-5.1.46.jar org.sonar.server.app.WebServer /home/enovia/Bureau/sonarqube-7.2.1/temp/sq-process4251581204595748290properties
2018.07.31 12:16:25 INFO  app[][o.s.a.SchedulerImpl] Process [web] is stopped
2018.07.31 12:16:25 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
2018.07.31 12:16:25 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
2018.07.31 12:16:25 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.08.01 13:41:07 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /home/enovia/sonarqube-7.2.1/temp
2018.08.01 13:41:07 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2018.08.01 13:41:07 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/home/enovia/sonarqube-7.2.1/elasticsearch]: /home/enovia/sonarqube-7.2.1/elasticsearch/bin/elasticsearch -Epath.conf=/home/enovia/sonarqube-7.2.1/temp/conf/es
2018.08.01 13:41:07 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2018.08.01 13:41:09 INFO  app[][o.e.p.PluginsService] no modules loaded
2018.08.01 13:41:09 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2018.08.01 13:41:10 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 1
2018.08.01 13:41:10 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
2018.08.01 13:41:10 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.08.01 15:17:17 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /home/enovia/sonarqube-7.2.1/temp
2018.08.01 15:17:17 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2018.08.01 15:17:18 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/home/enovia/sonarqube-7.2.1/elasticsearch]: /home/enovia/sonarqube-7.2.1/elasticsearch/bin/elasticsearch -Epath.conf=/home/enovia/sonarqube-7.2.1/temp/conf/es
2018.08.01 15:17:18 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2018.08.01 15:17:18 INFO  app[][o.e.p.PluginsService] no modules loaded
2018.08.01 15:17:18 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2018.08.01 15:17:20 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 1
2018.08.01 15:17:20 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
2018.08.01 15:17:20 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.08.01 15:18:01 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /home/enovia/sonarqube-7.2.1/temp

WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /home/enovia/sonarqube-7.2.1/temp/conf/es/elasticsearch.yml
java.nio.file.AccessDeniedException: /home/enovia/sonarqube-7.2.1/temp/conf/es/elasticsearch.yml
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
    at java.nio.file.Files.delete(Files.java:1126)
    at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:170)
    at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:165)
    at java.nio.file.Files.walkFileTree(Files.java:2670)
    at java.nio.file.Files.walkFileTree(Files.java:2742)
    at org.sonar.process.FileUtils2.deleteDirectoryImpl(FileUtils2.java:127)
    at org.sonar.process.FileUtils2.deleteDirectory(FileUtils2.java:112)
    at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:117)
    at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:101)
    at java.nio.file.Files.walkFileTree(Files.java:2670)
    at org.sonar.application.AppFileSystem.createOrCleanTempDirectory(AppFileSystem.java:96)
    at org.sonar.application.AppFileSystem.reset(AppFileSystem.java:62)
    at org.sonar.application.App.start(App.java:55)
    at org.sonar.application.App.main(App.java:78)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
    at java.lang.Thread.run(Thread.java:748)
<-- Wrapper Stopped
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.08.01 15:38:18 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /etc/sonarqube-7.2.1/temp
2018.08.01 15:38:18 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2018.08.01 15:38:18 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/etc/sonarqube-7.2.1/elasticsearch]: /etc/sonarqube-7.2.1/elasticsearch/bin/elasticsearch -Epath.conf=/etc/sonarqube-7.2.1/temp/conf/es
2018.08.01 15:38:18 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2018.08.01 15:38:19 INFO  app[][o.e.p.PluginsService] no modules loaded
2018.08.01 15:38:19 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2018.08.01 15:38:29 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2018.08.01 15:38:29 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/etc/sonarqube-7.2.1]: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/etc/sonarqube-7.2.1/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:/etc/sonarqube-7.2.1/lib/jdbc/mysql/mysql-connector-java-5.1.46.jar org.sonar.server.app.WebServer /etc/sonarqube-7.2.1/temp/sq-process1389488387217549973properties
2018.08.01 15:38:46 INFO  app[][o.s.a.SchedulerImpl] Process [web] is stopped
2018.08.01 15:38:46 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
2018.08.01 15:38:46 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
2018.08.01 15:38:46 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
<-- Wrapper Stopped
Tom Detranchant
  • 71
  • 1
  • 1
  • 7
  • 1
    And what is the content of the SonarQube log files? Remember, you cannot run as [root](https://stackoverflow.com/questions/47731102/cant-run-sonar-server-caused-by-elasticsearch-cannot-running-as-root/47733598). – Jeroen Heier Aug 03 '18 at 14:50
  • @JeroenHeier I run it with sonar user I'd created to use only SonarQube. Sonar user has rights over all the SonarQube directory and isn't a root user. I add the sonar.log file to the question – Tom Detranchant Aug 06 '18 at 10:03
  • What does es.log say ? Based on the log the elasticSearch process failed (are you very sure it is not started as root?) – Jeroen Heier Aug 06 '18 at 14:37
  • I cleaned up my logs file yesterday. Since no logs file were created even if I try to run sonar with the 'systemctl start sonar' command. And it produces the same message as previously. I don't run this command with root user but CentOS ask the password of my user to launch the command. My user is in the sonar and wheels groups – Tom Detranchant Aug 08 '18 at 11:40

4 Answers4

2

update RUN_AS_USER property in sonar.sh file and restart the SonarQube.

And also make sure there is no permission related issue in SonarQube directory, to be in safer side run chown user:user -R /home/SonarQube_home

Danesh G
  • 121
  • 4
2

I recently encountered this sonarqube restarting issue, on Centos 7.6 with SonarQube 7.6, which took a toll my CICD configuration time! So, thought sharing this might save some other's time! There are few things to look for and update them to fix this.

  1. Ensure /var/lib/pgsql/9.6/data/pg_hba.conf has been updated like below:

    enter image description here

  2. Ensure, PostgreSQL database has its own user sonar and a database named sonar is created. And, obviously, the database user sonar should own this sonar database. In my case, I am using sonar for both database user and actual database name but, you can use any as you please.

  3. Ensure after downloading and extracting SonarQube, you move sonarqube to /op/ directory:

    sudo mv sonarqube-7.6 /opt/sonarqube

    Then /opt/sonarqube directory is owned by sonarqube linux user, in my case it's sonar.

  4. Ensure after creating and editing /etc/systemd/system/sonar.service file, it's also owned by sonarqube linux user.

  5. The content of the /etc/systemd/system/sonar.service file should look similar as below:

    [Unit]

    Description=SonarQube service

    After=syslog.target network.target

    [Service]

    Type=forking

    ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start

    ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop

    User=sonar

    Group=sonar

    Restart=always

    [Install]

    WantedBy=multi-user.target

    Notice the User and Group points to linux sonarqube user, mine is sonar. Yours can be johndoe.

  6. Edit /opt/sonarqube/bin/linux-x86-64/sonar.sh and update #RUN_AS_USER with

    RUN_AS_USER=sonar

    Notice this is also the same linux sonarqube user, mine is sonar.

  7. SonarQube seems to be a JAVA memory hungry web app. So, follow this post to update relevant memory configurations. Remember that post is based on Centos 7.6. You need to update relevant files if you are on a diff taste of linux.

  8. Don't forget to restart PostgreSQL, Sonar Service and NGINX (if you are proxy passing to Sonar)

    sudo systemctl restart postgresql-9.6 && sudo systemctl restart sonar && sudo systemctl restart nginx

  9. Check the status for all these services and ensure all of them are in active/running status:

    sudo systemctl status postgresql-9.6 && sudo systemctl status sonar && sudo systemctl status nginx

Hope this help!

Asrar
  • 427
  • 4
  • 11
  • 1
    Most complete.Thanks for this. – Selam Getachew Nov 16 '19 at 19:02
  • 1
    More correct exec line is `ExecStart=/bin/nohup /opt/java/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-7.4.jar` Here is full unit https://docs.sonarqube.org/latest/setup/operate-server/ Because script /opt/sonarqube/bin/linux-x86-64/sonar.sh is intended to use on Linux with initd. The only drawback is that we need to update jar version on each upgrade. – celsiys Dec 04 '20 at 09:31
0

The wheel user is a kind of root user so I delete sonar user from this group. After that I can't access to the systemctl (systemd) command which are reserved to root user. So I try to launch sonar with sonar.sh and it work.

Thanks everyone who help me, I hope this post can help people with same problem as me on centOS :)

Tom Detranchant
  • 71
  • 1
  • 1
  • 7
0

I ran into the same problem recently with version 7.7. Initially I ran into the same problem, where the service would not start properly, but invoking the sonar.sh script worked just fine.

the fix that worked for me was making sure the service file referenced a directory where it could create a PID file:

PIDFile=/opt/sonar/bin/linux-x86-64/./SonarQube.pid

of course make sure that: permissions are set correctly on /opt/sonar/ for the user who is invoked in your service (i.e. user "sonar")!

Complete Service File Below:

[Unit]
Description=SonarQube application
After=syslog.target network.target

[Service]
User=sonar
Group=sonar

Type=simple
ExecStart=/opt/sonar/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonar/bin/linux-x86-64/sonar.sh stop
ExecReload=/opt/sonar/bin/linux-x86-64/sonar.sh restart
PIDFile=/opt/sonar/bin/linux-x86-64/./SonarQube.pid

[Install]
WantedBy=multi-user.target