SonarQube, auparavant connu sous le nom de Sonar, est une plateforme open-source puissante qui permet l’analyse statique du code et la sécurité du code. Elle est conçue pour aider les développeurs à détecter les bugs, améliorer la sécurité des applications et améliorer la qualité du code. Dans cet article, nous vous guiderons à travers le processus d’installation de SonarQube sur un serveur Ubuntu 22.04, y compris l’installation de PostgreSQL comme base de données et Nginx comme proxy inverse.

Installation de Java OpenJDK

La première étape consiste à installer Java OpenJDK sur votre système Ubuntu, car SonarQube nécessite Java OpenJDK v11. Mettez à jour et actualisez votre index de paquets Ubuntu en exécutant la commande suivante:

sudo apt update

Ensuite, installez Java OpenJDK v11 en utilisant la commande suivante:

sudo apt installdefault-jdk

Vérifiez la version de Java installée sur votre système en exécutant la commande suivante:

java -version

Installation du système de base de données PostgreSQL

SonarQube prend en charge plusieurs systèmes de base de données, y compris PostgreSQL, Microsoft SQL Server et Oracle Database. Dans ce guide, nous utiliserons PostgreSQL comme base de données pour SonarQube.

Pour installer PostgreSQL, nous devons ajouter le dépôt PostgreSQL et installer les packages appropriés. Exécutez les commandes suivantes pour ajouter le dépôt et mettre à jour votre index de paquets Ubuntu:

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O- | sudo apt-key add-
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt update

Une fois le dépôt ajouté et mis à jour, installez PostgreSQL v13 en exécutant la commande suivante:

sudo apt install postgresql-13

Après l’installation, vérifiez l’état du service PostgreSQL en exécutant la commande suivante:

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Configuration du système

Avant d’installer SonarQube, nous devons configurer le système en créant un utilisateur dédié pour exécuter SonarQube et en configurant certains paramètres supplémentaires.

Créez un nouvel utilisateur nommé ‘sonarqube’ en utilisant la commande suivante:

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

Ensuite, ouvrez le fichier ‘/etc/sysctl.conf’ à l’aide d’un éditeur de texte:

sudo nano /etc/sysctl.conf

Ajoutez les lignes suivantes à la fin du fichier pour configurer des paramètres de noyau personnalisés:

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

Enregistrez le fichier et quittez l’éditeur. Appliquez les modifications en exécutant la commande suivante:

sudo sysctl --system

Ensuite, configurez le ulimit pour SonarQube en exécutant les commandes suivantes:

ulimit -n 131072
ulimit -u 8192

Pour rendre la configuration ulimit permanente, créez un nouveau fichier de configuration en utilisant la commande suivante:

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

Ajoutez les lignes suivantes au fichier:

sonarqube - nofile 131072
sonarqube - nproc 8192

Enregistrez le fichier et quittez l’éditeur.

Téléchargement du package SonarQube

Il est maintenant temps de télécharger le package SonarQube et de configurer l’installation. Nous téléchargerons le package depuis le site officiel de SonarQube.

Installez les packages nécessaires en exécutant la commande suivante:

sudo apt install unzip software-properties-common wget

Téléchargez le package SonarQube en exécutant la commande suivante:

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

Extrayez le package téléchargé en utilisant la commande suivante:

unzip sonarqube-9.6.1.59531.zip

Déplacez le répertoire extrait vers le répertoire ‘/opt/sonarqube’:

mv sonarqube-9.6.1.59531 /opt/sonarqube

Changez la propriété du répertoire d’installation de SonarQube à l’utilisateur ‘sonarqube’:

sudo chown -R sonarqube:sonarqube /opt/sonarqube

Configuration de SonarQube

Après avoir téléchargé et configuré le package SonarQube, il est temps de configurer SonarQube en éditant le fichier ‘sonar.properties’.

Ouvrez le fichier ‘sonar.properties’ à l’aide d’un éditeur de texte:

sudo nano /opt/sonarqube/conf/sonar.properties

Configurez les paramètres de la base de données en décommentant et en modifiant les lignes suivantes:

sonar.jdbc.username=sonarqube
sonar.jdbc.password=Password
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

Configurez la taille maximale de la mémoire heap pour le processus Elasticsearch en décommentant et en modifiant la ligne suivante:

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

Configurez l’hôte web, le port et d’autres paramètres en décommentant et en modifiant les lignes suivantes:

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

Enregistrez le fichier et quittez l’éditeur.

Configuration du service Systemd

Pour démarrer et gérer SonarQube en tant que service, nous devons créer un fichier de service Systemd.

Créez un nouveau fichier de service en utilisant un éditeur de texte:

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

Ajoutez le contenu suivant au fichier:

[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

Enregistrez le fichier et quittez l’éditeur.

Rechargez le gestionnaire systemd pour appliquer les modifications:

sudo systemctl daemon-reload

Démarrez le service SonarQube et activez-le pour qu’il démarre au démarrage du système:

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

Vérifiez l’état du service SonarQube:

sudo systemctl status sonarqube.service

Exécution de SonarQube avec un proxy inverse

Pour accéder à SonarQube depuis un navigateur web, nous devons configurer un proxy inverse en utilisant Nginx.

Installez Nginx en exécutant la commande suivante:

sudo apt install nginx

Vérifiez l’état du service Nginx:

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Créez un nouveau fichier de configuration de bloc de serveur:

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

Ajoutez la configuration suivante au fichier, en remplaçant ‘sonar.hwdomain.io’ par votre nom de domaine:

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

Enregistrez le fichier et quittez l’éditeur.

Créez un lien symbolique pour activer la configuration du bloc de serveur:

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

Vérifiez la configuration de Nginx:

sudo nginx -t

Redémarrez Nginx pour appliquer les modifications:

sudo systemctl restart nginx

Installation de SonarQube

Maintenant que tout est configuré, vous pouvez accéder à SonarQube via votre nom de domaine. Ouvrez votre navigateur web et saisissez le nom de domaine que vous avez configuré précédemment (par exemple, http://sonar.example.io).

Vous serez accueilli par la page de connexion de SonarQube. Utilisez le nom d’utilisateur par défaut ‘admin’ et le mot de passe ‘admin’ pour vous connecter.

Une fois connecté, vous serez invité à changer le mot de passe. Entrez l’ancien mot de passe ‘admin’ et définissez un nouveau mot de passe fort.

Pour des solutions d’hébergement cloud fiables et évolutives, pensez aux services Cloud VPS de Shape.host. Shape.host offre des options d’hébergement sécurisées et efficaces adaptées à vos besoins. Visitez Shape.host pour plus d’informations.