Pull to refresh

Deploy SonarQube Server

Reading time5 min
Views9.4K

Привет, хаброжители!


В данном руководстве хочу изложить пошаговую настройку по развёртыванию платформы для непрерывного анализа и измерения качества кода. Подобных статей в сети достаточно много, но я хочу выделить лишь главное, чтобы все новички с первого раза смогли с ней разобраться. Ставить будем SonarQube 7.9 с PostgreSQL 10.


Вы уже изучили вики, не так ли?


И прежде чем начнём


Хочу, чтобы вы определились, какую версию вам внедрять, ведь с каждым обновлением всё больше и больше плагинов становятся платными, что, естественно, скажется на финансовых затратах или функционале.


В общем — перейдите по этой ссылке и убедитесь сами: plugin version matrix.


Согласно документации: сервер и базу данных рекомендуется держать на разных машинках. Но в песочнице можно потренировать и на одной.


Если у вас Ubuntu и 2 сервера


Если вы решили пойти по пути рекомендаций и чтобы не возиться с созданием двух виртуальных машин создали одну — изменить имя и ip второго сервера вы сможете легко и просто с помощью этих команд:


::: change hostname :::


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

::: change ip ubuntu :::


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

Там найдите знакомые строчки и поменяйте параметры имени машинки и IP адреса.


И что должно получиться:


Sonar app server [SonarApp]: 8 cores, 16GB of RAM, 20Gb + 50Gb (/opt) disk space


user password IP Platform
admin pass123 192.168.0.15 Ubuntu Linux

Sonar database [SonarDB]: 8 cores, 16GB of RAM, 20Gb + 50Gb (/opt) disk space


user password IP Platform
admin pass123 192.168.0.16 Debian Linux

1. Предлагаю начать с базы данных


Логинимся под нашим добрым admin'ом на 192.168.0.16 (SonarDB). Очень важно, чтобы НЕ под root'ом.


Убедимся, установлен ли PostgreSQL в системе. Есть много вариантов, но попробуем самый простой:


$ which psql
$ psql -V
$ find / -name 'postgres'

посмотреть, какие пакеты загружены в систему:


$ dpkg -l | grep postgres

Если ничего не нашлось, то проверим, есть ли в репозиториях версия PostgreSQL 10:


$ sudo apt-cache search postgresql-10

Официальная документация по установке PostgreSQL: link. Но а если по порядку:


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

$ sudo apt-get update
$ sudo apt-get install postgresql-10 pgadmin4

  • у меня возникли проблемы с локалью, после добавления postgres в систему. Метод решения (решение в файле /etc/default/locale):
    $ sudo locale-gen en_US.UTF-8
    $ sudo localedef -i en_US -f UTF-8 en_US.UTF-8
    $ export LANGUAGE=en_US.UTF-8
    $ export LANG=en_US.UTF-8
    $ export LC_ALL=en_US.UTF-8
    $ sudo locale-gen en_US.UTF-8
    $ sudo dpkg-reconfigure locales

Команда dpkg-reconfigure locales откроет диалоговое окно под Debian для выбора желаемой локали. Выбери en_US.UTF-8.


Запуск!


$ sudo systemctl start postgresql
$ sudo systemctl status postgresql
$ sudo nano /etc/postgresql/10/main/postgresql.conf

### CTRL + W ### -> listen_addresses = '*'
$ sudo systemctl restart postgresql

Проверим успешная ли установка:


$ sudo apt-get install -y net-tools
$ sudo netstat -antup | grep 5432
$ dpkg --get-selections |grep postgres
$ pg_lsclusters

Мои поздравления! Приступай. :)


sudo su -l postgres
psql
### CTRL + Z ### -> exit from psql
### exit ###

Change the password for the default PostgreSQL user


$ sudo passwd postgres

Switch to the postgres user.


$ su - postgres

Switch to the PostgreSQL shell.


$ psql

Базовая конфигурация 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'

Миграция базы данных 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

А также нужно проверить системные параметры. Их можно добавить в файл /etc/sysctl.conf (или /etc/sysctl.d/99-sonarqube.conf) или ввести в терминале :


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

2. А теперь займёмся сервером приложения SonarQube


Логинимся под нашим добрым admin'ом на 192.168.0.15 (SonarApp). Здесь также важно, чтобы НЕ под root'ом.


Те строчки, что начинаются с символа $ — это терминальный ввод, а остальные — уже что правим в файлах или что должны получить на выходе (вывод инфы)


Для работы SonarQube необходима JAVA. Возьмём OpenJDK


Установка 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

Проверить, что JAVA успешно добавлена в систему:


$ java -version

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


Подробнее про "управление пользователями" в Unix.


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

get list users in the system:


$ cut -d: -f1 /etc/passwd

в каких группах находится ваш новый пользователь:


$ groups sonar

Continuation configure SonarQube


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

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.web.host=192.168.0.15
# 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 sonarqube

Log:


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



Для проверки доступности базы данных подключимся к 192.168.0.15 и наберём:


$ psql -h 192.168.0.16 -p 5432 -U sonar

Вот и всё. Чтобы убедиться, что всё работает — переходим в браузер (убедитесь что 192.168.X.X сеть доступна из Вашей или воспользуйтесь links).


Наберём 192.168.0.15:9000 и Вас должно приветствовать окошко авторизации.


Стандарные первичные админские пользовательские данные SonarQube:


user password
admin admin
Only registered users can participate in poll. Log in, please.
Нужно ли дополнить эту статью информацией об интеграции с CI платформами? Если да, то какими
20.59% Да, нужно: teamcity7
55.88% Да, нужно: jenkins19
32.35% Да, нужно: другой вариант (оставил в комментариях)11
34 users voted. 4 users abstained.
Only registered users can participate in poll. Log in, please.
Нужно ли составить подробную статью-руководство, как работать с сонаром?
92.11% да, хотелось бы35
7.89% я умничка — сам разберусь / уже знаю3
38 users voted. 2 users abstained.
Tags:
Hubs:
Total votes 10: ↑9 and ↓1+8
Comments9

Articles