GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie SonarQube mit Lets Encrypt unter Ubuntu 20.04

Es ist der Traum eines jeden Entwicklers, über sauberen und fehlerfreien Code zu verfügen, der problemlos in Staging- und Produktionsumgebungen bereitgestellt werden kann. Ein Tool, das Ihnen dabei helfen kann, befindet sich in Ihrer CI/CD-Pipeline und ist SonarQube. SonarQube ist ein plattformübergreifendes und webbasiertes Tool zur kontinuierlichen Überprüfung des Quellcodes. Es ist in Java geschrieben. Mit SonarQube können Sie saubereren und sichereren Code schreiben, indem Sie den Code untersuchen und Fehler und andere Inkonsistenzen erkennen.

SonarQube kann in Plattformen wie GitHub, Gitlab, BitBucket und Azure DevOps integriert werden, um nur einige Plattformen zu nennen. Es ist in verschiedenen Editionen erhältlich, darunter Community-, Developer-, Enterprise- und Datacenter-Editionen.

In diesem Tutorial lernen wir, wie man SonarQube installiert auf Ubuntu 20.04 . Wir werden die Community Edition installieren, da das SSL-Zertifikat kostenlos heruntergeladen und aktiviert werden kann (https) mit Let's Encrypt indem Sie Nginx als Reverse-Proxy festlegen.

Voraussetzungen

Stellen Sie vor Beginn sicher, dass Sie die folgenden Anforderungen erfüllen:

  1. Ubuntu 20.04 LTS mit konfiguriertem sudo-Benutzer.
  2. Stellen Sie sicher, dass Ihr System über mindestens 4 GB RAM und 2 vCPU-Kerne verfügt

Sie müssen einige Tools installieren

$ sudo apt update
$ sudo apt install net-tools unzip vim curl

Außerdem müssen Sie den Kernel des virtuellen Speichers erhöhen

$ sudo sysctl -w vm.max_map_count=262144

mit der maximalen Anzahl geöffneter Dateien

$ sudo sysctl -w fs.file-max=65536

und die Ressourcengrenzen

$ ulimit -n 65536
$ ulimit -u 4096

Sie können die Änderungen dauerhaft machen, indem Sie die Systemparameter in /etc/sysctl.conf Konfigurationsdatei

$ sudo vim /etc/sysctl.conf

Fügen Sie die folgenden Zeilen hinzu.

vm.max_map_count=262144
fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

Speichern und schließen. Öffnen Sie danach die limits.conf Datei

$ sudo vim /etc/security/limits.conf

Fügen Sie ganz unten die folgenden Zeilen hinzu

sonarqube - nofile 65536
sonarqube - nproc 4096

Speichern und schließen. Starten Sie Ihren Server neu, damit die Änderungen wirksam werden.

Schritt 1:OpenJDK installieren

Da es in Java geschrieben ist, hängt SonarQube von Java ab, um zu funktionieren. Wir werden OpenJDK 11 installieren, das Java bereitstellt.

$ sudo apt install openjdk-11-jdk

Nach der Installation können Sie die Version von Java überprüfen.

$ java -version

Schritt 2:PostgreSQL-Datenbank installieren

Ab 2016 hat SonarQube die Unterstützung für MySQL eingestellt und unterstützt jetzt nur noch PostgreSQL. Daher müssen wir die PostgreSQL-Datenbank installieren.

Laden Sie zunächst den PostgreSQL-GPG-Schlüssel herunter und fügen Sie ihn hinzu.

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

Fügen Sie danach das PostgreSQL-Repository 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'

Aktualisieren Sie dann den Paketindex, um das neue Repository zu synchronisieren.

$ sudo apt update

Nachdem Sie die Paketlisten aktualisiert haben, installieren Sie die PostgreSQL-Datenbank und ihre Abhängigkeiten.

$ sudo apt install postgresql postgresql-contrib

Standardmäßig wird der PostgreSQL-Dienst nach der Installation gestartet. Wenn er nicht gestartet wurde, führen Sie den folgenden Befehl aus.

$ sudo systemctl start postgresql

Nur um zu bestätigen, dass alles wie erwartet läuft, überprüfen Sie den Ausführungsstatus.

$ sudo systemctl status postgresql

Sie können auch den Port bestätigen, auf dem es lauscht:

$ sudo netstat -pnltu | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      7768/postgres       
tcp6       0      0 ::1:5432                :::*                    LISTEN      7768/postgres    

PostgreSQL so aktivieren, dass es beim Booten automatisch startet:

$ sudo systemctl enable postgresql

Bisher läuft unser PostgreSQL ohne Probleme.

Schritt 3:PostgreSQL konfigurieren

Als nächstes werden wir das Passwort für den Postgres-Benutzer festlegen, das normalerweise standardmäßig mitgeliefert wird, wenn PostgreSQL installiert wird. Führen Sie dazu den folgenden Befehl aus:

$ sudo passwd postgres

Geben Sie das Passwort ein und bestätigen Sie es. Wechseln Sie als Nächstes zum Postgres-Benutzer.

$ su - postgres

Fahren Sie als Nächstes fort und erstellen Sie einen neuen Datenbankbenutzer.

$ createuser sonar

Wechseln Sie anschließend mit dem folgenden Befehl zur PostgreSQL-Eingabeaufforderung:

$ psql

Erstellen Sie mit Zugriff auf die PostgreSQL-Shell ein Passwort für den gerade erstellten Benutzer.

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

Erstellen Sie als Nächstes eine SonarQube-Datenbank mit dem von Ihnen erstellten Benutzer als Eigentümer

CREATE DATABASE sonarqube OWNER sonar;

Weisen Sie dann dem Datenbankbenutzer alle Berechtigungen zu oder erteilen Sie ihm alle Berechtigungen, sodass er alle Berechtigungen zum Ändern der Datenbank hat.

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Verlassen Sie nun die Datenbank.

\q

Schritt 4:SonarQube herunterladen und konfigurieren

Als nächstes werden wir die neueste Binär-Zip-Datei von SonarQube herunterladen. Im Moment ist SonarQube Version 9.0.1 die neueste Community Edition-Version, die eine LTS-Version (Long Term Service) ist. Die neuesten Downloads finden Sie auf der Download-Seite von SonarQube.

Um die ZIP-Datei herunterzuladen, geben Sie den folgenden Befehl ein:

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

Als nächstes entpacken Sie die gezippte Datei.

$ unzip sonarqube-9.0.1.46107.zip

Und verschieben Sie es in den Pfad /opt/.

$ sudo mv sonarqube-9.0.1.46107 /opt/sonarqube

Schritt 5:Neuen Benutzer und neue Gruppe erstellen

Als nächstes erstellen wir einen neuen Benutzer und eine neue Gruppe, die den SonarQube-Dienst ausführen. Erstellen Sie also die Gruppe.

$ sudo groupadd sonar

Erstellen Sie als Nächstes den Benutzer mit dem Home-Verzeichnis auf /opt/sonarqube, während Sie den Benutzer der neu erstellten Gruppe hinzufügen.

$ sudo useradd -c "SonarQube - User" -d /opt/sonarqube/ -g sonar sonar

Setzen Sie dann den Besitz auf das Verzeichnis /opt/sonarqube.

$ sudo chown -R sonar:sonar /opt/sonarqube/

Schritt 6:SonarQube konfigurieren

Lassen Sie uns nun SonarQube konfigurieren. Öffnen Sie die SonarQube-Konfigurationsdatei.

$ sudo vim  /opt/sonarqube/conf/sonar.properties

Suchen Sie die folgenden Zeilen und kommentieren Sie sie aus

sonar.jdbc.username=
sonar.jdbc.password=

Diese stellen den Benutzer und das Passwort der SonarQube-Datenbank dar, die wir auf dem PostgreSQL-Datenbankserver erstellt haben. Tragen Sie daher die Werte entsprechend ein.

sonar.jdbc.username=sonar_user
sonar.jdbc.password=strong_password

Ändern Sie als Nächstes diese Zeilen so, dass sie wie bereitgestellt aussehen

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Ändern Sie danach die folgenden Zeilen so, dass sie so erscheinen, wie sie aussehen.

sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server
sonar.log.level=INFO
sonar.path.logs=logs

Ändern Sie als Nächstes den Benutzer, der den SonarQube-Dienst ausführen soll, indem Sie die angezeigte Datei bearbeiten.

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

Scrollen Sie nach unten und vergewissern Sie sich, dass die folgende Zeile wie abgebildet angezeigt wird.

RUN_AS_USER=sonar

Schritt 7:Erstellen Sie eine Systemd-Dienstdatei für SonarQube

Im Moment hat unser System keine Möglichkeit, den SonarQube-Dienst zu starten. Daher müssen wir einen systemd-Dienst erstellen. Führen Sie dazu den folgenden Befehl aus:

$ sudo vim  /etc/systemd/system/sonarqube.service

Fügen Sie 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
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

Speichern Sie die Änderungen und verlassen Sie die Datei.

Aktivieren Sie den SonarQube-Dienst, um beim Booten zu starten

$ sudo systemctl enable sonarqube

Und starten Sie den SonarQube-Dienst.

$ sudo systemctl start sonarqube

Um sicherzustellen, dass der SonarQube-Dienst ausgeführt wird, führen Sie den folgenden Befehl aus:

$ sudo systemctl status sonarqube

Stellen Sie außerdem sicher, dass Port 9000 geöffnet ist

$ sudo ufw allow '9000'
Rules updated
Rules updated (v6)

Überprüfen Sie, ob der Dienst auf Port 9000 lauscht

$ sudo netstat -pnltu | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      65140/java  

Jetzt können Sie versuchen zu überprüfen, ob Sie auf die Anmeldeseite zugreifen können, indem Sie die öffentliche IP Ihres Servers und die Portnummer Ihres Browsers eingeben, dh http://<server-ip>:9000/ . Der standardmäßige Benutzername des Administrators ist „admin“ und das Passwort ist „admin“.

Sonarqube wird Sie auffordern, das Passwort zu aktualisieren, um das Standardpasswort zu ändern.

Schritt 8:Installieren und konfigurieren Sie Nginx mit SSL (optional)

Um mit einem SSL-fähigen Domainnamen auf Ihren Sonarqube zuzugreifen, müssen Sie einen Reverse-Proxy wie Nginx installieren. Der Webserver stellt Proxy-Verbindungen zu SonarQube her, sodass Entwickler von einem gesicherten Domänennamen aus darauf zugreifen können.

Die Installation von Nginx ist einfach und unkompliziert und kann mit einem einzigen Befehl durchgeführt werden.

$ sudo apt install nginx

Aktivieren Sie nach der Installation den Nginx-Webserver so, dass er beim Booten startet.

$ sudo systemctl enable nginx

Und starten Sie den Dienst

$ sudo systemctl start nginx

Damit der Webserver SonarQube erkennt, erstellen wir eine Konfigurationsdatei gezeigt.

$ sudo vim  /etc/nginx/sites-available/sonarqube.conf

Fügen Sie dann den bereitgestellten Inhalt ein.

server {

listen 80;
server_name example.com or SERVER-IP;
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;
}
}

Speichern und schließen. Aktivieren Sie dann die Sonarqube-Site:

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

Überprüfen Sie, ob die Konfiguration korrekt ist

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie dann den Nginx-Webserver neu, damit die Änderungen übernommen werden.

$ sudo systemctl restart nginx

Jetzt müssen wir die UFW-Firewall konfigurieren, um nginx zuzulassen. Führen Sie dazu die Befehle

aus
$ sudo ufw allow 'Nginx Full'

Laden Sie dann die Firewall neu, um die Änderungen zu übernehmen.

$ sudo ufw --reload

Sie können jetzt über seinen Domainnamen auf Ihren SonarQube zugreifen

Hier verwenden wir das kostenlose let's encrypt-Zertifikat. Um das zu konfigurieren, müssen wir cerbot für Nginx ausführen:

