Привет, хаброжители!
В данном руководстве хочу изложить пошаговую настройку по развёртыванию платформы для непрерывного анализа и измерения качества кода. Подобных статей в сети достаточно много, но я хочу выделить лишь главное, чтобы все новички с первого раза смогли с ней разобраться. Ставить будем 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 |