Установка SonarQube
Ранее мы подготовили Ubuntu на гипервизоре VMware и установили Gitlab , теперь давайте установим Sonarqube.
1. Установка java
Для работы Sonarqube необходимо установить виртуальную машину java, причем для 10 версии Sonarqube нужна виртуальная машина минимально 17 версии. Проверить установлена ли java и какой версии можно командой:
$java -version

Если на экране мы получаем что-то подобное, то можно заключить, что java не установлена. Установить можно командой:
$sudo apt -y install openjdk-17-jre
Вновь проверяем:
$java -version

Вот теперь все как надо, видим ответ системы установленной версии виртуальной машины.
2. Установка Postgree SQL.
Еще один компонент, который необходим для работы Sonarqube - это система управления базами данных. Для SonarQube возможно использовать Microsoft SQL, Postgree SQL или Oracle. Мы будем использовать Postgree. Устанавливаем:
$sudo apt install postgresql postgresql-contrib

Соглашаемся и устанавливаем. Далее необходимо создать пользователя и базу данных. Выполняем последовательность команд:
$sudo -Hiu postgres
$createuser sonaradmin
$createdb -O sonaradmin sonarqubedb
$psql
$ALTER USER sonaradmin WITH ENCRYPTED password 'mypassword';
$\q
$exit
Строку ''mypassword' нужно заменить произвольным паролем, это пароль пользователя sonaradmin на базу данных sonarqubedb в postgres.
3. Установка Sonarqube
Переходим в каталог opt
$cd /opt
Загружаем актуальную версию Sonarqube (на момент выхода статьи это 10.4.1.88267).
$wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.4.1.88267.zip
Распаковываем:
$sudo unzip sonarqube-10.4.1.88267.zip -d /tmp/
Переносим распакованную папку:
$mv /opt/sonarqube{-10.4.1.88267,}
Добавляем нового пользователя операционной системы, под которым и будет запускаться Sonarqube:
$useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube
Меняем ему пароль, чтобы протестировать запуск службы в консоли:
$sudo passwd sonarqube
Даем права на каталог:
$sudo chown -R sonarqube: /opt/sonarqube
Инициализируем параметры подключения к Postgree, открываем в редакторе:
$sudo nano /opt/sonarqube/conf/sonar.properties
Находим тут строки
sonar.jdbc.username=
sonar.jdbc.password=
...
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
Инициализируем их нашими значениями:
sonar.jdbc.username=sonaradmin
sonar.jdbc.password=mypassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqubedb
4. Дополнительные настройки перед стартом.
В целом, мы почти все настроили кроме автозапуска демона sonar при перезагрузке. Но есть еще ряд моментов, которые необходимо учесть перед запуском Sonarqube. Во первых, надо изменить системную переменную vm.max_map_count, чтобы исключить ошибку "max virtual memory areas vm.max_map_count 65530 is too low, increase to at least 262144":
Открываем в nano конфигурационный файл и добавляем строку vm.max_map_count=262144:
$sudo nano /etc/sysctl.conf

$ sudo sysctl -p
Далее, выделим нашей виртуальной машине побольше памяти. На 4Гб ОЗУ появлялась ошибка связанная с созданием индексов ElasticSearch "fail to execute es requestes refresh request on indices". Вылечилось добавлением ОЗУ, удалением папки ES8 в каталоге /opt/sonarqube/data и рестартом

5. Тестовый старт с выводом лога в консоль.
Все готово для запуска. Выполнять запуск необходимо под ранее созданным пользователем sonarqube, если попытаться под текущим, то получим ошибку ElasticSearch "can not run as root". Переключаем в консоли под пользователя sonarqube:
$su sonarqube
Вводим заданный нами пароль и запускаем Sonarqube
$/opt/sonarqube/bin/linux-x86-64/sonar.sh console
Видим что в логах отражается работа по установке, первый раз может занять ощутимое время:

Сначала довольно быстро стартует sonar, потом подольше устанавливается ElasticSearch. Все это время, если попробовать войти на дефолтный порт 9000, в нашем случае http://192.168.1.6:9000 можно увидеть такую картину:

После успешного старта входим под дефолтными логин:admin, пароль: admin, переходим в меню Administration - Marketplaces, устанавливаем BSL плагин для 1с и пакет для русской локализации.

Sonarqube предлагает рестарт службы, нажимаем кнопку "Restart Server". После рестарта входим в веб-интерфейс заново и видим что русскоязычная локализация сработала.

6. Настройка автозапуска SonarQube.
Настроим запуск sonarqube как службы. Останавливаем запущенную в консоли программу, выходим из командной строки пользователя sonarqube.

Нам необходимо инициализировать конфигурационный файл /etc/systemmd/system/sonarqube.service. Открываем файл и заполняем его:
$sudo nano /etc/systemmd/system/sonarqube.service
В файл необходимо внести следующую информацию:
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-10.4.1.88267.jar StandardOutput=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Сохраняем файл. Запускаем sonar на уровне службы:
$systemctl enable --now sonarqube
Проверяем статус службы:
$sudo systemctl status sonarqube
Если все сделали правильно - получаем в консоли статус active(running). Теперь, при перезагрузке служба будет подниматься автоматически.