GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer SonarQube avec Lets Encrypt sur Ubuntu 20.04

C'est le rêve de tout développeur d'avoir un code propre et sans problème qui peut être facilement déployé dans des environnements de mise en scène et de production. SonarQube est un outil qui peut vous aider à atteindre cet objectif dans votre pipeline CI/CD. SonarQube est un outil Web multiplateforme utilisé pour l'inspection continue du code source. Il est écrit en Java. SonarQube vous permet d'écrire un code plus propre et plus sûr en inspectant le code et en détectant les bogues et autres incohérences.

SonarQube peut être intégré à des plates-formes telles que GitHub, Gitlab, BitBucket et Azure DevOps, pour ne citer que quelques plates-formes. Il est disponible en différentes éditions, notamment les éditions Community, Developer, Enterprise et Datacenter.

Dans ce didacticiel, nous apprenons à installer SonarQube sur Ubuntu 20.04 . Nous allons installer l'édition communautaire car il est gratuit de télécharger et d'activer le certificat SSL (https) avec Let's Encrypt en définissant Nginx comme proxy inverse.

Prérequis

Avant de commencer, assurez-vous que vous remplissez les conditions suivantes :

  1. Ubuntu 20.04 LTS avec un utilisateur sudo configuré.
  2. Assurez-vous que votre système dispose d'au moins 4 Go de RAM et de 2 cœurs vCPU

Vous devrez installer quelques outils

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

De plus, vous devez augmenter le noyau de mémoire virtuelle

$ sudo sysctl -w vm.max_map_count=262144

avec le nombre maximum de fichiers ouverts

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

et les limites de ressources

$ ulimit -n 65536
$ ulimit -u 4096

Vous pouvez rendre les modifications persistantes en modifiant les paramètres système dans le /etc/sysctl.conf fichier de configuration

$ sudo vim /etc/sysctl.conf

Ajoutez les lignes suivantes.

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

Sauvegarder et quitter. Par la suite, ouvrez le limits.conf fichier

$ sudo vim /etc/security/limits.conf

Tout en bas, ajoutez les lignes suivantes

sonarqube - nofile 65536
sonarqube - nproc 4096

Sauvegarder et quitter. Pour que les modifications entrent en vigueur, redémarrez votre serveur.

Étape 1 :Installez OpenJDK

Puisqu'il est écrit en Java, SonarQube dépend de Java pour fonctionner. Nous allons installer OpenJDK 11 qui fournit java.

$ sudo apt install openjdk-11-jdk

Une fois installé, vous pouvez vérifier la version de Java.

$ java -version

Étape 2 :Installer la base de données PostgreSQL

À partir de 2016, SonarQube a abandonné la prise en charge de MySQL et ne prend désormais en charge que PostgreSQL. En tant que tel, nous devons installer la base de données PostgreSQL.

Pour commencer, téléchargez et ajoutez la clé PostgreSQL GPG.

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

Ajoutez ensuite le dépôt 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'

Mettez ensuite à jour l'index du package pour synchroniser le nouveau référentiel.

$ sudo apt update

Une fois que vous avez terminé de mettre à jour les listes de packages, installez la base de données PostgreSQL et ses dépendances.

$ sudo apt install postgresql postgresql-contrib

Par défaut, le service PostgreSQL démarre après l'installation, s'il n'est pas démarré, exécutez la commande suivante.

$ sudo systemctl start postgresql

Juste pour confirmer que tout fonctionne comme prévu, vérifiez son état de fonctionnement.

$ sudo systemctl status postgresql

Vous pouvez également confirmer le port sur lequel il écoute :

$ 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    

Activez PostgreSQL pour qu'il démarre automatiquement au démarrage :

$ sudo systemctl enable postgresql

Jusqu'à présent, notre PostgreSQL est opérationnel sans aucun problème.

Étape 3 :Configurer PostgreSQL

Ensuite, nous allons définir le mot de passe de l'utilisateur Postgres qui est généralement fourni par défaut lors de l'installation de PostgreSQL. Pour cela, lancez la commande :

$ sudo passwd postgres

Saisissez le mot de passe et confirmez-le. Ensuite, passez à l'utilisateur Postgres.

$ su - postgres

Ensuite, continuez et créez un nouvel utilisateur de base de données.

$ createuser sonar

Une fois cela fait, passez à l'invite PostgreSQL à l'aide de la commande :

$ psql

Avec l'accès au shell PostgreSQL, créez un mot de passe pour l'utilisateur que vous venez de créer.

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

Ensuite, créez une base de données SonarQube avec l'utilisateur que vous avez créé en tant que propriétaire

CREATE DATABASE sonarqube OWNER sonar;

Ensuite, attribuez ou accordez tous les privilèges à l'utilisateur de la base de données afin qu'il ait tous les privilèges pour modifier la base de données.

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Quittez maintenant la base de données.

\q

Étape 4 :Téléchargez et configurez SonarQube

Ensuite, nous allons télécharger le dernier fichier zip binaire SonarQube. À l'heure actuelle, la dernière version de Community Edition, qui est une version de service à long terme (LTS), est la version 9.0.1 de SonarQube. Vous pouvez vous diriger vers la page de téléchargement de SonarQube pour les derniers téléchargements.

Pour télécharger le fichier zip, lancez la commande :

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

Ensuite, décompressez le fichier compressé.

$ unzip sonarqube-9.0.1.46107.zip

Et déplacez-le vers le chemin /opt/.

$ sudo mv sonarqube-9.0.1.46107 /opt/sonarqube

Étape 5 :Créer un nouvel utilisateur et un nouveau groupe

