Mémo pour installer SonarQube sur Debian 8 Jessie.
Pré-requis
- Une machine Debian 8 Jessie avec au moins 2Go de mémoire (voir plus si possible).
- MySQL 5.6 (voir le mémo « Debian – Installer MySQL 5.6 et 5.7« )
- Java 8
Pour Java, voir les mémo « Linux – Télécharger Oracle Java avec wget sous Debian » et « Installer Oracle Java 8 sous Debian 7 Wheezy« .
Ça marche aussi pour Debian 8 Jessie.
A la rédaction de ce mémo, c’est Java 1.8.0 111 :
1 2 3 4 5 |
command update-alternatives --display java java - auto mode link currently points to /opt/java-oracle/jdk1.8.0_111/bin/java /opt/java-oracle/jdk1.8.0_111/bin/java - priority 1041 Current 'best' version is '/opt/java-oracle/jdk1.8.0_111/bin/java'. |
Installation
Télécharger SonarQube en utilisant les liens directs sur leur site :
http://www.sonarqube.org/downloads/
Pour ce mémo, j’ai utilisé la version 5.6.3.
1 |
command wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.3.zip |
Décompresser l’archive dans le répertoire /opt
Éditer le fichier /opt/sonarqube-5.6.3/conf/sonar.properties et modifier ces lignes :
1 2 3 4 5 |
# User credentials. # Permissions to create tables, indices and triggers must be granted to JDBC user. # The schema must be created first. sonar.jdbc.username=sonar sonar.jdbc.password=sonar |
1 2 3 4 5 6 7 |
#----- Embedded Database (default) # H2 embedded database server listening port, defaults to 9092 #sonar.embeddedDatabase.port=9092 #----- MySQL 5.6 or greater # Only InnoDB storage engine is supported (not myISAM). # Only the bundled driver is supported. It can not be changed. sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance |
MySQL
Créer un utilisateur « sonar » avec le mot de passe « sonar » et une base de données « sonar ».
Utiliser phpMyAdmin pour créer l’ensemble en une fois.
« Utilisateur > Ajouter un utilisateur »
Cocher la case « Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base. ».
Première exécution
Pour lancer SonarQube, il faut utiliser le script correspondant à votre environnement.
Dans mon cas il se trouve dans : /opt/sonarqube-5.6.3/bin/linux-x86-64
1 2 |
command cd /opt/sonarqube-5.6.3/bin/linux-x86-64 command ./sonar.sh start |
Dans la session ssh, effectuer un « tail -f » sur le fichier /opt/sonarqube-5.6.3/logs/sonar.log.
Cela permettra de vérifier que SonaQube se connecte bien à la base de données MySQL et installe les tables.
A vérifier également dans phpMyAdmin.
Pour arrêter SonarQube :
1 2 |
command cd /opt/sonarqube-5.6.3/bin/linux-x86-64 command ./sonar.sh stop |
Premier accès
Dans mon cas, j’ai utilisé une box Vagrant avec le port 9000 mappé.
1 |
config.vm.network "forwarded_port", guest: 9000, host: 9000 |
Donc dans mon navigateur, j’utilise cette url : http://localhost:9000
Le dashboard s’affiche au bout de quelques dizaines de secondes la première fois.
Le temps pour SonarQube d’initialiser la base de données.
La connexion par défaut est admin avec le mot de passe admin.
SonarQube en tant que service
Je vais un peu adapter la documentation de SonarQube.
Disponible ici : http://docs.sonarqube.org/display/SONAR/Running+SonarQube+as+a+Service+on+Linux
Créer le fichier /etc/init.d/sonar :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/bin/sh # # rc file for SonarQube # # chkconfig: 345 96 10 # description: SonarQube system (www.sonarsource.org) # ### BEGIN INIT INFO # Provides: sonar # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: SonarQube system (www.sonarsource.org) # Description: SonarQube system (www.sonarsource.org) ### END INIT INFO /usr/bin/sonar $* |
Créer un lien symbolic :
1 |
command ln -s /opt/sonarqube-5.6.3/bin/linux-x86-64/sonar.sh /usr/bin/sonar |
Rendre le fichier /etc/init.d/sonar exécutable :
1 |
command chmod 755 /etc/init.d/sonar |
Enregistrer le service :
1 |
command update-rc.d sonar defaults |
Relancer la machine pour tester le démarrage automatique.
Du coup, on peut utiliser Systemd pour gérer le service :
1 |
command systemctl status sonar.service |
Résultat :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
? sonar.service - LSB: SonarQube system (www.sonarsource.org) Loaded: loaded (/etc/init.d/sonar) Active: active (running) since Wed 2016-11-02 17:17:14 CET; 4s ago Process: 1605 ExecStop=/etc/init.d/sonar stop (code=exited, status=0/SUCCESS) Process: 1773 ExecStart=/etc/init.d/sonar start (code=exited, status=0/SUCCESS) CGroup: /system.slice/sonar.service tq1839 /opt/sonarqube-5.6.3/bin/linux-x86-64/./wrapper /opt/sonarqube-5.6.3/bin/linux-x86-64/../../conf/wrapper.conf w... tq1841 java -Djava.awt.headless=true -Xms3m -Xmx3m -Djava.library.path=./lib -classpath ../../lib/jsw/wrapper-3.2.3.ja... mq1864 /opt/java-oracle/jdk1.8.0_111/jre/bin/java -Djava.awt.headless=true -Xmx1G -Xms256m -Xss256k -Djava.net.preferI... Nov 02 17:17:13 sonarqube systemd[1]: Starting LSB: SonarQube system (www.sonarsource.org)... Nov 02 17:17:13 sonarqube sonar[1773]: Starting SonarQube... Nov 02 17:17:14 sonarqube sonar[1773]: Started SonarQube. Nov 02 17:17:14 sonarqube systemd[1]: Started LSB: SonarQube system (www.sonarsource.org). |
Mais aussi :
1 2 3 |
command systemctl start sonar.service command systemctl stop sonar.service command systemctl restart sonar.service |
Reste à installer « SonarQube Scanner 2.8 ».
Voir la documentation officielle : http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner