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

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 при прямом доступе). В исходном материале приводятся скриншоты интерфейса:


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

Поздравляем — базовая установка 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 (кратко)
- Создайте проект в веб-интерфейсе SonarQube.
- Установите SonarQube Scanner на CI/локальную машину.
- Добавьте настройки (sonar.projectKey, sonar.host.url, sonar.login) в CI pipeline.
- Запустите анализ и проверьте результаты в веб-интерфейсе.
Совместимость и заметки
Многие старые инструкции используют 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 и подготовьте план отката.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента