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:
Klicken Sie hier auf die Schaltfläche Anmelden. Du solltest die folgende Seite sehen:
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:
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.