Ricerca nel sito web

Come installare SonarQube su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 16.04 (Xenial Xerus)

Su questa pagina

  1. Prerequisiti
  2. Installazione di Java OpenJDK
  3. Installazione del sistema di database PostgreSQL
  4. Impostazione del sistema
  5. Download del pacchetto SonarQube
  6. Configurazione di SonarQube
  7. Esecuzione di SonarQube con proxy inverso
  8. Installazione di SonarQube
  9. Conclusione

SonarQube o precedentemente Sonar è una piattaforma open source per l'analisi statica del codice e la sicurezza del codice. Consente di eseguire l'analisi del codice statico e la qualità del codice per rilevare bug e migliorare la sicurezza dell'applicazione. Fornisce inoltre report come codice duplicato, standard di codifica, complessità del codice e consigli sulla sicurezza.

Con sonarQube, puoi automatizzare l'analisi del codice statico per 29 linguaggi di programmazione. Puoi facilmente integrare SonarQube con i tuoi strumenti CI/CD esistenti come Jenkins, Azure DevOps o IDE come IntelliJ e Visual Code Studio.

In questa guida imparerai come installare l'analisi del codice statico SonarQube sul server Ubuntu 22.04. Imparerai anche come installare PostgreSQL che verrà utilizzato come database per SonarQube e il server Web Nginx che verrà utilizzato come proxy inverso.

Prerequisiti

Prima di iniziare questa guida, dovresti avere quanto segue:

  • Un server Ubuntu 22.04 con firewall UFW abilitato.
  • Un utente non root con privilegi sudo/amministratore.
  • Un nome di dominio puntava all'indirizzo IP del server Ubuntu.

Installazione di Java OpenJDK

Il tuo primo passo qui è installare Java OpenJDK sul tuo sistema Ubuntu. Il server SonarQube richiedeva l'installazione di Java OpenJDK v11 sulla tua macchina Linux.

Prima di iniziare l'installazione dei pacchetti, eseguire il seguente comando apt per aggiornare e aggiornare il repository dell'indice dei pacchetti Ubuntu.

sudo apt update

Quindi, installa Java OpenJDK v11 utilizzando il seguente comando apt. La versione predefinita di OpenJDK sull'ultimo Ubuntu 22.04 è Java OpenJDK v11.

Immettere Y quando viene richiesto di confermare l'installazione e premere INVIO per procedere.

sudo apt install default-jdk

Una volta installato Java OpenJDK, verificare la versione Java utilizzando il seguente comando java. Vedrai l'output della versione Java installata sul tuo sistema.

java -version

Installazione del sistema di database PostgreSQL

SonarQube supporta più sistemi di database come PostgreSQL, Microsoft SQL Server e database Oracle. Per questo esempio, utilizzerai PostgreSQL come database per l'installazione di SonarQube.

Al momento della stesura di questo articolo, l'ultima versione di SonarQube richiedeva almeno PostgreSQL v9.6. In questa guida installerai PostgreSQL v13 dal repository PostgreSQL ufficiale.

Innanzitutto, aggiungi la chiave GPG del repository PostgreSQL usando il seguente comando.

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

Ora aggiungi il repository PostgreSQL per il sistema Ubuntu usando il comando seguente.

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 e aggiorna l'indice del tuo pacchetto Ubuntu.

sudo apt update

Ora, installa il database PostgreSQL v13 tramite il comando apt di seguito. Immettere Y quando viene richiesto di confermare l'installazione, quindi premere INVIO per procedere.

sudo apt install postgresql-13

Una volta installato PostgreSQL, eseguire il comando seguente per verificare il servizio postgresql e assicurarsi che sia in esecuzione.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Vedrai che l'output del servizio postgresql è abilitato, il che significa che verrà eseguito automaticamente all'avvio del sistema. E lo stato corrente del servizio postgresql è in esecuzione.

Con PostgreSQL installato sul tuo server, sei pronto per configurare un nuovo database e un nuovo utente per SonarQube tramite la shell PostgreSQL.

Esegui il seguente comando per accedere alla shell PostgreSQL.

sudo -u postgres psql

Ora esegui le seguenti query PostgreSQL per creare un nuovo database e un nuovo utente per SnonarQube. In questo esempio, creerai il database PostgreSQL e l'utente sonarqube. E assicurati di cambiare la password con una password complessa.

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

Successivamente, esegui le seguenti query per controllare l'elenco di database e utenti sul server PostgreSQL.

\l
\du

Se il database e l'utente sono stati creati, vedrai il database sonarqube nell'elenco dei database e l'utente sonarqube nell'elenco degli utenti.

Infine, disconnettiti da PostgreSQL utilizzando la query seguente.

\q

Configurazione del sistema

Per installare SonarQube su un sistema Linux, è necessario disporre di un utente dedicato che eseguirà SonarQube e alcune configurazioni aggiuntive come ulimit e parametri del kernel.

Ora creerai un nuovo utente per SonarQube e imposterai i parametri del kernel personalizzati tramite il file sysctl.conf e imposterai ulimit.

Esegui il seguente comando per creare un nuovo utente sonarqube sul tuo sistema.

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

Successivamente, apri il file /etc/sysctl.conf utilizzando nano editor.

sudo nano /etc/sysctl.conf

Aggiungi la seguente configurazione in fondo alla riga. Il SonarQube richiedeva che il parametro del kernel vm.max_map_count fosse maggiore di 524288 e fx.file-max fosse maggiore di 131072.

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

Salva il file ed esci dall'editor quando hai finito.

Ora, esegui il comando sysctl di seguito per applicare le nuove modifiche al file /etc/sysctl.conf.

sudo sysctl --system

Nell'output seguente, puoi vedere i nuovi parametri del kernel applicati.

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

Per rendere permanente la configurazione di ulimit, crea un nuovo file di configurazione /etc/security/limits.d/99-sonarqube.conf utilizzando il seguente comando.

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

Aggiungere la seguente configurazione al file.

sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

Salva il file e chiudi l'editor quando hai finito.

Ora che hai completato la configurazione del tuo sistema Ubuntu per l'installazione di SnonarQube. Nel passaggio successivo scaricherai il pacchetto SonarQube e configurerai l'installazione di SonarQube.

Download del pacchetto SonarQube

SonarQube può essere installato in due modi diversi, tramite file zip e immagine Docker. In questo esempio, installerai SonarQube tramite il pacchetto di file zip che scaricherai dalla pagina di download ufficiale di SonarQube.

Al momento della stesura di questo documento, l'ultima versione v9.6.1 di SonarQube, che installerai nei seguenti passaggi.

Prima di scaricare il pacchetto SonarQube, esegui il seguente comando apt per installare un pacchetto di base come unzip e wget.

sudo apt install unzip software-properties-common wget

Ora scarica il pacchetto SonarQube tramite il comando wget di seguito.

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

Dopo aver scaricato SonarQube, vedrai il file zip sonarqube-9.6.1.59531.zip nella tua directory di lavoro.

Estrai il pacchetto SonarQube usando il comando unzip qui sotto. Dovresti ottenere una nuova directory sonarqube-9.6.1.59531 in cui è memorizzato il pacchetto SonarQube.

unzip sonarqube-9.6.1.59531.zip

Sposta la directory sonarqube-9.6.1.59531 in /opt/sonarqube utilizzando il comando seguente.

mv sonarqube-9.6.1.59531 /opt/sonarqube

Infine, cambia la proprietà della directory di installazione di SonarQube /opt/sonarqube all'utente sonarquba tramite il comando chown come di seguito.

sudo chown -R sonarqube:sonarqube /opt/sonarqube

Ora hai scaricato il pacchetto SonarQube nella directory di installazione /opt/sonarqube. Successivamente, configurerai l'installazione di SonarQube, quindi imposterai un file di servizio systemd per SonarQube.

Configurazione di SonarQube

Dopo aver scaricato il pacchetto SonarQube, configurerai l'installazione di SonarQUbe modificando il file di configurazione predefinito /opt/sonarqube/conf/sonar.properties.

Aggiungerai i dettagli del database PostgreSQL, imposterai l'heap di memoria massimo per il processo Elasticsearch e configurerai l'host web e la porta per il servizio SonarQube tramite il file /opt/sonarqube/conf/sonar.properties. Infine, configurerai SonarQube come servizio di sistema.

Ora apri il file di configurazione di SonarQube /opt/sonarqube/conf/sonar.properties utilizzando l'editor nano.

nano /opt/sonarqube/conf/sonar.properties

Per la configurazione del database, rimuovere il commento da alcune delle seguenti opzioni e modificare il valore predefinito utilizzando i dettagli del database.

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

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

Ora, decommenta la seguente configurazione per impostare la dimensione massima della memoria heap per il processo elasticsearch. Nel suo esempio, l'heap massimo sarà di 512 MB.

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

Infine, decommenta e modifica le seguenti configurazioni per impostare l'indirizzo IP e la porta del SonarQube in esecuzione. Inoltre, il livello del registro sarà INFO\ e memorizzato nella directory dei registri della directory di installazione di SonarQube.

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

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

Salva il file ed esci dall'editor quando hai finito.

Dopo aver terminato la configurazione di SonarQube. Ora imposterai il file di servizio systemd per SonarQube. Ciò consente di controllare facilmente il processo SonarQube utilizzando il comando systemctl.

Esegui il seguente comando per creare un nuovo file di servizio systemd /etc/systemd/system/sonarqube.service.

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

Aggiungere la seguente configurazione al file.

[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

Salva il file ed esci dall'editor quando hai finito.

Ora ricarica il gestore systemd usando il seguente comando.

sudo systemctl daemon-reload

Successivamente, avvia e abilita sonarqube.service tramite il comando systemctl di seguito.

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

Infine, verifica lo stato sonarqube.service utilizzando il seguente comando e assicurati che il suo stato sia in esecuzione.

sudo systemctl status sonarqube.service

Vedrai l'output nello screenshot seguente. Lo stato sonarqube.service è in esecuzione ed è anche abilitato, il che significa che verrà eseguito automaticamente all'avvio del sistema.

Ora che SonarQube è in esecuzione come servizio systemd, installerai e configurerai un proxy inverso per SonarQube che viene eseguito su localhost con la porta predefinita TCP 9000.

Esecuzione di SonarQube con proxy inverso

L'installazione di SonarQube è ora in esecuzione, ora puoi installare il server Web Nginx e configurare i blocchi del server che verranno utilizzati come proxy inverso per SonarQube.

Esegui il seguente comando apt per installare il server web Nginx sul tuo sistema Ubuntu. Immettere Y quando viene richiesto di confermare l'installazione e premere INVIO per procedere.

sudo apt install nginx

Una volta installato nginx, verifica il servizio nginx e assicurati che lo stato del servizio sia in esecuzione tramite il comando systemctl come di seguito.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Vedrai che l'output del servizio nginx è abilitato, il che significa che verrà eseguito automaticamente all'avvio del sistema. E lo stato corrente del servizio nginx è in esecuzione.

Dopo aver eseguito il server Web Nginx, creerai una nuova configurazione del blocco del server che verrà utilizzata come proxy inverso per SonarQube.

Crea una nuova configurazione dei blocchi del server /etc/nginx/sites-available/sonarqube.conf utilizzando il seguente comando.

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

Aggiungi la seguente configurazione al tuo file e assicurati di cambiare il nome di dominio.

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

Salva il file ed esci dall'editor quando hai finito.

Successivamente, attiva la configurazione del blocco del server sonarqube.conf creando un collegamento simbolico di quel file alla directory /etc/nginx/sites-enabled. Quindi, verifica i file di configurazione di Nginx.

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

Se disponi di file di configurazione Nginx appropriati e corretti, dovresti visualizzare un messaggio di output come \test riuscito\.

Infine, esegui il seguente comando systemctl di seguito per riavviare il servizio nginx e applicare la nuova configurazione del blocco del server.

sudo systemctl restart nginx

Installazione SonarQube

Dopo aver terminato la configurazione del proxy inverso per SonarQube, ora puoi accedere all'installazione di SonarQube tramite il tuo dominio e configurare alcune configurazioni di base di SonarQube.

Apri il tuo browser Web e visita il nome di dominio per l'installazione di SonarQube (ad esempio: http://sonar.hwdomain.io).

Ora otterrai la pagina di accesso di SonarQube. Immettere il nome utente e la password predefiniti admin/admin e fare clic su Accedi.

Una volta effettuato l'accesso, ti verrà chiesto di impostare una nuova password per SnonarQube. Inserisci la vecchia password admin, quindi inserisci la nuova password complessa e ripeti, quindi fai clic su Aggiorna.

Ora ti verrà mostrata la dashboard utente di SonarQube nello screenshot seguente.

Conclusione

In questa guida, hai installato SonarQube sull'ultimo server Ubuntu 22.04. Inoltre, hai completato l'installazione di base del database PostgreSQL tramite il repository PostgreSQL ufficiale e hai installato il server web Nginx. Successivamente, hai anche configurato il proxy inverso per SOnarQube con i blocchi del server Nginx.

SonarQube è ora installato sul tuo server Ubuntu. Ora puoi aggiungere il progetto che analizzerai al SonarQube tramite il repository git.