LINUX

Come installare SonarQube con Let’s Encrypt su Ubuntu 20.04

È il sogno di ogni sviluppatore avere un codice pulito e senza problemi che possa essere facilmente distribuito in ambienti di staging e produzione. Uno strumento che può aiutarti a raggiungere questo obiettivo è nella pipeline CI/CD SonarQube. SonarQube è uno strumento multipiattaforma e basato sul Web utilizzato per l’ispezione continua del codice sorgente. È scritto in Java. SonarQube ti consente di scrivere codice più pulito e sicuro ispezionando il tuo codice e rilevando errori e altre incoerenze.

SonarQube può essere integrato in piattaforme come GitHub, Gitlab, BitBucket e Azure DevOps per citarne alcune. È disponibile in varie edizioni, tra cui le edizioni Community, Developer, Enterprise e Datacenter.

In questo tutorial, impariamo come installare SonarQube Su Ubuntu 20.04. Installeremo l’edizione community in quanto è gratuita da scaricare e attivare Certificato SSL (https) con Crittografiamo impostando Nginx come proxy inverso.

Prerequisiti

Prima di iniziare, assicurati di soddisfare i seguenti requisiti:

  1. Ubuntu 20.04 LTS con un utente sudo configurato.
  2. Assicurati che il tuo sistema abbia almeno 4 GB di RAM e 2 core vCPU

Dovrai installare alcuni strumenti

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

È inoltre necessario aumentare il core della memoria virtuale

$ sudo sysctl -w vm.max_map_count=262144

con il numero massimo di file aperti

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

e limiti di risorse

$ ulimit -n 65536
$ ulimit -u 4096

È possibile rendere persistenti le modifiche modificando i parametri di sistema da /etc/sysctl.conf File di configurazione

$ sudo vim /etc/sysctl.conf

Aggiungi le seguenti righe.

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

Salva ed esci. Dopodiché, aprilo limits.conf file

$ sudo vim /etc/security/limits.conf

In fondo, aggiungi le seguenti righe

sonarqube - nofile 65536
sonarqube - nproc 4096

Salva ed esci. Per rendere effettive le modifiche, riavviare il server.

Passaggio 1: installa OpenJDK

Poiché è scritto in Java, SonarQube dipende da Java per funzionare. Installeremo OpenJDK 11 che fornisce java.

$ sudo apt install openjdk-11-jdk

Una volta installato, puoi controllare la tua versione di Java.

$ java -version

Passaggio 2: installare il database PostgreSQL

A partire dal 2016, SonarQube ha abbandonato il supporto per MySQL e ora supporta solo PostgreSQL. Pertanto, dobbiamo installare il database PostgreSQL.

Per iniziare, scarica e aggiungi la chiave GPG PostgreSQL.

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

Successivamente, aggiungi il repository PostgreSQL.

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

Quindi aggiorna l’indice del pacchetto per sincronizzare il nuovo repository.

$ sudo apt update

Dopo aver terminato l’aggiornamento degli elenchi dei pacchetti, installa il database PostgreSQL e le sue dipendenze.

$ sudo apt install postgresql postgresql-contrib

Per impostazione predefinita, il servizio PostgreSQL viene avviato dopo l’installazione, se non è avviato, eseguire il seguente comando.

$ sudo systemctl start postgresql

Solo per confermare che tutto funzioni come previsto, controlla lo stato di integrità.

$ sudo systemctl status postgresql

Puoi anche confermare la porta su cui è in ascolto:

$ 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    

Abilita PostgreSQL per l’avvio automatico all’avvio:

$ sudo systemctl enable postgresql

Finora il nostro PostgreSQL funziona senza problemi.

Passaggio 3: configurare PostgreSQL

Andando avanti, imposteremo la password per l’utente Postgres, che di solito viene fornita di default quando PostgreSQL è installato. Per fare ciò, esegui il comando:

$ sudo passwd postgres

Inserisci la tua password e confermala. Successivamente, passa all’utente Postgres.

$ su - postgres

Quindi vai avanti e crea un nuovo utente del database.

$ createuser sonar

Una volta fatto, passa al prompt di PostgreSQL usando il comando:

$ psql

Con l’accesso alla shell PostgreSQL, crea una password per l’utente appena creato.

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

Successivamente, crea un database SonarQube con l’utente che hai creato come proprietario

CREATE DATABASE sonarqube OWNER sonar;

Successivamente, assegna o concedi tutti i privilegi all’utilizzo del database in modo che disponga di tutti i privilegi per modificare il database.

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Ora esci dal database.

q

Passaggio 4: scarica e configura SonarQube

Andando avanti, scaricheremo l’ultimo file zip binario di SonarQube. Al momento, l’ultima versione Community Edition, che è una versione Long Term Service (LTS), è SonarQube versione 9.0.1. Puoi andare a Pagina di download di SonarQube per gli ultimi download.

Per scaricare il file zip, eseguire il comando:

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

Successivamente, decomprimi il file archiviato.

$ unzip sonarqube-9.0.1.46107.zip

E spostalo in /opt/ path.

$ sudo mv sonarqube-9.0.1.46107 /opt/sonarqube

Passaggio 5: creare un nuovo utente e gruppo

Andando avanti, creeremo un nuovo utente e gruppo che eseguirà il servizio SonarQube. Quindi, crea il gruppo.

$ sudo groupadd sonar

Quindi crea l’utente con la home directory impostata su /opt/sonarqube man mano che aggiungi l’utente al gruppo appena creato.

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

Quindi impostare la proprietà nella directory /opt/sonarqube.

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

Passaggio 6: configurare SonarQube

Ora configuriamo SonarQube. Apri il file di configurazione di SonarQube.

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

Individua e decommenta le seguenti righe

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

Questi sono l’utente e la password del database SonarQube che abbiamo creato nel server del database PostgreSQL. Quindi riempi i valori di conseguenza.

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

Quindi modificare queste righe in modo che assomiglino a ciò che viene fornito

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

Successivamente, modifica le seguenti righe in modo che appaiano come mostrato.

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

Successivamente, cambia l’utente che eseguirà il servizio SonarQube modificando il file mostrato.

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

Scorri verso il basso e assicurati che la riga sottostante appaia come mostrato.

RUN_AS_USER=sonar

Passaggio 7: creare un file di servizio Systemd per SonarQube

Attualmente, il nostro sistema non ha modo di avviare il servizio SonarQube. Pertanto, dobbiamo creare un servizio systemd. Per fare ciò, esegui il comando:

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

Aggiungi le seguenti righe.

[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

Salva le modifiche ed esci dal file.

Abilita l’avvio del servizio SonarQube all’avvio

$ sudo systemctl enable sonarqube

E avvia il servizio SonarQube.

$ sudo systemctl start sonarqube

Per assicurarti che il servizio SonarQube sia in esecuzione, esegui il comando:

$ sudo systemctl status sonarqube

Inoltre, assicurati che la porta 9000 sia aperta

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

Verificare che il servizio sia in ascolto sulla porta 9000

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

Ora puoi provare a verificare se puoi accedere alla pagina di accesso inserendo l’IP pubblico del tuo server e il numero di porta nel tuo browser, ad es http://<server-ip>:9000/. Il nome utente predefinito dell’amministratore è “admin” e la password è “admin”.

Pagina di accesso di SonarQube

Sonarqube ti chiederà di aggiornare la tua password per cambiare quella predefinita.

Cambiare la tua password SonarQube

Passaggio 8: installa e configura Nginx con SSL (facoltativo)

Per accedere al tuo Sonarqube con il tuo nome di dominio abilitato SSL, dovrai installare un proxy inverso come Nginx. Il server Web eseguirà il proxy per SonarQube in modo che gli sviluppatori possano accedervi da un nome di dominio sicuro.

L’installazione di Nginx è semplice e diretta e può essere eseguita con un singolo comando.

$ sudo apt install nginx

Dopo l’installazione, abilitare l’avvio del server Web Nginx all’avvio.

$ sudo systemctl enable nginx

E il servizio inizia

$ sudo systemctl start nginx

Per rendere il server web consapevole di SonarQube, creeremo un file di configurazione mostrato.

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

Quindi incolla il contenuto fornito.

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;
}
}

Salva ed esci. Quindi attiva il sito Sonarqube:

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

Verificare che la configurazione sia corretta

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

Quindi riavviare il server Web Nginx per rendere effettive le modifiche.

$ sudo systemctl restart nginx

Ora dobbiamo configurare il firewall UFW per consentire nginx. Per ottenere ciò, eseguire i comandi

$ sudo ufw allow 'Nginx Full'

Quindi ricaricare il firewall per apportare le modifiche.

$ sudo ufw --reload

Ora puoi accedere al tuo SonarQube tramite il suo nome di dominio

Qui, useremo gratuitamente crittografiamo il certificato. Per configurarlo, dobbiamo eseguire cerbot per Nginx:

$ 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): alain@websitefortesting.com                                                    
 
 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 

Per impostazione predefinita, Let’s Encrypt aggiungerà alcune righe al file di blocco del server Nginx.

Dovresti avere qualcosa del genere

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

 }

Passaggio 10: accedi a SonarQube con HTTPS

Ora puoi accedere a SonarQube in modo sicuro con l’URL HTTPS configurato con let’s encrypt.

https://domain-name
SonarQube con SSL abilitato

Dopo il login, verrà visualizzata la pagina di destinazione.

Conclusione

In questo tutorial, abbiamo imparato come installare SonarQube su Ubuntu 20.04. Ho abilitato Sonarqube con SSL utilizzando il certificato Let’s Encrypt utilizzando Nginx come proxy inverso.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close