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.