$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Enter email address (used for urgent renewal and security notices) (Enter 'c' to
 cancel): [email protected]                                                    
 
 Please read the Terms of Service at
 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
 agree in order to register with the ACME server at
 https://acme-v02.api.letsencrypt.org/directory
 
 (A)gree/(C)ancel: A
 
 Would you be willing to share your email address with the Electronic Frontier
 Foundation, a founding partner of the Let's Encrypt project and the non-profit
 organization that develops Certbot? We'd like to send you email about our work
 encrypting the web, EFF news, campaigns, and ways to support digital freedom.
 
 (Y)es/(N)o: N
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Which names would you like to activate HTTPS for?
 
 1: websitefortesting.com
 
 Select the appropriate numbers separated by commas and/or spaces, or leave input
 blank to select all options shown (Enter 'c' to cancel): 1
 Obtaining a new certificate
 Performing the following challenges:
 http-01 challenge for websitefortesting.com
 Waiting for verification…
 Cleaning up challenges
 Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/sonarqube.conf
 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
 Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/sonarqube.conf
 
 Congratulations! You have successfully enabled https://websitefortesting.com
 You should test your configuration at:
 https://www.ssllabs.com/ssltest/analyze.html?d=websitefortesting.com
 
 IMPORTANT NOTES:
 Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/websitefortesting.com/fullchain.pem
 Your key file has been saved at:
 /etc/letsencrypt/live/websitefortesting.com/privkey.pem
 Your cert will expire on 2021-11-27. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot again
 with the "certonly" option. To non-interactively renew all of
 your certificates, run "certbot renew"
 If you like Certbot, please consider supporting our work by:
 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le 

Standardmäßig fügt let's encrypt einige Zeilen in die Blockdatei des Nginx-Servers ein.

Sie sollten so etwas haben

server {
         server_name websitefortesting.com;
         add_header Strict-Transport-Security max-age=2592000;
         #rewrite ^ https://$server_name$request_uri? permanent;
         access_log  /var/log/nginx/sonarqube.access.log;
         error_log   /var/log/nginx/sonarqube.error.log;
     proxy_buffers 16 64k;     
           proxy_buffer_size 128k;     

           location / {
             proxy_pass http://127.0.0.1:9000;            
             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;     
           } 
          listen 443 ssl; # managed by Certbot 
          ssl_certificate /etc/letsencrypt/live/websitefortesting.com/fullchain.pem; # managed by Certbot 
           ssl_certificate_key /etc/letsencrypt/live/websitefortesting.com/privkey.pem; # managed by Certbot 
          include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 
          ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
 }
 server {
     if ($host = websitefortesting.com) {
         return 301 https://$host$request_uri;
     } # managed by Certbot
     
            listen 80;     
            server_name websitefortesting.com; return 404; # managed by Certbot

 }

Schritt 10:Zugriff auf SonarQube mit HTTPS

Jetzt können Sie mit einer HTTPS-URL, die mit let's encrypt konfiguriert wurde, sicher auf SonarQube zugreifen.

https://domain-name

Nach dem Login wird Ihnen die Zielseite angezeigt.

Schlussfolgerung

In diesem Tutorial haben wir gelernt, wie SonarQube unter Ubuntu 20.04 installiert wird. Wir haben Sonarqube mit SSL unter Verwendung des Let's Encrypt-Zertifikats mit Nginx als Reverse-Proxy aktiviert.


Ubuntu
  1. So installieren Sie einen FTP-Server unter Ubuntu mit vsftpd

  2. So sichern Sie Nginx mit Lets Encrypt auf Ubuntu 20.04 / 18.04

  3. So installieren Sie Joomla mit Apache unter Ubuntu 18.04

  4. So installieren Sie Nextcloud mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04 LTS

  5. So installieren Sie Let’s Encrypt auf Ubuntu 20.04 mit Apache

So installieren Sie NextCloud auf Ubuntu 20.04 mit Apache

So installieren Sie WordPress mit Nginx auf Ubuntu

So installieren Sie Lighttpd mit PHP in Ubuntu 20.04

So installieren Sie SonarQube unter Ubuntu 20.04 LTS

So installieren Sie Nginx mit Let’s Encrypt SSL unter Ubuntu 20.04 LTS

So installieren Sie Apache mit Let’s Encrypt SSL unter Ubuntu 20.04 LTS