Ensuite, nous allons créer un nouvel utilisateur et un groupe qui exécuteront le service SonarQube. Alors, créez le groupe.

$ sudo groupadd sonar

Ensuite, créez l'utilisateur avec le répertoire personnel défini sur /opt/sonarqube lorsque vous ajoutez l'utilisateur au groupe nouvellement créé.

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

Définissez ensuite la propriété sur le répertoire /opt/sonarqube.

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

Étape 6 :Configurer SonarQube

Configurons maintenant SonarQube. Ouvrez le fichier de configuration SonarQube.

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

Localisez et décommentez les lignes suivantes

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

Ceux-ci représentent l'utilisateur et le mot de passe de la base de données SonarQube que nous avons créés dans le serveur de base de données PostgreSQL. Par conséquent, remplissez les valeurs en conséquence.

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

Ensuite, modifiez ces lignes pour qu'elles ressemblent à ce qui est fourni

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

Ensuite, modifiez les lignes suivantes pour qu'elles apparaissent telles qu'elles sont.

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

Ensuite, modifiez l'utilisateur qui exécutera le service SonarQube en modifiant le fichier affiché.

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

Faites défiler vers le bas et assurez-vous que la ligne ci-dessous apparaît comme indiqué.

RUN_AS_USER=sonar

Étape 7 :Créer un fichier de service Systemd pour SonarQube

Pour le moment, notre système n'a aucun moyen de démarrer le service SonarQube. Par conséquent, nous devons créer un service systemd. Pour cela, lancez la commande :

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

Ajoutez les lignes suivantes.

[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

Enregistrez les modifications et quittez le fichier.

Activer le service SonarQube pour qu'il démarre au démarrage

$ sudo systemctl enable sonarqube

Et démarrez le service SonarQube.

$ sudo systemctl start sonarqube

Pour vous assurer que le service SonarQube est en cours d'exécution, exécutez la commande :

$ sudo systemctl status sonarqube

Assurez-vous également que le port 9000 est ouvert

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

Vérifiez si le service écoute sur le port 9000

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

Vous pouvez maintenant essayer de vérifier si vous pouvez accéder à la page de connexion en entrant l'adresse IP publique de votre serveur et le numéro de port de votre navigateur, c'est-à-dire http://<server-ip>:9000/ . Le nom d'utilisateur par défaut de l'administrateur est 'admin' et le mot de passe est 'admin'.

Sonarqube vous demandera de mettre à jour le mot de passe afin de changer celui par défaut.

Étape 8 :Installer et configurer Nginx avec SSL (facultatif)

Pour accéder à votre Sonarqube avec un nom de domaine compatible SSL, vous devrez installer un proxy inverse comme Nginx. Le serveur Web transmettra les connexions proxy à SonarQube afin que les développeurs puissent y accéder à partir d'un nom de domaine sécurisé.

L'installation de Nginx est simple et directe et peut être effectuée en une seule commande.

$ sudo apt install nginx

Après l'installation, activez le serveur Web Nginx pour qu'il démarre au démarrage.

$ sudo systemctl enable nginx

Et démarrez le service

$ sudo systemctl start nginx

Pour que le serveur Web soit au courant de SonarQube, nous allons créer un fichier de configuration illustré.

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

Collez ensuite le contenu fourni.

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

Sauvegarder et quitter. Activez ensuite le site Sonarqube :

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

Vérifiez si la configuration est correcte

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

Redémarrez ensuite le serveur Web Nginx pour que les modifications soient appliquées.

$ sudo systemctl restart nginx

Nous devons maintenant configurer le pare-feu UFW pour autoriser nginx. Pour ce faire, exécutez les commandes

$ sudo ufw allow 'Nginx Full'

Rechargez ensuite le pare-feu pour appliquer les modifications.

$ sudo ufw --reload

Vous pouvez désormais accéder à votre SonarQube via son nom de domaine

Ici, nous allons utiliser le certificat gratuit let's encrypt. Pour configurer cela, nous devons exécuter cerbot pour 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): [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 

Par défaut, let's encrypt ajoutera quelques lignes dans le fichier de bloc du serveur Nginx.

Vous devriez avoir quelque chose comme ça

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

 }

Étape 10 :Accéder à SonarQube avec HTTPS

Vous pouvez désormais accéder à SonarQube en toute sécurité avec l'URL HTTPS configurée avec Let's Encrypt.

https://domain-name

Après la connexion, la page de destination s'affichera.

Conclusion

Dans ce tutoriel, nous avons appris à installer SonarQube sur Ubuntu 20.04. Nous avons activé Sonarqube avec SSL en utilisant le certificat Let's Encrypt en utilisant Nginx comme proxy inverse.


Ubuntu
  1. Comment installer un serveur FTP sur Ubuntu avec vsftpd

  2. Comment sécuriser Nginx avec Lets Encrypt sur Ubuntu 20.04 / 18.04

  3. Comment installer Joomla avec Apache sur Ubuntu 18.04

  4. Comment installer Nextcloud avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  5. Comment installer Let's Encrypt sur Ubuntu 20.04 avec Apache

Comment installer NextCloud sur Ubuntu 20.04 avec Apache

Comment installer WordPress avec Nginx sur Ubuntu

Comment installer Lighttpd avec PHP dans Ubuntu 20.04

Comment installer SonarQube sur Ubuntu 20.04 LTS

Comment installer Nginx avec Let's Encrypt SSL sur Ubuntu 20.04 LTS

Comment installer Apache avec Let's Encrypt SSL sur Ubuntu 20.04 LTS