Learn How To Install SonarQube on Ubuntu 16.04

September 25, 2019

Table of Contents

If you are using a different system, please check our other tutorials.

SonarQube is an open source tool for quality system development. It is written in Java and supports multiple databases. It provides capabilities to continuously inspect code, show the health of an application, and highlight newly introduced issues. It contains code analyzers which are equipped to detect tricky issues. It also integrates easily with DevOps.

In this tutorial, we will install the latest version of SonarQube on Ubuntu 16.04.

Prerequisites

  • An ITWeb.Services 64-bit Ubuntu 16.04 server instance with at least 2 GB RAM.
  • A sudo user.

Step 1: Perform a system update

Before installing any packages on the Ubuntu server instance, it is recommended to update the system. Log in using the sudo user and run the following commands to update the system.

sudo apt-get update
sudo apt-get -y upgrade

Step 2: Install JDK

Add the Oracle Java repository on the server by running.

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Install Oracle JDK by typing:

sudo apt install oracle-java8-installer

You can now check the version of Java by typing:

java -version

Step 3: Install and configure PostgreSQL

Install the PostgreSQL repository.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Install the PostgreSQL database server by running:

sudo apt-get -y install postgresql postgresql-contrib

Start PostgreSQL server and enable it to start automatically at boot time by running:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Change the password for the default PostgreSQL user.

sudo passwd postgres

Switch to the postgres user.

su - postgres

Create a new user by typing:

createuser sonar

Switch to the PostgreSQL shell.

psql

Set a password for the newly created user for SonarQube database.

ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';

Create a new database for PostgreSQL database by running:

CREATE DATABASE sonar OWNER sonar;

Exit from the psql shell:

q

Switch back to the sudo user by running the exit command.

Step 4: Download and configure SonarQube

Download the SonarQube installer files archive.

wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zip

You can always look for the link to the latest version of the application on the SonarQube download page.

Install unzip by running:

apt-get -y install unzip

Unzip the archive using the following command.

sudo unzip sonarqube-6.4.zip -d /opt

Rename the directory:

sudo mv /opt/sonarqube-6.4 /opt/sonarqube

Open the SonarQube configuration file using your favorite text editor.

sudo nano /opt/sonarqube/conf/sonar.properties

Find the following lines.

#sonar.jdbc.username=
#sonar.jdbc.password=

Uncomment and provide the PostgreSQL username and password of the database that we have created earlier. It should look like:

sonar.jdbc.username=sonar
sonar.jdbc.password=StrongPassword

Next, find:

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

Uncomment the line, save the file and exit from the editor.

Step 5: Configure Systemd service

SonarQube can be started directly using the startup script provided in the installer package. As a matter of convenience, you should setup a Systemd unit file for SonarQube.

nano /etc/systemd/system/sonar.service

Populate the file with:

[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=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.target

Start the application by running:

sudo systemctl start sonar

Enable the SonarQube service to automatically start at boot time.

sudo systemctl enable sonar

To check if the service is running, run:

sudo systemctl status sonar

Step 5: Configure reverse proxy

By default, SonarQube listens to localhost on port 9000. In this tutorial, we will use Apache as the reverse proxy so that the application can be accessed via the standard HTTP port. Install the Apache web server by running:

sudo apt-get -y install apache2

Enable mod_proxy.

sudo a2enmod proxy
sudo a2enmod proxy_http

Create a new virtual host.

sudo nano /etc/apache2/sites-available/sonar.yourdomain.com.conf

Populate the file with:

<VirtualHost *:80>  
    ServerName sonar.yourdomain.com
    ServerAdmin me@yourdomain.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:9000/
    ProxyPassReverse / http://localhost:9000/
    TransferLog /var/log/apache2/sonar.yourdomain.com_access.log
    ErrorLog /var/log/apache2/sonar.yourdomain.com_error.log
</VirtualHost>

Enable the virtual host.

sudo a2ensite sonar.yourdomain.com.conf

Start Apache and enable it to start automatically at boot time:

sudo systemctl start apache2
sudo systemctl enable apache2

If your server is already running, restart it using:

sudo systemctl restart apache2

Step 6: Finish install

Start the SonarQube service:

sudo systemctl start sonar

SonarQube is installed on your server, access the dashboard at the following address.

http://sonar.yourdomain.com

Log in using the initial administrator account, admin and admin. You can now use SonarQube to continuously analyze the code you have written.

Need help?

Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!