Гид по технологиям

Установка SonarQube на Ubuntu 18.04

6 min read DevOps Обновлено 27 Nov 2025
Установка SonarQube на Ubuntu 18.04
Установка SonarQube на Ubuntu 18.04

Иллюстрация SonarQube

SonarQube — это платформа с открытым исходным кодом для непрерывной проверки качества кода приложений. Она написана на Java и поддерживает несколько баз данных. SonarQube умеет анализировать код более чем на 20 языках программирования (Java, C, C++, C#, PHP, JavaScript, HTML, CSS и др.), выявлять уязвимости, ошибки и отображать результаты на веб-панели. SonarQube легко интегрируется с Maven, Ant, Gradle, MSBuild, LDAP/Active Directory и GitHub.

В этом руководстве описаны шаги по установке SonarQube на сервер Ubuntu 18.04 LTS (Bionic Beaver) и базовая конфигурация для продакшен- или тестовой среды.

Содержание

  • Требования
  • Подготовка системы
  • Установка Java
  • Установка и настройка PostgreSQL
  • Установка и настройка SonarQube
  • Создание systemd-сервиса
  • Настройка Apache как обратного прокси
  • Логи и отладка
  • Рекомендации по безопасности и резервному копированию
  • Чек‑лист ролей и приёмочные критерии
  • Частые ошибки и их устранение
  • Глоссарий

Требования

  • Сервер с Ubuntu 18.04.
  • Ненулевой пользователь с правами sudo.
  • Домен (рекомендуется для доступа через HTTPS), например example.com.

Важно: SonarQube — Java-приложение и требует достаточного объёма памяти и дискового пространства. Для небольших инсталляций рекомендуется не менее 2 ГБ оперативной памяти, для рабочих/продакшен сред — больше.

Подготовка системы

Перед началом обновите систему:

sudo apt-get update -y  
sudo apt-get upgrade -y

Перезагрузите систему, если это требуется для применения обновлений.

Установка Java

SonarQube работает на JVM. В источнике ниже используется установка Oracle Java 8 через ppa:webupd8team/java и пакет oracle-java8-installer:

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update -y  
sudo apt-get install oracle-java8-installer -y

Проверка версии Java:

java -version

Выход примера:

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)

Важно: PPA webupd8team и пакеты oracle-java8-installer со временем могли устареть. В рабочих окружениях предпочтительнее использовать OpenJDK (версии 8 или 11), поддерживаемые вашим релизом SonarQube. Если вы используете OpenJDK, команда установки выглядит так:

sudo apt-get install openjdk-8-jdk -y

Проверьте переменные окружения и используемый java-home при необходимости.

Установка и настройка PostgreSQL

Добавим репозиторий PostgreSQL и установим сервер БД (в исходном руководстве добавляется официальный репозиторий PostgreSQL):

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 -

sudo apt-get update -y  
sudo apt-get install postgresql postgresql-contrib

Проверка статуса PostgreSQL:

sudo systemctl status postgresql

Примерный вывод:

? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sun 2018-12-02 08:49:29 UTC; 4h 30min ago
  Process: 1295 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 1295 (code=exited, status=0/SUCCESS)

Dec 02 08:49:29 ubuntu1804 systemd[1]: Starting PostgreSQL RDBMS...
Dec 02 08:49:29 ubuntu1804 systemd[1]: Started PostgreSQL RDBMS.

Создайте пользователя и базу данных для SonarQube:

su - postgres
createuser sonar
psql

ALTER USER sonar WITH ENCRYPTED password 'password';  
CREATE DATABASE sonar OWNER sonar;

\q

Важно: используйте надёжный пароль вместо ‘password’ и ограничьте доступ к БД через файлы pg_hba.conf, если сервер доступен извне.

Установка и настройка SonarQube

Создайте пользователя для SonarQube:

sudo adduser sonar

Скачайте указанную в исходном руководстве версию SonarQube (пример 6.7.6):

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

Распакуйте и переместите в /opt:

unzip sonarqube-6.7.6.zip
sudo cp -r sonarqube-6.7.6 /opt/sonarqube
sudo chown -R sonar:sonar /opt/sonarqube

Настройте запуск от имени пользователя sonar. Откройте скрипт запуска и измените параметр RUN_AS_USER:

sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh

Внесите:

RUN_AS_USER=sonar

Откройте основной конфигурационный файл SonarQube и пропишите данные БД:

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

Изменения в файле:

sonar.jdbc.username=sonar
sonar.jdbc.password=password
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
sonar.web.host=127.0.0.1
sonar.search.javaOpts=-Xms512m  -Xmx512m

Сохраните изменения. Если ваш сервер должен быть доступен не только локально, настройте sonar.web.host соответственно (или используйте обратный прокси).

Создание systemd-сервиса для SonarQube

Создайте unit-файл:

sudo nano /etc/systemd/system/sonar.service

Добавьте содержимое:

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

[Service]
Type=forking

ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop

User=sonar
Group=sonar
Restart=always

[Install]
WantedBy=multi-user.target

Запустите и включите автозапуск:

sudo systemctl start sonar  
sudo systemctl enable sonar

Проверка статуса:

sudo systemctl status sonar

Пример вывода (укороченный):

