Wie man SonarQube auf Ubuntu 18.04 LTS installiert

SonarQube ist eine Open-Source-Plattform zur kontinuierlichen Überprüfung der Codequalität von Anwendungen. Es ist in Java geschrieben und unterstützt mehrere Datenbanken. Sie können Code inspizieren und den Zustand einer Anwendung für mehr als 20 Programmiersprachen überprüfen, darunter Java, C, C, C++, C#, PHP und Websprachen wie JavaScript, HTML und CSS. SonarQube kann Quellcode analysieren, Sicherheitsschwachstellen finden, Fehler erkennen und das Ergebnis auf dem webbasierten Dashboard anzeigen. Sie können SonarQube einfach mit Maven, Ant, Gradle, MSBuild, LDAP, Active Directory und GitHub integrieren.

In diesem Tutorial lernen wir, wie man SonarQube auf einem Ubuntu 18.04 LTS (Bionic Beaver) Server installiert.

Anforderungen

  • Ein Server mit Ubuntu 18.04.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.

Erste Schritte

Vor dem Start müssen Sie Ihr System auf die neueste Version aktualisieren. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

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

Sobald Ihr System aktualisiert ist, starten Sie das System neu, um die Änderungen zu übernehmen.

Java installieren

SonarQube ist in der Sprache Java geschrieben, daher müssen Sie Java auf Ihrem System installieren. Fügen Sie zunächst das Java-Repository mit dem folgenden Befehl hinzu:

sudo add-apt-repository ppa:webupd8team/java

Als nächstes aktualisieren Sie das Repository und installieren Java mit dem folgenden Befehl:

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

Sobald das Java installiert ist, überprüfen Sie die Java-Version mit dem folgenden Befehl:

java -version

Output:

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)

Installation und Konfiguration von PostgreSQL

Standardmäßig ist die neueste Version von PostgreSQL nicht im Standard-Repository von Ubuntu 18.04 verfügbar. Sie müssen also das PostgreSQL-Repository zu Ihrem System hinzufügen.

Dies kannst du mit dem folgenden Befehl tun:

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 -

Als nächstes aktualisieren Sie das Repository und installieren PostgreSQL mit dem folgenden Befehl:

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

Nach Abschluss der Installation überprüfen Sie den Status von PostgreSQL mit dem folgenden Befehl:

sudo systemctl status postgresql

Output:

? 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.

Wechseln Sie dann mit dem folgenden Befehl zum postgres-Benutzer:

su - postgres

Als nächstes erstellen Sie einen Sonarbenutzer mit dem folgenden Befehl:

createuser sonar

Wechseln Sie anschließend mit dem folgenden Befehl in die PostgreSQL-Shell:

psql

Als nächstes setzen Sie das Passwort für den Sonarbenutzer und erstellen eine Sonardatenbank mit dem folgenden Befehl:

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

Als nächstes, exti aus der PostgreSQL-Shell:

\q

Installation und Konfiguration von SonarQube

Erstellen Sie zunächst einen Benutzer für SonarQube mit dem folgenden Befehl:

sudo adduser sonar

Als nächstes laden Sie die neueste Version von SonarQube mit dem folgenden Befehl herunter:

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

Wenn der Download abgeschlossen ist, entpacken Sie die heruntergeladene Datei mit dem folgenden Befehl:

unzip sonarqube-6.7.6.zip

Kopieren Sie anschließend das extrahierte Verzeichnis mit dem folgenden Befehl in das Verzeichnis /opt:

sudo cp -r sonarqube-6.7.6 /opt/sonarqube

Als nächstes geben Sie dem Sonarbenutzer mit dem folgenden Befehl das Eigentum:

sudo chown -R sonar:sonar /opt/sonarqube

Als nächstes müssen Sie SonarQube so konfigurieren, dass es als Sonarbenutzer ausgeführt wird. Dies kannst du mit dem folgenden Befehl tun:

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

Nehmen Sie die folgenden Änderungen vor:

RUN_AS_USER=sonar

Speichern und schließen Sie die Datei. Öffnen Sie dann die SonarQube-Standardkonfigurationsdatei und ändern Sie die Datenbank-Anmeldeinformationen mit denen, die wir zuvor erstellt haben:

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

Nehmen Sie die folgenden Änderungen vor:

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

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Systemd Servicedatei für SonarQube erstellen

Als nächstes müssen Sie eine Systemdatei erstellen, um den SonarQube-Dienst zu verwalten. Dies kannst du mit dem folgenden Befehl tun:

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

Füge die folgenden Zeilen hinzu:

[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

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den SonarQube-Dienst und aktivieren Sie ihn, damit er beim Booten mit dem folgenden Befehl gestartet werden kann:

sudo systemctl start sonar
sudo systemctl enable sonar

Sie können den Status des SonarQube-Dienstes mit dem folgenden Befehl überprüfen:

sudo systemctl status sonar

Output:

? 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 für SonarQube konfigurieren

Standardmäßig hört SonarQube auf Port 9000. Daher müssen Sie den Apache als Reverse-Proxy installieren und konfigurieren, um über den Port 80 auf SonarQube zugreifen zu können.

Installieren Sie dazu den Apache mit dem folgenden Befehl:

sudo apt-get install apache2 -y

Als nächstes aktivieren Sie das mod_proxy-Modul mit dem folgenden Befehl:

sudo a2enmod proxy
sudo a2enmod proxy_http

Erstellen Sie anschließend eine virtuelle Apache-Hostdatei für SonarQube mit dem folgenden Befehl:

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

Füge die folgenden Zeilen hinzu:

<VirtualHost *:80>
    ServerName example.com
    ServerAdmin admin@example.com
    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>

Ersetzen Sie example.com durch Ihren eigenen Domainnamen. Speichern und schließen Sie die Datei. Aktivieren Sie dann die virtuelle SonarQube-Hostdatei mit dem folgenden Befehl:

sudo a2ensite sonar

Starten Sie schließlich den Apache und SonarQube-Dienst neu, um alle Änderungen mit dem folgenden Befehl zu übernehmen:

sudo systemctl restart apache2
sudo systemctl restart sonar

Standardmäßig speichert SonarQube seine Protokolle im Verzeichnis /opt/sonarqube/logs. Sie können das SonarQube-Protokoll mit dem folgenden Befehl überprüfen:

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

Output:

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

Sie können das SonarQube Weblog auch mit dem folgenden Befehl überprüfen:

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

Output:

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 org.sonar.server.ws.WebServiceFilter@792e6771 [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)

Zugriff auf SonarQube

SonarQube ist nun installiert und konfiguriert. Es ist an der Zeit, über den Webbrowser darauf zuzugreifen.

Öffnen Sie Ihren Webbrowser und geben Sie die URL http://example.com ein. Sie werden auf die folgende Seite weitergeleitet:

SonarQube

Klicken Sie hier auf die Schaltfläche Anmelden. Du solltest die folgende Seite sehen:

Anmelden

Geben Sie den Standard-Administratorkonto-Benutzernamen und das Passwort als admin / admin an und klicken Sie auf die Schaltfläche Anmelden. Sie sollten das SonarQube Standard-Dashboard auf der folgenden Seite sehen:

SonarCube Dashboard

Herzlichen Glückwunsch! Sie haben SonarQube erfolgreich auf dem Ubuntu 18.04 Server installiert. Mit SonarQube können Sie nun ganz einfach automatische Überprüfungen durchführen und den Zustand einer Anwendung überprüfen.

Das könnte dich auch interessieren …