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 zu dem Du das Passwort hast.
- 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
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
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
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
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“.
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;
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.
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.
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 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
Ü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.
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
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.
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.
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.
Jetzt wird dir das SonarQube-Benutzer-Dashboard im folgenden Screenshot angezeigt.
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.