Как установить SonarQube на Ubuntu 18.04 LTS
Это руководство существует для этих версий ОС
- Ubuntu 16.04 (Xenial Xerus)
На этой странице
- Требования
- Начало работы
- Установить Java
- Установка и настройка PostgreSQL
- Установка и настройка SonarQube
- Создайте файл службы Systemd для SonarQube.
- Настройка Apache для SonarQube
- Доступ к SonarQube
SonarQube — это платформа с открытым исходным кодом для постоянной проверки качества кода приложений. Он написан на языке Java и поддерживает несколько баз данных. Вы можете проверять код и работоспособность приложения для более чем 20 языков программирования, включая Java, C, C++, C#, PHP и веб-языков, таких как JavaScript, HTML и CSS. SonarQube может анализировать исходный код, находить уязвимости в системе безопасности, обнаруживать ошибки и отображать результат на веб-панели управления. Вы можете легко интегрировать SonarQube с Maven, Ant, Gradle, MSBuild, LDAP, Active Directory и GitHub.
В этом руководстве мы узнаем, как установить SonarQube на сервер Ubuntu 18.04 LTS (Bionic Beaver).
Требования
- Сервер под управлением Ubuntu 18.04.
- Пользователь без полномочий root с привилегиями sudo.
Начиная
Перед запуском вам нужно будет обновить вашу систему до последней версии. Вы можете сделать это, выполнив следующую команду:
sudo apt-get update -y
sudo apt-get upgrade -y
После обновления вашей системы перезапустите систему, чтобы изменения вступили в силу.
Установить Java
SonarQube написан на языке Java, поэтому вам необходимо установить Java в свою систему. Сначала добавьте репозиторий Java с помощью следующей команды:
sudo add-apt-repository ppa:webupd8team/java
Затем обновите репозиторий и установите Java с помощью следующей команды:
sudo apt-get update -y
sudo apt-get install oracle-java8-installer -y
После установки Java проверьте версию 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)
Установите и настройте PostgreSQL.
По умолчанию последняя версия PostgreSQL недоступна в стандартном репозитории Ubuntu 18.04. Поэтому вам нужно будет добавить репозиторий 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 -
Затем обновите репозиторий и установите PostgreSQL с помощью следующей команды:
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.
Затем переключитесь на пользователя postgres с помощью следующей команды:
su - postgres
Затем создайте пользователя сонара с помощью следующей команды:
createuser sonar
Затем переключитесь в оболочку PostgreSQL с помощью следующей команды:
psql
Затем установите пароль для пользователя сонара и создайте базу данных сонара с помощью следующей команды:
ALTER USER sonar WITH ENCRYPTED password 'password';
CREATE DATABASE sonar OWNER sonar;
Далее exti из оболочки PostgreSQL:
\q
Установите и настройте SonarQube
Сначала создайте пользователя для SonarQube с помощью следующей команды:
sudo adduser sonar
Затем загрузите последнюю версию SonarQube с помощью следующей команды:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
После завершения загрузки разархивируйте загруженный файл с помощью следующей команды:
unzip sonarqube-6.7.6.zip
Затем скопируйте извлеченный каталог в /opt с помощью следующей команды:
sudo cp -r sonarqube-6.7.6 /opt/sonarqube
Затем передайте право собственности пользователю сонара с помощью следующей команды:
sudo chown -R sonar:sonar /opt/sonarqube
Далее вам нужно будет настроить SonarQube для запуска от имени пользователя сонара. Вы можете сделать это с помощью следующей команды:
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
Сохраните и закройте файл, когда закончите.
Создайте файл службы Systemd для SonarQube
Далее вам нужно будет создать файл службы systemd для управления службой SonarQube. Вы можете сделать это с помощью следующей команды:
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
Сохраните и закройте файл, когда закончите. Затем запустите службу SonarQube и включите ее запуск во время загрузки с помощью следующей команды:
sudo systemctl start sonar
sudo systemctl enable sonar
Вы можете проверить статус службы SonarQube с помощью следующей команды:
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) Tasks: 133 (limit: 2323) CGroup: /system.slice/sonar.service ??2396 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=SonarQ ??2399 java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../../lib/jsw/wrapper- ??2445 /usr/lib/jvm/java-8-oracle/jre/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOc ??2545 /usr/lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp - ??2622 /usr/lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp - Dec 02 13:55:33 ubuntu1804 systemd[1]: Starting SonarQube service... Dec 02 13:55:33 ubuntu1804 sonar.sh[2339]: Starting SonarQube... Dec 02 13:55:34 ubuntu1804 sonar.sh[2339]: Started SonarQube. Dec 02 13:55:34 ubuntu1804 systemd[1]: Started SonarQube service.
Настройте Apache для SonarQube
По умолчанию SonarQube прослушивает порт 9000. Поэтому вам необходимо установить и настроить Apache в качестве обратного прокси-сервера для доступа к SonarQube с использованием порта 80.
Для этого установите Apache с помощью следующей команды:
sudo apt-get install apache2 -y
Затем включите модуль mod_proxy с помощью следующей команды:
sudo a2enmod proxy
sudo a2enmod proxy_http
Затем создайте файл виртуального хоста Apache для SonarQube с помощью следующей команды:
sudo nano /etc/apache2/sites-available/sonar.conf
Добавьте следующие строки:
<VirtualHost *:80> ServerName example.com ServerAdmin 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 </VirtualHost>
Замените example.com своим доменным именем. Сохраните и закройте файл. Затем включите файл виртуального хоста SonarQube с помощью следующей команды:
sudo a2ensite sonar
Наконец, перезапустите службу Apache и SonarQube, чтобы применить все изменения, с помощью следующей команды:
sudo systemctl restart apache2
sudo systemctl restart sonar
По умолчанию SonarQube хранит свои журналы в каталоге /opt/sonarqube/logs. Вы можете проверить журнал SonarQube с помощью следующей команды:
sudo tail -f /opt/sonarqube/logs/sonar.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:55:44 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001 2018.12.02 13:55:45 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch -Epath.conf=/opt/sonarqube/temp/conf/es 2018.12.02 13:55:45 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running 2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] no modules loaded 2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin] 2018.12.02 13:56:34 INFO app[][o.s.a.SchedulerImpl] Process[es] is up 2018.12.02 13:56:34 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/opt/sonarqube]: /usr/lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.2.1.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process420500314195865484properties
Вы также можете проверить веб-журнал SonarQube, используя следующую команду:
sudo tail -f /opt/sonarqube/logs/web.log
Вывод:
2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarJava / 4.15.0.12310 / 572454b93016ec73a53fe0e07b2ffdc356d21ba9 2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarPHP / 2.11.0.2485 / 741861a29e5f9a26c6c99c06268facb6c4f4a882 2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarPython / 1.8.0.1496 / 3fe3bc4d0273a5721ea2fb368dc45b1bb82fede3 2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarQube :: Plugins :: SCM :: Git / 1.3.0.869 / 4da53e3f9e55f4f2e5796625cb0c5768ed152079 2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarQube :: Plugins :: SCM :: SVN / 1.6.0.860 / 2111fdbd1dddda4ad6d4ed6486fd0b18c1010d3b 2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarTS / 1.1.0.1079 / 042c9e65239a47d92d305f9767f730b3cc1e5ed3 2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin SonarXML / 1.4.3.1027 / 39588245cecf538bb27be4e496ff303b0143d20b 2018.12.02 13:57:07 INFO web[][o.s.s.p.d.m.c.PostgresCharsetHandler] Verify that database charset supports UTF8 2018.12.02 13:57:09 INFO web[][o.s.s.p.w.MasterServletFilter] Initializing servlet filter [pattern=UrlPattern{inclusions=[/api/system/migrate_db/*, ...], exclusions=[/api/properties*, ...]}] 2018.12.02 13:57:09 INFO web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000 2018.12.02 13:57:16 INFO web[][o.s.s.p.UpdateCenterClient] Update center: https://update.sonarsource.org/update-center.properties (no proxy)
Доступ к SonarQube
Теперь SonarQube установлен и настроен. Пришло время получить к нему доступ через веб-браузер.
Откройте веб-браузер и введите URL-адрес http://example.com. Вы будете перенаправлены на следующую страницу:
Здесь нажмите на кнопку Войти. Вы должны увидеть следующую страницу:
Укажите имя пользователя и пароль учетной записи администратора по умолчанию как admin/admin и нажмите кнопку «Войти». Вы должны увидеть панель инструментов SonarQube по умолчанию на следующей странице:
Поздравляем! вы успешно установили SonarQube на сервер Ubuntu 18.04. Теперь вы можете легко выполнять автоматические проверки и проверять работоспособность приложения с помощью SonarQube.