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.