? sonar.service - SonarQube service
   Loaded: loaded (/etc/systemd/system/sonar.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-12-02 13:55:34 UTC; 2min 52s ago
  Process: 2339 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
 Main PID: 2396 (wrapper)

Если SonarQube не стартует, см. раздел “Отладка” далее.

Настройка Apache для SonarQube

По умолчанию SonarQube слушает порт 9000. Чтобы обеспечить доступ через стандартный HTTP/HTTPS (80/443), можно настроить Apache как обратный прокси.

Установите Apache:

sudo apt-get install apache2 -y

Включите модули proxy:

sudo a2enmod proxy  
sudo a2enmod proxy_http

Создайте виртуальный хост:

sudo nano /etc/apache2/sites-available/sonar.conf

Пример содержимого:


    ServerName example.com
    ServerAdmin [email protected]
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:9000/
    ProxyPassReverse / http://127.0.0.1:9000/
    TransferLog /var/log/apache2/sonarm_access.log
    ErrorLog /var/log/apache2/sonar_error.log

Замените example.com на ваш домен. Затем включите сайт и перезапустите сервисы:

sudo a2ensite sonar
sudo systemctl restart apache2  
sudo systemctl restart sonar

Рекомендуется дополнительно настроить HTTPS (Let’s Encrypt / certbot), поставить HSTS и ограничить доступ по IP при необходимости.

Просмотр логов

Логи SonarQube хранятся в /opt/sonarqube/logs. Примеры команд:

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

Примеры фрагментов логов (исходный пример):

Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2018.12.02 13:55:43 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
...
2018.12.02 13:57:09 INFO  web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000

Доступ к SonarQube

Откройте в браузере http://example.com (или IP:9000 при прямом доступе). В исходном материале приводятся скриншоты интерфейса:

Страница входа SonarQube

Форма входа SonarQube

Вход по умолчанию: логин admin, пароль admin. Обязательно смените пароль администратора при первом входе.

Панель инструментов SonarQube

Поздравляем — базовая установка SonarQube завершена. Ниже — дополнительные рекомендации и контрольные списки для эксплуатации.

Рекомендации по безопасности и резервному копированию

  • Смените пароль администратора сразу после доступа.
  • Настройте HTTPS через обратный прокси (Apache/Nginx) и сертификаты от Let’s Encrypt.
  • Ограничьте доступ к базе данных: в pg_hba.conf разрешайте подключения только с доверенных хостов.
  • Регулярно делайте резервные копии базы данных (pg_dump) и папки конфигурации /opt/sonarqube/conf.
  • Отключайте плагины, которые вы не используете.

Производительность и требования

  • Для небольших проектов SonarQube может работать на 2–4 ГБ ОЗУ, но реальные потребности зависят от количества одновременно анализируемых проектов и объёма данных.
  • Elasticsearch (в составе SonarQube) чувствителен к памяти и дисковому вводу-выводу.
  • На диске учитывайте место для индексов Elasticsearch и историй анализов.

Чек‑лист ролей

Администратор:

  • Сменить пароль admin
  • Настроить HTTPS
  • Настроить резервное копирование БД
  • Прописать политики доступа

DevOps:

  • Обеспечить мониторинг сервиса (systemd, Prometheus/Alertmanager)
  • Настроить ротацию логов и доступность диска
  • Обновлять Java/OS и SonarQube по плану обновлений

Разработчик/QA:

  • Настроить интеграцию CI для отправки отчётов в SonarQube
  • Проверять качество по правилам и баг‑траекториям

Критерии приёмки

  • Сервис SonarQube доступен по адресу http(s)://<ваш-домен>
  • Вход в систему под admin/admin и смена пароля успешны
  • SonarQube подключён к PostgreSQL и отображает статус подключения в логах
  • Анализ простого проекта через локальный Scanner или CI завершается успешно и результат виден в веб-интерфейсе

Частые ошибки и способы устранения

  • SonarQube не стартует — проверьте логи /opt/sonarqube/logs/*, убедитесь, что БД доступна и Java корректной версии.
  • Проблемы с Elasticsearch — чаще всего из‑за недостатка памяти; проверьте параметры JVM в sonar.properties и логи es.
  • 502/504 при проксировании через Apache — проверьте, что SonarQube слушает 127.0.0.1:9000 и что нет брандмауэра, блокирующего соединение.

Пример команды для просмотра всех логов:

sudo ls -la /opt/sonarqube/logs
sudo tail -n 200 /opt/sonarqube/logs/sonar.log

Советы по обновлению и миграции

  • Перед обновлением SonarQube делайте полную резервную копию базы данных и каталога конфигурации.
  • Читайте официальные релизные заметки: версии SonarQube могут требовать другой версии Java или PostgreSQL.
  • Тестируйте обновление в staging среде перед продакшеном.

Мини‑методология: как добавить проект в SonarQube (кратко)

  1. Создайте проект в веб-интерфейсе SonarQube.
  2. Установите SonarQube Scanner на CI/локальную машину.
  3. Добавьте настройки (sonar.projectKey, sonar.host.url, sonar.login) в CI pipeline.
  4. Запустите анализ и проверьте результаты в веб-интерфейсе.

Совместимость и заметки

Многие старые инструкции используют Oracle Java 8 и SonarQube 6.x. Новые релизы SonarQube могут требовать Java 11+ и поддерживать другие версии PostgreSQL. Перед установкой проверьте требования конкретной версии SonarQube.

Глоссарий (1 строка определения)

  • SonarQube — платформа для статического анализа кода и контроля качества.
  • Scanner — клиент, который выполняет анализ кода и отправляет результат в SonarQube.
  • Elasticsearch — компонент поиска, используемый внутри SonarQube для индексации данных.

Резюме

SonarQube — мощный инструмент для автоматической проверки качества кода. В этом руководстве вы нашли пошаговые инструкции по установке на Ubuntu 18.04, включая настройку Java, PostgreSQL, systemd-сервиса и Apache-проксирования. После установки обязательно смените дефолтные пароли, настройте HTTPS и резервное копирование.

Важно: перед развёртыванием в продакшен проверьте требования выбранной версии SonarQube к Java и базе данных, протестируйте в staging и подготовьте план отката.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро