So installierst du SonarQube unter Ubuntu 22.04

SonarQube oder früher Sonar ist eine Open-Source-Plattform für statische Codeanalyse und Codesicherheit. Mit ihr kannst du statische Codeanalysen und Codequalität durchführen, um Fehler zu erkennen und die Anwendungssicherheit zu verbessern. Außerdem liefert es Berichte zu doppeltem Code, Codierungsstandards, Codekomplexität und Sicherheitsempfehlungen.

Mit SonarQube kannst du die statische Codeanalyse für 29 Programmiersprachen automatisieren. Du kannst SonarQube einfach in deine bestehenden CI/CD-Tools wie Jenkins, Azure DevOps oder IDEs wie IntelliJ und Visual Code Studio integrieren.

In dieser Anleitung erfährst du, wie du die statische Codeanalyse von SonarQube auf einem Ubuntu 22.04 Server installierst. Außerdem erfährst du, wie du PostgreSQL, die Datenbank für SonarQube, und den Nginx-Webserver, der als Reverse Proxy verwendet wird, installierst.

Voraussetzungen

Bevor du mit dieser Anleitung beginnst, solltest du folgende Voraussetzungen erfüllen:

  • Einen Ubuntu-Server 22.04 mit aktivierter UFW-Firewall.
  • Einen Nicht-Root-Benutzer mit sudo/administrator-Rechten.
  • Einen Domainnamen, der auf die IP-Adresse des Ubuntu-Servers zeigt.

Installation von Java OpenJDK

Der erste Schritt besteht darin, das Java OpenJDK auf deinem Ubuntu-System zu installieren. Für den SonarQube-Server muss Java OpenJDK v11 auf deinem Linux-Rechner installiert sein.

Bevor du mit der Installation der Pakete beginnst, führe den folgenden apt-Befehl aus, um dein Ubuntu-Paketindex-Repository zu aktualisieren und aufzufrischen.

sudo apt update

Anschließend installierst du Java OpenJDK v11 mit dem folgenden apt-Befehl. Die Standard-OpenJDK-Version auf dem neuesten Ubuntu 22.04 ist Java OpenJDK v11.

Gib Y ein, wenn du aufgefordert wirst, die Installation zu bestätigen und drücke ENTER, um fortzufahren.

sudo apt install default-jdk

java installieren

Sobald Java OpenJDK installiert ist, überprüfe die Java-Version mit dem folgenden java-Befehl. Du siehst dann die Ausgabe der Java-Version, die auf deinem System installiert ist.

java -version

check java

Installation des PostgreSQL-Datenbanksystems

SonarQube unterstützt mehrere Datenbanksysteme wie PostgreSQL, Microsoft SQL Server und die Oracle-Datenbank. In diesem Beispiel wirst du PostgreSQL als Datenbank für deine SonarQube-Installation verwenden.

Zum Zeitpunkt der Erstellung dieser Anleitung benötigte die neueste Version von SonarQube mindestens PostgreSQL v9.6. In dieser Anleitung wirst du PostgreSQL v13 aus dem offiziellen PostgreSQL-Repository installieren.

Füge zunächst den GPG-Schlüssel des PostgreSQL-Repositorys mit dem folgenden Befehl hinzu.

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Füge dann das PostgreSQL-Repository für dein Ubuntu-System mit dem folgenden Befehl hinzu.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

Aktualisiere dann deinen Ubuntu-Paketindex.

sudo apt update

Postgresql-Repository hinzufügen

Installiere nun die PostgreSQL-Datenbank v13 mit dem unten stehenden apt-Befehl. Gib Y ein, wenn du aufgefordert wirst, die Installation zu bestätigen, und drücke dann ENTER, um fortzufahren.

sudo apt install postgresql-13

install postgresql

Sobald PostgreSQL installiert ist, führe den folgenden Befehl aus, um den Dienst „postgresql“ zu überprüfen und sicherzustellen, dass der Dienst läuft.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Du wirst sehen, dass der„postgresql„-Dienst aktiviert ist, d.h. er wird beim Systemstart automatisch ausgeführt. Und der aktuelle Status des „postgresql“-Dienstes ist „running“.

postgresql prüfen

Wenn PostgreSQL auf deinem Server installiert ist, kannst du über die PostgreSQL-Shell eine neue Datenbank und einen neuen Benutzer für den SonarQube einrichten.

Führe den folgenden Befehl aus, um dich an der PostgreSQL-Shell anzumelden.

sudo -u postgres psql

Führe nun die folgenden PostgreSQL-Abfragen aus, um eine neue Datenbank und einen neuen Benutzer für SnonarQube zu erstellen. In diesem Beispiel wirst du die PostgreSQL-Datenbank und den Benutzer„sonarqube“ erstellen. Achte darauf, dass du das Passwort mit einem starken Passwort änderst.

CREATE USER sonarqube WITH PASSWORD 'Password';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

Datenbank erstellen

Als nächstes führst du die folgenden Abfragen aus, um die Liste der Datenbanken und Benutzer auf dem PostgreSQL-Server zu überprüfen.

\l
\du

Wenn deine Datenbank und dein Benutzer angelegt sind, siehst du die Datenbank „sonarqube“ in der Liste der Datenbanken und den Benutzer „sonarqube“ in der Liste der Benutzer.

Datenbank und Benutzer prüfen

Melde dich schließlich mit der unten stehenden Abfrage von PostgreSQL ab.

\q

System einrichten

Um SonarQube auf einem Linux-System zu installieren, brauchst du einen eigenen Benutzer, unter dem SonarQube läuft, und einige zusätzliche Konfigurationen wie ulimit und Kernel-Parameter.

Jetzt wirst du einen neuen Benutzer für SonarQube anlegen, benutzerdefinierte Kernelparameter über die Datei sysctl.conf einrichten und ulimit einrichten.

Führe den folgenden Befehl aus, um einen neuen Benutzer„sonarqube“ auf deinem System anzulegen.

sudo useradd -b /opt/sonarqube -s /bin/bash sonarqube

Öffne dann die Datei /etc/sysctl.conf mit dem Editor nano.

sudo nano /etc/sysctl.conf

Füge die folgende Konfiguration am Ende der Zeile ein. Für den SonarQube muss der Kernel-Parameter vm.max_map_count größer als‚524288‚ und der fx.file-max größer als‚131072‚ sein.

vm.max_map_count=524288
fs.file-max=131072

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe nun den folgenden sysctl-Befehl aus, um die neuen Änderungen in der Datei „/etc/sysctl.conf“ zu übernehmen.

sudo sysctl --system

In der folgenden Ausgabe kannst du sehen, dass die neuen Kernel-Parameter angewendet wurden.

sysctl anwenden

Next, run the following command to set up ulimit for the SonarQube. This will take temporary effects on your system, when the system is rebooted, the ulimits will revert to default.
ulimit -n 131072
ulimit -u 8192

Um die ulimit-Konfiguration dauerhaft zu machen, erstelle eine neue Konfigurationsdatei„/etc/security/limits.d/99-sonarqube.conf“ mit dem folgenden Befehl.

sudo nano /etc/security/limits.d/99-sonarqube.conf

Füge die folgende Konfiguration in die Datei ein.

sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

Speichere die Datei und schließe den Editor, wenn du fertig bist.

Jetzt hast du die Konfiguration deines Ubuntu-Systems für die Installation von SnonarQube abgeschlossen. Im nächsten Schritt wirst du das SonarQube-Paket herunterladen und die SonarQube-Installation einrichten.

Herunterladen des SonarQube-Pakets

Der SonarQube kann auf zwei verschiedene Arten installiert werden: als Zip-Datei oder als Docker-Image. In diesem Beispiel wirst du den SonarQube über das Zip-Paket installieren, das du von der offiziellen SonarQube-Downloadseite herunterlädst.

Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von SonarQube v9.6.1, die du in den folgenden Schritten installieren wirst.

Bevor du das SonarQube-Paket herunterlädst, führe den folgenden apt-Befehl aus, um ein Basispaket wie unzip und wget zu installieren.

sudo apt install unzip software-properties-common wget

Lade nun das SonarQube-Paket mit dem unten stehenden wget-Befehl herunter.

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

Nachdem der SonarQube heruntergeladen wurde, siehst du die Zip-Datei„sonarqube-9.6.1.59531.zip“ in deinem Arbeitsverzeichnis.

Entpacke das SonarQube-Paket mit dem unten stehenden unzip-Befehl. Du solltest ein neues Verzeichnis’sonarqube-9.6.1.59531‚ erhalten, in dem das SonarQube-Paket gespeichert ist.

unzip sonarqube-9.6.1.59531.zip

Verschiebe das Verzeichnis„sonarqube-9.6.1.59531“ mit dem unten stehenden Befehl in das Verzeichnis„/opt/sonarqube„.

mv sonarqube-9.6.1.59531 /opt/sonarqube

Zuletzt änderst du die Besitzrechte am SonarQube-Installationsverzeichnis „/opt/sonarqube“ mit dem Befehl chown auf den Benutzer „sonarquba“ (siehe unten).

sudo chown -R sonarqube:sonarqube /opt/sonarqube

Jetzt hast du das SonarQube-Paket in das Installationsverzeichnis„/opt/sonarqube“ heruntergeladen. Als Nächstes wirst du deine SonarQube-Installation konfigurieren und eine systemd-Dienstdatei für SonarQube einrichten.

sonarqube herunterladen

SonarQube konfigurieren

Nachdem du das SonarQube-Paket heruntergeladen hast, richtest du die SonarQUbe-Installation ein, indem du die Standard-Konfigurationsdatei „/opt/sonarqube/conf/sonar.properties“ bearbeitest.

In der Datei „/opt/sonarqube/conf/sonar.properties“ fügst du die Details der PostgreSQL-Datenbank hinzu, legst den maximalen Speicherheap für den Elasticsearch-Prozess fest und richtest den Webhost und den Port für den SonarQube-Dienst ein. Und schließlich richtest du SonarQube als systemd-Dienst ein.

Öffne nun die SonarQube-Konfigurationsdatei „/opt/sonarqube/conf/sonar.properties“ mit dem Editor nano.

nano /opt/sonarqube/conf/sonar.properties

Entferne bei der Datenbankkonfiguration die Kommentare zu einigen der folgenden Optionen und ändere den Standardwert anhand deiner Datenbankdaten.

sonar.jdbc.username=sonarqube
sonar.jdbc.password=Password

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

Entkommentiere die folgende Konfiguration, um die maximale Heap-Speichergröße für den Elasticsearch-Prozess festzulegen. In diesem Beispiel beträgt die maximale Heap-Größe 512 MB.

sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Entferne die Kommentare und ändere die folgenden Konfigurationen, um die IP-Adresse und den Port des SonarQube-Prozesses einzustellen. Außerdem wird der Log-Level auf „INFO“ gesetzt und im Verzeichnis „logs“ des SonarQube-Installationsverzeichnisses gespeichert.

sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server

sonar.log.level=INFO
sonar.path.logs=logs

Speichere die Datei und beende den Editor, wenn du fertig bist.

Nachdem du die SonarQube-Konfiguration abgeschlossen hast. Jetzt richtest du die systemd-Dienstdatei für SonarQube ein. Damit kannst du den SonarQube-Prozess ganz einfach mit dem Befehl systemctl steuern.

Führe den folgenden Befehl aus, um eine neue systemd-Dienstdatei„/etc/systemd/system/sonarqube.service“ zu erstellen.

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

Füge die folgende Konfiguration in die Datei ein.

[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=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

Speichere die Datei und beende den Editor, wenn du fertig bist.

Jetzt lädst du den systemd Manager mit dem folgenden Befehl neu.

sudo systemctl daemon-reload

Danach starte und aktiviere den „sonarqube.service“ mit dem folgenden systemctl-Befehl.

sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service

Sonarqube-Dienst einrichten

Überprüfe abschließend den Status von „sonarqube.service“ mit dem folgenden Befehl und stelle sicher, dass er läuft.

sudo systemctl status sonarqube.service

Die Ausgabe siehst du im folgenden Screenshot. Der „sonarqube.service“-Status läuft und ist außerdem aktiviert, d.h. er wird beim Systemstart automatisch ausgeführt.

sonarqube Service prüfen

Jetzt, wo der SonarQube als systemd-Dienst läuft, installierst du einen Reverse-Proxy für den SonarQube, der auf localhost mit dem Standard-TCP-Port„9000“ läuft, und richtest ihn ein.

SonarQube mit Reverse Proxy betreiben

Deine SonarQube-Installation läuft jetzt. Du kannst nun den Nginx-Webserver installieren und Serverblöcke einrichten, die als Reverse-Proxy für SonarQube verwendet werden.

Führe den folgenden apt-Befehl aus, um den Nginx-Webserver auf deinem Ubuntu-System zu installieren. Gib Y ein, wenn du aufgefordert wirst, die Installation zu bestätigen und drücke ENTER, um fortzufahren.

sudo apt install nginx

nginx installieren

Sobald nginx installiert ist, überprüfe den nginx-Dienst und stelle sicher, dass der Dienststatus über den systemctl-Befehl wie unten angegeben läuft.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Du wirst sehen, dass der nginx-Dienst aktiviert ist, d.h. er wird beim Systemstart automatisch ausgeführt. Und der aktuelle Status des nginx-Dienstes ist running.

nginx prüfen

Nachdem du den Nginx-Webserver zum Laufen gebracht hast, erstellst du eine neue Serverblockkonfiguration, die als Reverse Proxy für SonarQube verwendet werden soll.

Erstelle eine neue Serverblock-Konfiguration „/etc/nginx/sites-available/sonarqube.conf“ mit dem folgenden Befehl.

sudo nano /etc/nginx/sites-available/sonarqube.conf

Füge die folgende Konfiguration zu deiner Datei hinzu und achte darauf, dass du den Domainnamen änderst.

server {
listen 80;
server_name sonar.hwdomain.io;
access_log /var/log/nginx/sonar.access.log;
error_log /var/log/nginx/sonar.error.log;
proxy_buffers 16 64k;
proxy_buffer_size 128k;

location / {
proxy_pass http://127.0.0.1:9000;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}

Speichere die Datei und beende den Editor, wenn du fertig bist.

Als Nächstes aktivierst du die Serverblockkonfiguration „sonarqube.conf“, indem du einen Symlink von dieser Datei in das Verzeichnis„/etc/nginx/sites-enabled“ erstellst. Überprüfe dann deine Nginx-Konfigurationsdateien.

sudo ln -s /etc/nginx/sites-available/sonarqube.conf /etc/nginx/sites-enabled/
sudo nginx -t

Wenn deine Nginx-Konfigurationsdateien korrekt sind, solltest du eine Meldung wie„test is successfull“ sehen.

Zum Schluss führst du den folgenden systemctl-Befehl aus, um den Nginx-Dienst neu zu starten und die neue Serverblockkonfiguration anzuwenden.

sudo systemctl restart nginx

SonarQube Installatioon

Nachdem du die Reverse-Proxy-Konfiguration für SonarQube abgeschlossen hast, kannst du nun über deine Domain auf deine SonarQube-Installation zugreifen und einige grundlegende Einstellungen für SonarQube vornehmen.

Öffne deinen Webbrowser und rufe den Domainnamen deiner SonarQube-Installation auf (z.B.: http://sonar.hwdomain.io).

Nun wird die SonarQube-Anmeldeseite angezeigt. Gib den Standardbenutzernamen und das Passwort admin/admin ein und klicke auf Anmelden.

sonarqube Anmeldung

Sobald du dich eingeloggt hast, wirst du aufgefordert, ein neues Passwort für SnonarQube einzurichten. Gib das alte Passwort admin ein, dann das neue sichere Passwort, wiederhole es und klicke dann auf Aktualisieren.

Passwort ändern

Jetzt wird dir das SonarQube-Benutzer-Dashboard im folgenden Screenshot angezeigt.

sonarqube Dashboard

Fazit

In dieser Anleitung hast du SonarQube auf dem neuesten Ubuntu 22.04 Server installiert. Außerdem hast du die Grundinstallation der PostgreSQL-Datenbank über das offizielle PostgreSQL-Repository abgeschlossen und den Nginx-Webserver installiert. Danach hast du auch den Reverse Proxy für den SOnarQube mit Nginx-Serverblöcken konfiguriert.

SonarQube ist nun auf deinem Ubuntu-Server installiert. Du kannst nun das Projekt, das du analysieren willst, über das Git-Repository zum SonarQube hinzufügen.

Das könnte dich auch interessieren …