Установка SonarQube на Ubuntu 16.04
TL;DR
SonarQube — платформа для автоматической инспекции качества кода. В этой инструкции показано, как установить SonarQube на Ubuntu 16.04 с MariaDB и Apache в качестве обратного прокси. Включены шаги установки, настройка базы данных, сервиса systemd, настройка Apache и основные действия по безопасности и отладке.
Кому это полезно
- Разработчикам и тимлидам, которые хотят развернуть централизованную проверку качества кода.
- DevOps-инженерам, настраивающим CI/CD и мониторинг качества.
Основные варианты использования
primary intent: установка SonarQube related variants: установка SonarQube на Ubuntu, SonarQube MariaDB, Apache reverse proxy для SonarQube, SonarQube systemd
Требования
- Свежая установка Ubuntu 16.04 (минимум). Если вы используете более новую версию Ubuntu — см. раздел «Совместимость и миграция».
- Минимум 4 ГБ оперативной памяти; для больших инстансов рекомендуются 8+ ГБ.
- Непользователь root с правами sudo.
Важно: Ubuntu 16.04 устарела — для новых развёртываний рассмотрите поддержку LTS 18.04/20.04 и более свежие версии SonarQube.
1. Подготовка системы
Обновите пакеты и установите необходимые утилиты:
sudo apt-get update -y
sudo apt-get upgrade -yЗатем приступайте к установке Java.
2. Установка Java
SonarQube — Java-приложение. В оригинальной инструкции предлагается Oracle Java 8 через PPA webupd8team. На современных системах предпочтительнее использовать OpenJDK 8 или OpenJDK 11.
Установка OpenJDK 8 (рекомендуется для совместимости с SonarQube 6.x):
sudo apt-get install openjdk-8-jdk -yПроверьте версию Java:
java -versionОжидаемый вывод похож на:
java version "1.8.0_xx"
Java(TM) SE Runtime Environment
Java HotSpot(TM) 64-Bit Server VMВажно: если вы устанавливаете более новую версию SonarQube, проверьте требования к JVM в документации SonarQube. OpenJDK 11 поддерживается многими современными релизами.
3. Установка Apache и MariaDB
Мы будем использовать Apache как обратный прокси и MariaDB как СУБД.
sudo apt-get install apache2 mariadb-server -yЗапустите и включите сервисы на старте:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql4. Настройка MariaDB
Защитите установку MariaDB:
sudo mysql_secure_installationОтветьте на вопросы, чтобы задать пароль root, удалить анонимных пользователей, запретить удалённый вход для root и удалить тестовую БД.
Затем создайте базу данных и пользователя для SonarQube:
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE sonardb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON sonardb.* TO 'sonar'@'localhost' IDENTIFIED BY 'yourpassword';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \qЗамените yourpassword на надёжный пароль и храните его в менеджере секретов.
Важно: используйте настоящие права доступа и не давайте привилегии шире необходимого в продакшне.
5. Установка SonarQube
Скачайте архив SonarQube (пример для версии 6.4 указан в исходной инструкции). Лучше проверить на официальном сайте актуальную версию.
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zipРаспакуйте и переименуйте папку:
sudo unzip sonarqube-6.4.zip -d /opt
sudo mv /opt/sonarqube-6.4 /opt/sonarОткройте основной конфигурационный файл:
sudo nano /opt/sonar/conf/sonar.propertiesИзмените параметры подключения к базе данных (пример):
##Database User credentials:
sonar.jdbc.username=sonar
sonar.jdbc.password=yourpassword
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falseСохраните файл. Проверьте кодировку и корректность параметров.
Создайте systemd unit-файл, чтобы управлять SonarQube как сервисом:
sudo nano /etc/systemd/system/sonar.serviceВставьте содержимое:
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonar/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonar/bin/linux-x86-64/sonar.sh stop
User=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.targetПримечание: запуск от root — быстрое решение для тестовой среды. Для продакшна создайте неперсональный системный аккаунт (sonar) и задайте корректные права на каталоги /opt/sonar.
Запустите сервис и включите автозапуск:
sudo systemctl start sonar
sudo systemctl enable sonarПроверьте статус:
sudo systemctl status sonarЛоги находятся в /opt/sonar/logs/sonar.log.
6. Настройка Apache как обратного прокси
По умолчанию SonarQube слушает порт 9000. Настроим Apache для проксирования на порт 80.
Включите модули proxy:
sudo a2enmod proxy
sudo a2enmod proxy_httpСоздайте виртуальный хост:
sudo nano /etc/apache2/sites-available/sonar.confДобавьте конфигурацию (пример):
ServerName 192.168.15.189
ServerAdmin [email protected]
ProxyPreserveHost On
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/
TransferLog /var/log/apache2/sonar_access.log
ErrorLog /var/log/apache2/sonar_error.log
Включите сайт и перезапустите apache:
sudo a2ensite sonar
sudo systemctl restart apache2Если вы используете имя домена, укажите в ServerName соответствующий FQDN и настройте DNS.
7. Доступ к веб-интерфейсу
Включите UFW и откройте порт 80:
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw statusОткройте браузер и перейдите по адресу http://192.168.15.189 (или по вашему домену).

