5/5 - (1 vote)

In this guide I want to set out a step-by-step setup for deploying a platform for continuous analysis and measurement of code quality. There are a lot of similar articles on the network, but I want to highlight only the main thing so that all newcomers can deal with it the first time.

You already learned the wiki, right?

And before we get started I want you to decide which version to implement for you, because with each update more and more plugins become paid, what, of course, will affect financial costs or functionality.

According to the documentation, it is recommended to keep the server and database on different machines.

But in the sandbox you can also train on one.

So. I work with virtual machines. Prepared 2 pieces, or rather raised one and made a duplicate of it.

Ubuntu server 18.04.3 LTS was at my fingertips.

You can change the name and ip easily and simply using these commands:

change hostname

$ hostnamectl set-hostname sonarapp
sudo nano /etc/hostname
sudo nano /etc/hosts

change ip ubuntu

sudo nano /etc/netplan/01-eth0.yaml

There,you are find the familiar lines and change the parameters of the machine name and IP address.

And what should happen:

Sonar app server [SonarApp]
user: admin
IP: 192.168.0.15
Platform: Ubuntu server 18.04.3 LTS [8 cores, 16GB of RAM, 20Gb + 50Gb (/opt) disk space]

Sonar database [SonarDB]
user: admin
IP: 192.168.0.16
Platform: Ubuntu server 18.04.3 LTS [8 cores, 16GB of RAM, 20Gb + 100Gb disk space]

Start of work

We go to the first machine – 192.168.0.15 (SonarApp) NOT under root, but under its own admin account. Those lines that begin with the $ character are terminal input, and the rest is what we’ll edit in the files or what should be received on the output (information output)

  •  you need java. Take OpenJDK

Install open-jdk11

$ sudo apt-get install openjdk-11-jdk

change java PATH

$ nano ~/.bash_profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java 
export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH

Download and configure SonarQube

Download the SonarQube installer files archive.

$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip

Install unzip by running:

# apt-get -y install unzip

Unzip the archive using the following command

$ sudo unzip sonarqube-7.9.1.zip -d /opt

Rename the directory

$ sudo mv /opt/sonarqube-7.9.1 /opt/sonarqube

Add Sonar User and Privileges

Create a user named sonar and make it the owner of the /opt/sonarqubedirectory

$ sudo adduser sonar
$ sudo passwd sonar
$ sudo chown -R sonar:sonar /opt/sonarqube

Continuation configure SonarQube

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

sonar.web.host=192.168.0.15
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
# sonar.jdbc.url=jdbc:postgresql://localhost/username
sonar.jdbc.url=jdbc:postgresql://192.168.0.16/sonar
sonar.web.javaAdditionalOpts=-server

Create a file /etc/systemd/system/sonarqube.service and past the following content on to the file

Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonar
Group=sonar
PermissionsStartOnly=true
ExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-7.9.1.jar
StandardOutput=syslog
LimitNOFILE=65536
LimitNPROC=8192
TimeoutStartSec=5
Restart=always

[Install]
WantedBy=multi-user.target

Start and enable sonarqube

$ sudo systemctl start sonarqube
$ sudo systemctl enable sonarqube

To check if the service is running, run:

$ sudo systemctl status sonarqub

Log:

tail -f /opt/sonarqube/logs/sonar.log

Now connect to the second machine

(SonarDB) under our admin 192.168.0.16

Installing the Database

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

Switch to the PostgreSQL shell.

$ psql

Configure PostgreSQL

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

CREATE ROLE sonar WITH PASSWORD 'sonar';
SELECT rolname FROM pg_roles;
alter role sonar login;
SELECT pg_reload_conf();
Create a new database for PostgreSQL database by running:
create database sonar owner sonar;

Exit from the psql shell:

'\q'

Move Databases PostgreSQL

Stop PostgreSQL service

$ service postgresql stop
# or
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main

Change data directory.

$ psql

# show data_directory;
/var/lib/postgresql/10/main

$ sudo rsync -av /var/lib/postgresql /opt/sonardb
$ sudo mv /var/lib/postgresql/*/main /var/lib/postgresql/*/main.bak

$ sudo nano /etc/postgresql/*/main/postgresql.conf # change location for new data_directory.
data_directory = '/opt/sonardb/postgresql/10/main'
listen_addresses = '*'

Change check

$ sudo -u postgres psql
# show data_directory;
______________________
/opt/sonardb/postgresql/10/main
# \q

And also need to check system parameters. They can be added to the /etc/sysctl.conf file or entered in the terminal:

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

To check the availability of the database, connect to 192.168.0.15 and type:

$ psql -h 192.168.0.16 -p 5432 -U sonar

That’s all. To make sure that everything works, go to the browser (make sure that the 192.168.X.X network is accessible from yours or use links).

We’ll dial 192.168.0.15:9000 and you should be greeted with an authorization window.

Login: admin

Password: admin

This is the default admin account.