SonarQube est une plate-forme open source permettant d'inspecter en continu la qualité du code des applications. Il est écrit en langage Java et prend en charge plusieurs bases de données. Vous pouvez inspecter le code et vérifier la santé d'une application pour plus de 20 langages de programmation, dont Java, C, C++, C#, PHP et des langages Web tels que JavaScript, HTML et CSS. SonarQube peut analyser le code source, trouver des failles de sécurité, détecter des bogues et afficher le résultat sur un tableau de bord Web. Vous pouvez facilement intégrer SonarQube à Maven, Ant, Gradle, MSBuild, LDAP, Active Directory et GitHub.
Dans ce tutoriel, nous allons apprendre à installer SonarQube sur un serveur Ubuntu 18.04 LTS (Bionic Beaver).
Exigences
- Un serveur exécutant Ubuntu 18.04.
- Un utilisateur non root avec des privilèges sudo.
Mise en route
Avant de commencer, vous devrez mettre à jour votre système avec la dernière version. Vous pouvez le faire en exécutant la commande suivante :
sudo apt-get update -y
sudo apt-get upgrade -y
Une fois votre système mis à jour, redémarrez le système pour appliquer les modifications.
Installer Java
SonarQube est écrit en langage Java, vous devrez donc installer Java sur votre système. Tout d'abord, ajoutez le référentiel Java avec la commande suivante :
sudo add-apt-repository ppa:webupd8team/java
Ensuite, mettez à jour le référentiel et installez Java avec la commande suivante :
sudo apt-get update -y
sudo apt-get install oracle-java8-installer -y
Une fois Java installé, vérifiez la version de Java à l'aide de la commande suivante :
version Java
Sortie :
openjdk version "10.0.2" 2018-07-17Environnement d'exécution OpenJDK (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0 .18.04.3, mode mixte)
Installer et configurer PostgreSQL
Par défaut, la dernière version de PostgreSQL n'est pas disponible dans le référentiel par défaut d'Ubuntu 18.04. Vous devrez donc ajouter le référentiel PostgreSQL à votre système.
Vous pouvez le faire avec la commande suivante :
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main">> /etc/apt/sources.list.d/pgdg .list'
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key ajouter -
Ensuite, mettez à jour le référentiel et installez PostgreSQL avec la commande suivante :
sudo apt-get update -y
sudo apt-get install postgresql postgresql-contrib
Une fois l'installation terminée, vérifiez l'état de PostgreSQL avec la commande suivante :
sudo systemctl statut postgresql
Sortie :
? postgresql.service - SGBDR PostgreSQL chargé :chargé (/lib/systemd/system/postgresql.service ; activé ; préréglage du fournisseur :activé) Actif :actif (exited) depuis Sun 2018-12-02 08:49:29 UTC ; Il y a 4h 30min Processus :1295 ExecStart=/bin/true (code=sorti, statut=0/SUCCESS) PID principal :1295 (code=sorti, status=0/SUCCESS)Dec 02 08:49:29 ubuntu1804 systemd[1] :Démarrage de PostgreSQL RDBMS...Dec 02 08:49:29 ubuntu1804 systemd[1] :Démarrage de PostgreSQL RDBMS.
Ensuite, passez à l'utilisateur postgres avec la commande suivante :
su - postgres
Ensuite, créez un utilisateur sonar avec la commande suivante :
createuser sonar
Passez ensuite au shell PostgreSQL avec la commande suivante :
psql
Ensuite, définissez le mot de passe pour l'utilisateur du sonar et créez une base de données du sonar avec la commande suivante :
ALTER USER sonar WITH ENCRYPTED password 'password' ;
CREATE DATABASE sonar OWNER sonar ;
Ensuite, quittez le shell PostgreSQL :
\q
Installer et configurer SonarQube
Commencez par créer un utilisateur pour SonarQube avec la commande suivante :
sonar sudo adduser
Ensuite, téléchargez la dernière version de SonarQube avec la commande suivante :
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
Une fois le téléchargement terminé, décompressez le fichier téléchargé avec la commande suivante :
décompressez sonarqube-6.7.6.zip
Ensuite, copiez le répertoire extrait dans /opt avec la commande suivante :
sudo cp -r sonarqube-6.7.6 /opt/sonarqube
Ensuite, attribuez la propriété à l'utilisateur du sonar avec la commande suivante :
sudo chown -R sonar:sonar /opt/sonarqube
Ensuite, vous devrez configurer SonarQube pour qu'il s'exécute en tant qu'utilisateur de sonar. Vous pouvez le faire avec la commande suivante :
sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Effectuez les modifications suivantes :
RUN_AS_USER=sonar
Enregistrez et fermez le fichier. Ensuite, ouvrez le fichier de configuration par défaut de SonarQube et modifiez les informations d'identification de la base de données avec celles que nous avons créées précédemment :
sudo nano /opt/sonarqube/conf/sonar.properties
Effectuez les modifications suivantes :
sonar.jdbc.username=sonarsonar.jdbc.password=passwordsonar.jdbc.url=jdbc:postgresql://localhost/sonarsonar.web.host=127.0.0.1sonar.search.javaOpts=-Xms512m -Xmx512mEnregistrez et fermez le fichier lorsque vous avez terminé.
Créer un fichier de service Systemd pour SonarQube
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service SonarQube. Vous pouvez le faire avec la commande suivante :
sudo nano /etc/systemd/system/sonar.serviceAjoutez les lignes suivantes :
[Unit]Description=SonarQube serviceAfter=syslog.target network.target[Service]Type=forkingExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh startExecStop=/opt/sonarqube/bin/linux -x86-64/sonar.sh stopUser=sonarGroup=sonarRestart=always[Install]WantedBy=multi-user.targetEnregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, démarrez le service SonarQube et activez-le au démarrage avec la commande suivante :
sudo systemctl start sonar
sudo systemctl enable sonarVous pouvez vérifier l'état du service SonarQube avec la commande suivante :
sondeur d'état sudo systemctlSortie :
? sonar.service - Service SonarQube Chargé :chargé (/etc/systemd/system/sonar.service ; désactivé ; préréglage fournisseur :activé) Actif :actif (en cours d'exécution) depuis le dim 2018-12-02 13:55:34 UTC ; il y a 2min 52s Processus :2339 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS) PID principal :2396 (wrapper) Tâches :133 (limite :2323 ) CGroup :/system.slice/sonar.service ??2396 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf /wrapper.conf wrapper.syslog.ident=SonarQ ??2399 java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../.. /lib/jsw/wrapper- ??2445 /usr/lib/jvm/java-8-oracle/jre/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOc ??2545 /usr/ lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp - ??2622 /usr /lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -Dec 02 13 :55:33 ubuntu1804 systemd[1] :Démarrage du service SonarQube... 2 décembre 13 :55:33 ubuntu1804 sonar.sh[2339] :Démarrage de SonarQube... 02 déc. .Configurer Apache pour SonarQube
Par défaut, SonarQube écoute sur le port 9000. Vous devrez donc installer et configurer Apache en tant que proxy inverse pour accéder à SonarQube via le port 80.
Pour cela, installez Apache avec la commande suivante :
sudo apt-get install apache2 -yEnsuite, activez le module mod_proxy avec la commande suivante :
proxy sudo a2enmod
sudo a2enmod proxy_httpEnsuite, créez un fichier d'hôte virtuel Apache pour SonarQube avec la commande suivante :
sudo nano /etc/apache2/sites-available/sonar.confAjoutez les lignes suivantes :
ServerName example.com ServerAdmin [email protected] ProxyPreserveHost On ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ TransferLog /var/log/ apache2/sonarm_access.log ErrorLog /var/log/apache2/sonar_error.log Remplacez example.com par votre propre nom de domaine. Enregistrez et fermez le fichier. Ensuite, activez le fichier d'hôte virtuel SonarQube avec la commande suivante :
sonar sudo a2ensiteEnfin, redémarrez le service Apache et SonarQube pour appliquer toutes les modifications avec la commande suivante :
sudo systemctl restart apache2
sudo systemctl restart sonarPar défaut, SonarQube stocke ses journaux dans le répertoire /opt/sonarqube/logs. Vous pouvez vérifier le journal SonarQube avec la commande suivante :
sudo tail -f /opt/sonarqube/logs/sonar.logSortie :
Lancement d'un JVM...Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org Copyright 1999-2006 Tanuki Software, Inc. Tous droits réservés.2018.12.02 13:55:43 INFO app[] [o.s.a.AppFileSystem] Nettoyage ou création du répertoire temporaire /opt/sonarqube/temp2018.12.02 13:55:44 INFO app[][o.s.a.es.EsSettings] Elasticsearch en écoute sur /127.0.0.1:90012018.12.02 13:55:45 INFO app [][o.s.a.p.ProcessLauncherImpl] Processus de lancement[[key='es', ipcIndex=1, logFilenamePrefix=es]] depuis [/opt/sonarqube/elasticsearch] :/opt/sonarqube/elasticsearch/bin/elasticsearch -Epath.conf=/opt/sonarqube/temp/conf/es2018.12.02 13:55:45 INFO app[][o.s.a.SchedulerImpl] En attente qu'Elasticsearch soit opérationnel2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] no modules loaded2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] plugin chargé [org.elasticsearch.transport.Netty4Plugin]2018.12.02 13:56:34 INFO app[][o.s.a.SchedulerImpl] Process[es] is up2018. 12.02 13:56:34 Application INFO[][o.s.a.p.ProcessLauncherIm pl] Lancer le processus[[key='web', ipcIndex=2, logFilenamePrefix=web]] depuis [/opt/sonarqube] :/usr/lib/jvm/java-8-oracle/jre/bin/java -Djava. awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server /*:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.2.1.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process420500314195865484propertiesVous pouvez également consulter le journal Web de SonarQube à l'aide de la commande suivante :
sudo tail -f /opt/sonarqube/logs/web.logSortie :
2018.12.02 13:57:03 info web [] [O.S.S.P.ServerPluginRepository] Déployer le plugin Sonarjava / 4.15.0.12310 / 572454b93016ec73a53fe0e07b2ffdc356d21ba92018.12.02 13:57:03 info. / 741861a29e5f9a26c6c99c06268facb6c4f4a8822018.12.02 13:57:03 INFO web [] [o.s.s.p.ServerPluginRepository] Déployer plug-in SonarPython / 1.8.0.1496 / INFO 3fe3bc4d0273a5721ea2fb368dc45b1bb82fede32018.12.02 13:57:03 web [] [o.s.s.p.ServerPluginRepository] Déployer plug-in sonarqube ::Plugins ::SCM ::Git / 1.3.0.869 / INFO 4da53e3f9e55f4f2e5796625cb0c5768ed1520792018.12.02 13:57:03 web [] [o.s.s.p.ServerPluginRepository] Déployer plug-in sonarqube ::Plugins ::SCM ::SVN / 1.6.0.860 / 2111fdbd1dddda4ad6d4ed6486fd0b18c1010d3b2018.12.02 13:57:03 INFO web[][o.s.s.p.ServerPluginRepository] Déployer le plugin SonarTS / 1.1.0.1079 / 042c9e65239a47d92d305f9767f730b3cc1e5ed32018.12.02 13:57:03 INFO web[][o.s.p.ServerPluginRepository] Déployer le plugin SonarXML / 1.4.3.1027 / 39588245CECF538BB27BE4E496FF303B0143D20B2018.12.02 13:57:07 Info Web [] [O.S.S.P.D.M.C.PostgreSCharsethandler] Vérifiez que DATABASE SHARDPLETS UTF82018.12.02 13:57:09 Charset Utflet pattern=UrlPattern{inclusions=[/api/system/migrate_db/*, ...], exclusions=[/api/properties*, ...]}]2018.12.02 13:57:09 INFO web[][o.s.s.a. EmbeddedTomcat] Connecteur HTTP activé sur le port 90002018.12.02 13:57:16 INFO web[][o.s.s.p.UpdateCenterClient] Centre de mise à jour :https://update.sonarsource.org/update-center.properties (pas de proxy)Accéder à SonarQube
SonarQube est maintenant installé et configuré. Il est temps d'y accéder via un navigateur Web.
Ouvrez votre navigateur Web et saisissez l'URL http://example.com. Vous serez redirigé vers la page suivante :
Ici, cliquez sur le Journal Dans bouton. Vous devriez voir la page suivante :
Fournissez le nom d'utilisateur et le mot de passe du compte administrateur par défaut en tant qu'administrateur / administrateur et cliquez sur Log Dans bouton. Vous devriez voir le tableau de bord par défaut de SonarQube sur la page suivante :
Toutes nos félicitations! vous avez installé avec succès SonarQube sur le serveur Ubuntu 18.04. Vous pouvez désormais effectuer facilement des examens automatiques et vérifier l'état d'une application à l'aide de SonarQube.