Войдите через кнопку «Log in».

Логин по умолчанию: admin / admin. После первого входа смените пароль администратора.

В администрировании проверьте системную информацию и центр обновлений:


После установки или обновления плагинов перезапустите систему через интерфейс или systemctl.
Полезные проверки и отладка
- Проверить статус systemd: sudo systemctl status sonar
- Просмотреть логи: tail -f /opt/sonar/logs/sonar.log
- Убедиться, что MariaDB принимает подключения: mysql -u sonar -p -e “SHOW DATABASES;”
- Проверить доступность порта 9000 локально: curl -I http://localhost:9000
- Проверить работу прокси: curl -I http://127.0.0.1/ через Apache
Роли и чек-листы
Разделено по ролям — кратко.
Разработчик:
- Войти и сменить пароль.
- Установить SonarLint в IDE и привязать к серверу.
- Проверить анализ простого проекта.
DevOps:
- Настроить systemd unit под неполные права (пользователь sonar).
- Создать резервную стратегию для базы данных и каталога /opt/sonar.
- Настроить TLS на Apache (Let’s Encrypt).
Администратор безопасности:
- Ограничить доступ к панели через брандмауэр и VPN.
- Включить аудит и логирование доступа.
- Проверить плагины и удалить ненужные.
Playbook — пошаговая сводка (быстрая)
- apt update && apt upgrade
- apt install openjdk-8-jdk apache2 mariadb-server unzip wget -y
- mysql_secure_installation
- Создать БД и пользователя sonardb/sonar
- wget + unzip SonarQube → /opt/sonar
- Отредактировать /opt/sonar/conf/sonar.properties
- Создать systemd unit и запустить сервис
- Настроить Apache proxy и открыть порт 80
- Войти в UI и сменить пароль
Критерии приёмки
- Веб-интерфейс доступен по HTTP(S) и отвечает 200.
- Пользователь admin может войти и сменить пароль.
- Проект успешно анализируется и результат отображается на дашборде.
- Сервис SonarQube автоматически запускается при старте ОС.
- Логи не содержат ошибок инициализации БД.
Когда этот подход не подходит (контрпримеры)
- Нужны лёгкие ephemeral-инстансы в CI: проще запускать SonarQube в Docker-контейнере или использовать SonarCloud.
- У вас ограниченные ресурсы: SonarQube потребляет память и CPU; возможно, нужен выделенный сервер.
- Вы хотите минимально управляемый сервис: используйте облачный продукт SonarCloud.
Альтернативные подходы
- Docker Compose: удобен для тестирования и CI. Официальные образы SonarQube доступны на Docker Hub.
- Kubernetes: для масштабируемых установок использовать StatefulSet + PersistentVolume + managed DB.
- Использовать PostgreSQL вместо MariaDB (часто рекомендуется для продакшна).
Безопасность и приватность
- Немедленно смените пароль admin.
- Настройте HTTPS на Apache (Let’s Encrypt + certbot).
- Ограничьте доступ к интерфейсу по IP или через VPN.
- Храните пароли и секреты в менеджере секретов, а не в текстовых файлах.
- Если вы обрабатываете приватный код, проверьте политику хранения логов и личных данных. SonarQube хранит метаданные анализа; при работе с персональными данными соблюдайте требования GDPR.
Совместимость и миграция
- SonarQube 6.x специфичен по требованиям Java и БД. Для новых версий SonarQube проверьте официальную матрицу совместимости.
- Ubuntu 16.04 устарела — планируйте миграцию на поддерживаемую LTS. Перед миграцией сделайте бэкап БД и каталога /opt/sonar.
Краткий справочник команд
- systemctl status sonar — статус сервиса
- tail -f /opt/sonar/logs/sonar.log — просмотр логов
- sudo a2ensite sonar && sudo systemctl restart apache2 — включить конфигурацию Apache
- mysql -u sonar -p -e “USE sonardb; SHOW TABLES;” — проверить БД
Тесты приёмки
- Перейти на главную страницу → получить HTTP 200.
- Выполнить быстрый анализ Java/JS проекта с помощью SonarScanner → получить отчёт.
- Перезагрузить сервер → SonarQube запускается автоматически.
Короткий глоссарий (1 строка на термин)
- SonarQube — сервер для анализа качества кода и метрик.
- SonarScanner — клиент для отправки результатов анализа на сервер SonarQube.
- SonarLint — плагин для IDE, показывающий предупреждения локально.
Заключение
В этой инструкции вы нашли пошаговый процесс установки SonarQube на Ubuntu 16.04, настройку MariaDB, systemd и Apache-прокси. Для продакшн-развёртывания адаптируйте права пользователей, включите HTTPS и следуйте рекомендациям по резервному копированию и мониторингу.
Примечание: если вам нужна помощь с настройкой Docker/Kubernetes или переносом на более новую Ubuntu, оставьте комментарий — приведу шаблоны и конфигурации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента