How to Install and configure Sonarqube on Linux (RHEL/Centos/ec2)

Install and Configure Sonarqube on Linux

Sonarqube is a great tool for source code quality management, code analysis etc. This is the most widely used tool for code coverage and analysis.

Install and  Configure Sonarqube on Linux

This guide will help you to set up and configure sonarqube on Linux servers (Redhat/Centos 7 versions) on any cloud platforms like ec2, azure, compute engine or on-premise data centers. Follow the steps given below for the complete sonarqube configuration.

Sonarqube requirements

  1. Server with minimum 2GB/1 vcpu capacity
  2. PostgreSQL version 9.3 or greater.
  3. OpenJDK 11 or JRE 11
  4. All sonarquber process should run as a non-root sonar user.

You can find the official requirement doc here.

Update: MySQL for Sonarqube is depricated

Prep the Server With Required Softwares

Step 1: Update the server.

sudo yum update -y

Step 2: Install wget & unzip

sudo yum install wget unzip -y

Step 3: Install java 11

sudo yum install java-11-openjdk-devel -y

Step 4: Login as root and execute the following commands.

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u

Setup PostgreSQL 10 Database For SonarQube

Step 1: Install PostgreSQL 10 repo.

sudo yum install -y

Step 2: Install PostgreSQL 10

sudo yum install postgresql10-server postgresql10-contrib -y

Step 3: Initialize the database.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

Step 4: Open /var/lib/pgsql/data/pg_hba.conf file to change the authentication to md5.

sudo vi /var/lib/pgsql/10/data/pg_hba.conf

Find the following lines at the bottom of the file and change peer to trust and idnet to md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all               ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Once changed, it should look like the following.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Step 5: Start and enable PostgreSQL.

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

Step 6: You can verify the installation using the following version select query.

sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"

Setup Sonar User and Database

We need to have a sonar user and database for the sonar application.

Step 1: Change the default password of the Postgres user. All Postgres commands have to be executed from this user.

sudo passwd postgres

Step 2: Login as postgres user with the new password.

su - postgres

Step 3: Login to the PostgreSQL CLI.


Step 4: Create a sonarqubedb database.

create database sonarqubedb;

Step 5: Create the sonarqube DB user with a strongly encrypted password. Replace your-strong-password with a strong password.

create user sonarqube with encrypted password 'your-strong-password';

Step 6: Next, grant all privileges to sonrqube user on sonarqubedb.

grant all privileges on database sonarqubedb to sonarqube

Step 7: Exit the psql prompt using the following command.


Step 6: Switch to your sudo user using the exit command.


Setup Sonarqube Web Server

Step 1: Download the latest sonarqube installation file to /opt folder. You can get the latest download link from here.

cd /opt 
sudo wget

2. Unzip sonarqube source files and rename the folder.

sudo unzip
sudo mv sonarqube-7.6 sonarqube

4. Open /opt/sonarqube/conf/ file.

sudo vi /opt/sonarqube/conf/

Uncomment and edit the parameters as shown below. Change the password accordingly. You will find jdbc parameter under PostgreSQL section.


By default, sonar will run on 9000. If you want on port 80 or any other port, change the following parameters for accessing the web console on that specific port.

If you want to access sonarqube some path like http://url:/sonar, change the following parameter.


Add Sonar User and Privileges

Create a user named sonar and make it the owner of the /opt/sonarqube directory.

sudo useradd sonar
sudo chown -R sonar:sonar /opt/sonarqube

Start Sonarqube Service

To start sonar service, you need to use the script in sonarqube bin directory.

Step 1: Login as sonar user

sudo su - sonar

Step 2: Navigate to the start script directory.

cd /opt/sonarqube/bin/linux-x86-64 

Step 3: Start the sonarqube service.

./ start

Now, you should be able to access sonarqube on the browser on port 9000

Step 4: Check the application status. If it is in running state, you can access the sonarqube dashboard using the DNS name or Ip address of your server.

sudo ./ status

Setting up Sonarqube as a service

Step 1: Create a file /etc/systemd/system/sonarqube.service

sudo vi /etc/systemd/system/sonarqube.service

Step 2: Copy the following content on to the file.

Description=SonarQube service

ExecStart=/bin/nohup java -Xms32m -Xmx32m -jar /opt/sonarqube/lib/sonar-application-7.6.jar


Step 3: Start and enable sonarqube

sudo systemctl start sonarqube
sudo systemctl enable sonarqube

Step 4: Check the sonarqube status to ensure it is running as expected.

sudo systemctl status  sonarqube

Troubleshooting Sonarqube

All the logs of sonarqube are present in the /opt/sonarqube/logs directory.

cd /opt/sonarqube/logs

You can find the following log files.


Using tail command you can check the latest logs. For example,

tail -f access.log

For sonarqube support, visit this link

In this tutorial, we covered how to install and configure sonarqube on a Linux server. If you face any issues during the setup, please feel free to leave a comment below.

  1. this command shoud be changed
    grant all privileges on sonarqubedb to sonarqube;
    grant all privileges on database sonarqubedb to sonarqube;

  2. i followed all the above one by one steps on amazon linux centos for, doesnot workout seriously. here is below my configuration,itself dont work.

    1. chown -R sonarqube:sonarqube /opt/sonarqube
    2. vim /opt/sonarqube/conf/
    3. vim /opt/sonarqube/bin/linux-x86-64/

    pls suggest!

  3. I’m getting following error after chmod 775 and chown to sonar and starting it as sonar:
    jvm 1 | 2019.02.22 16:32:07 INFO app[][o.s.a.SchedulerImpl] Process[es] is up
    jvm 1 | 2019.02.22 16:32:07 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key=’web’, ipcIndex=2, logFilenamePrefix=web]] from [/opt/sonarqube]: /usr/lib/jvm/java-1.8.0-openjdk- -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:/opt/sonarqube/lib/jdbc/mssql/mssql-jdbc-6.2.2.jre8.jar /opt/sonarqube/temp/sq-process2956718071411357746properties
    jvm 1 | 2019.02.22 16:32:08 INFO app[][o.s.a.SchedulerImpl] Process [web] is stopped
    jvm 1 | 2019.02.22 16:32:08 INFO app[][o.s.a.SchedulerImpl] Process [es] is stopped
    jvm 1 | 2019.02.22 16:32:08 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
    jvm 1 | 2019.02.22 16:32:08 WARN app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143

  4. yum install mysql-server
    Error: no package mysql-server available (Resolution: Use MariaDB)

    If we install mariadb, how will we be able to proceed with the other commands?

  5. Unable to start, could find below error in logs/es.log. Any idea how to fix this?
    java.lang.RuntimeException: can not run elasticsearch as root

  6. Oops, can’t edit that last comment, but it should be disregarded. I had just mangled the last two characters of the init.d script, heh.

    Great writeup, thanks for sharing this!

Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like