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#, PHP und Websprachen wie JavaScript, HTML und CSS. SonarQube kann Quellcode analysieren, Sicherheitslücken finden, Fehler erkennen und das Ergebnis auf einem webbasierten Dashboard anzeigen. Sie können SonarQube einfach in Maven, Ant, Gradle, MSBuild, LDAP, Active Directory und GitHub integrieren.
In diesem Tutorial lernen wir, wie SonarQube auf einem Ubuntu 18.04 LTS (Bionic Beaver) Server installiert wird.
Anforderungen
- Ein Server mit Ubuntu 18.04.
- Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
Erste Schritte
Bevor Sie beginnen, müssen Sie Ihr System mit der neuesten 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.
Installieren Sie Java
SonarQube ist in Java geschrieben, daher müssen Sie Java auf Ihrem System installieren. Fügen Sie zuerst das Java-Repository mit dem folgenden Befehl hinzu:
sudo add-apt-repository ppa:webupd8team/java
Aktualisieren Sie als Nächstes das Repository und installieren Sie Java mit dem folgenden Befehl:
sudo apt-get update -y
sudo apt-get install oracle-java8-installer -y
Überprüfen Sie nach der Installation von Java die Java-Version mit dem folgenden Befehl:
Java-Version
Ausgabe:
openjdk version „10.0.2“ 2018-07-17OpenJDK 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, gemischter Modus)
PostgreSQL installieren und konfigurieren
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.
Sie können dies 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 -
Aktualisieren Sie als Nächstes das Repository und installieren Sie PostgreSQL mit dem folgenden Befehl:
sudo apt-get update -y
sudo apt-get install postgresql postgresql-contrib
Überprüfen Sie nach Abschluss der Installation den Status von PostgreSQL mit dem folgenden Befehl:
sudo systemctl status postgresql
Ausgabe:
Wechseln Sie als Nächstes mit dem folgenden Befehl zum Postgres-Benutzer:
su - postgres
Erstellen Sie als Nächstes einen Sonarbenutzer mit dem folgenden Befehl:
Benutzersonar erstellen
Wechseln Sie als Nächstes mit dem folgenden Befehl zur PostgreSQL-Shell:
psql
Legen Sie als Nächstes das Passwort für den Sonarbenutzer fest und erstellen Sie mit dem folgenden Befehl eine Sonardatenbank:
BENUTZER Sonar MIT VERSCHLÜSSELTEM Passwort 'Passwort' ÄNDERN;
DATENBANK ERSTELLEN Sonar BESITZER Sonar;
Als nächstes verlassen Sie die PostgreSQL-Shell:
\q
SonarQube installieren und konfigurieren
Erstellen Sie zuerst einen Benutzer für SonarQube mit dem folgenden Befehl:
sudo adduser sonar
Laden Sie als Nächstes die neueste Version von SonarQube mit dem folgenden Befehl herunter:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
Sobald der Download abgeschlossen ist, entpacken Sie die heruntergeladene Datei mit dem folgenden Befehl:
sonarqube-6.7.6.zip entpacken
Als nächstes kopieren Sie das extrahierte Verzeichnis mit dem folgenden Befehl nach /opt:
sudo cp -r sonarqube-6.7.6 /opt/sonarqube
Geben Sie als Nächstes dem Sonarbenutzer mit dem folgenden Befehl die Eigentümerschaft:
sudo chown -R sonar:sonar /opt/sonarqube
Als Nächstes müssen Sie SonarQube so konfigurieren, dass es als Sonarbenutzer ausgeführt wird. Sie können dies 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 Standardkonfigurationsdatei von SonarQube und ändern Sie die Datenbankanmeldeinformationen mit den zuvor erstellten:
sudo nano /opt/sonarqube/conf/sonar.properties
Nehmen Sie die folgenden Änderungen vor:
sonar.jdbc.username=sonarsonar.jdbc.password=passwordsonar.jdbc.url=jdbc:postgresql://localhost/sonarsonar.web.host=127.0.0.1sonar.search.javaOpts=-Xms512m -Xmx512m
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Systemd-Dienstdatei für SonarQube erstellen
Als Nächstes müssen Sie eine systemd-Dienstdatei erstellen, um den SonarQube-Dienst zu verwalten. Sie können dies mit dem folgenden Befehl tun:
sudo nano /etc/systemd/system/sonar.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=SonarQube serviceAfter=syslog.target network.target[Service]Type=forkingExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh startExecStop=/opt/sonarqube/bin/linux -x86-64/sonar.sh stopUser=sonarGroup=sonarRestart=always[Install]WantedBy=multi-user.target
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den SonarQube-Dienst und ermöglichen Sie ihm, beim Booten mit dem folgenden Befehl zu starten:
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
Ausgabe:
Apache für SonarQube konfigurieren
Standardmäßig überwacht SonarQube Port 9000. Daher müssen Sie Apache als Reverse-Proxy installieren und konfigurieren, um über Port 80 auf SonarQube zuzugreifen.
Installieren Sie dazu Apache mit dem folgenden Befehl:
sudo apt-get install apache2 -y
Als nächstes aktivieren Sie das Modul mod_proxy mit dem folgenden Befehl:
sudo a2enmod Proxy
sudo a2enmod Proxy_http
Erstellen Sie als Nächstes mit dem folgenden Befehl eine virtuelle Apache-Hostdatei für SonarQube:
sudo nano /etc/apache2/sites-available/sonar.conf
Fügen Sie die folgenden Zeilen hinzu:
ServerName example.com ServerAdmin [E-Mail-geschützt] 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
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 abschließend 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
Ausgabe:
JVM starten...Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org Copyright 1999-2006 Tanuki Software, Inc. Alle Rechte vorbehalten.2018.12.02 13:55:43 INFO app[] [o.s.a.AppFileSystem] Temp-Verzeichnis bereinigen oder erstellen /opt/sonarqube/temp2018.12.02 13:55:44 INFO app[][o.s.a.es.EsSettings] Elasticsearch hört auf /127.0.0.1:90012018.12.02 13:55:45 INFO app [][o.s.a.p.ProcessLauncherImpl] Starten Sie den Prozess[[key='es', ipcIndex=1, logFilenamePrefix=es]] von [/opt/sonarqube/elasticsearch]:/opt/sonarqube/elasticsearch/bin/elasticsearch -Epath.conf=/opt/sonarqube/temp/conf/es2018.12.02 13:55:45 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] keine Module geladen2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] geladenes Plugin [org.elasticsearch.transport.Netty4Plugin]2018.12.02 13:56:34 INFO app[][o.s.a.SchedulerImpl] Process[es] is up2018. 12.02 13:56:34 INFO app[][o.s.a.p.ProcessLauncherIm pl] Starten Sie den Prozess [[key='web', ipcIndex=2, logFilenamePrefix=web]] von [/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-Webprotokoll auch mit dem folgenden Befehl überprüfen:
sudo tail -f /opt/sonarqube/logs/web.log
Ausgabe:
2018.12.02 13.57.03 INFO web [] [o.s.s.p.ServerPluginRepository] Deploy Plugin SonarJava / 4.15.0.12310 / 572454b93016ec73a53fe0e07b2ffdc356d21ba92018.12.02 13.57.03 INFO web [] [o.s.s.p.ServerPluginRepository] Deploy Plugin SonarPHP / 2.11.0.2485 / 741861a29e5f9a26c6c99c06268facb6c4f4a8822018.12.02 13.57.03 INFO web [] [o.s.s.p.ServerPluginRepository] Deploy Plugin SonarPython / 1.8.0.1496 / 3fe3bc4d0273a5721ea2fb368dc45b1bb82fede32018.12.02 13.57.03 INFO web [] [o.s.s.p.ServerPluginRepository] Deploy Plugin Sonarqube ::Plugins ::SCM ::Git / 1.3.0.869 / 4da53e3f9e55f4f2e5796625cb0c5768ed1520792018.12.02 13.57.03 INFO web [] [o.s.s.p.ServerPluginRepository] Deploy Plugin Sonarqube ::Plugins ::SCM ::SVN / 1.6.0.860 / 2111fdbd1dddda4ad6d4ed6486fd0b18c1010d3b2018.12.02 13.57.03 INFO web[][o.s.s.p.ServerPluginRepository] Plugin SonarTS bereitstellen / 1.1.0.1079 / 042c9e65239a47d92d305f9767f730b3cc1e5ed32018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Plugin SonarXML bereitstellen / 1.4.3.1027 / 395888245CF538BB27BE4E496FF303B0143D20B2018.12.02 13:57:07 Info Web [] [O.S.S.P.D.D.M.C.PostGRESCHARSTER] [O.S.S.P.D.D.MA. Muster=UrlMuster{Einschlüsse=[/api/system/migrate_db/*, ...], Ausschlüsse=[/api/properties*, ...]}]2018.12.02 13:57:09 INFO web[][o.s.s.a. EmbeddedTomcat] HTTP-Connector aktiviert auf Port 90002018.12.02 13:57:16 INFO web[][o.s.s.p.UpdateCenterClient] Update Center:https://update.sonarsource.org/update-center.properties (kein Proxy)
Zugriff auf SonarQube
SonarQube ist jetzt installiert und konfiguriert. Es ist an der Zeit, über einen Webbrowser darauf zuzugreifen.
Öffnen Sie Ihren Webbrowser und geben Sie die URL http://example.com ein. Sie werden auf die folgende Seite weitergeleitet:
Klicken Sie hier auf das Protokoll Ein Taste. Sie sollten die folgende Seite sehen:
Geben Sie den Benutzernamen und das Passwort des Standardadministratorkontos als admin / admin ein und klicken Sie auf Protokoll Ein Taste. Sie sollten das Standard-Dashboard von SonarQube auf der folgenden Seite sehen:
Herzliche Glückwünsche! Sie haben SonarQube erfolgreich auf dem Ubuntu 18.04-Server installiert. Mit SonarQube können Sie jetzt ganz einfach automatische Überprüfungen durchführen und den Zustand einer Anwendung prüfen.