Package Sonar

De EjnTricks

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


System-Install-icon.png Installation initiale

L'installation de Sonar nécessite la génération du WAR avant déploiement sous le serveur d'application. Pour cela, il faut se placer dans le répertoire <UNZIP_DIRECTORY>/war/build-war.sh où UNZIP_DIRECTORY est le répertoire de décompression de l'archive téléchargée.

Icon-log.png Configuration de la log

La configuration initiale des logs, fichier WEB-INF/classes/logback.xml provoque des erreurs au démarrage de l'application. La configuration initiale est:

  <!-- appender used when using sonar with the provided jetty web container -->
  <appender name="SONAR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>../../logs/sonar.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <param name="FileNamePattern" value="../../logs/sonar.%i.log"/>
      <param name="MinIndex" value="1"/>
      <param name="MaxIndex" value="3"/>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <param name="MaxFileSize" value="5MB"/>
    </triggeringPolicy>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluator name="mavenRepoFileNotFound">
        <expression>message.startsWith("files: File not found: /maven")</expression>
      </evaluator>
      <OnMismatch>NEUTRAL</OnMismatch>
      <OnMatch>DENY</OnMatch>
    </filter>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>
        %d{yyyy.MM.dd HH:mm:ss} %-5level %logger{20} %X %msg%n
      </pattern>
    </layout>
  </appender>

  <!-- appender used to profile Sonar Web Server -->
  <appender name="PROFILING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>../../logs/profiling.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <param name="FileNamePattern" value="../../logs/profiling.%i.log"/>
      <param name="MinIndex" value="1"/>
      <param name="MaxIndex" value="3"/>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <param name="MaxFileSize" value="5MB"/>
    </triggeringPolicy>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>
        %d{yyyy.MM.dd HH:mm:ss} %-5level %logger{20} %X %msg%n
      </pattern>
    </layout>
  </appender>

L'emplacement des logs a été modifié pour spécifier un chemin absolu sur les logs.

  <!-- appender used when using sonar with the provided jetty web container -->
  <appender name="SONAR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>/var/lib/tomcat6/logs/sonar.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <param name="FileNamePattern" value="/var/lib/tomcat6/logs/sonar.%i.log"/>
      <param name="MinIndex" value="1"/>
      <param name="MaxIndex" value="3"/>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <param name="MaxFileSize" value="5MB"/>
    </triggeringPolicy>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluator name="mavenRepoFileNotFound">
        <expression>message.startsWith("files: File not found: /maven")</expression>
      </evaluator>
      <OnMismatch>NEUTRAL</OnMismatch>
      <OnMatch>DENY</OnMatch>
    </filter>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>
        %d{yyyy.MM.dd HH:mm:ss} %-5level %logger{20} %X %msg%n
      </pattern>
    </layout>
  </appender>

  <!-- appender used to profile Sonar Web Server -->
  <appender name="PROFILING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>/var/lib/tomcat6/logs/profiling.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <param name="FileNamePattern" value="/var/lib/tomcat6/logs/profiling.%i.log"/>
      <param name="MinIndex" value="1"/>
      <param name="MaxIndex" value="3"/>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <param name="MaxFileSize" value="5MB"/>
    </triggeringPolicy>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>
        %d{yyyy.MM.dd HH:mm:ss} %-5level %logger{20} %X %msg%n
      </pattern>
    </layout>
  </appender>

Il est recommandé d'augmenter la mémoire JAVA de Tomcat. Dans le cadre de cette installation, le principe mis en place est de mettre en place un fichier setenv.sh au niveau de Tomcat, comme décrit ici. La configuration mise en place est la suivante.

 export CATALINA_OPTS="-Xms1024m -Xmx1024m -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -XX:MaxPermSize=256m"


Sonar utilise MAVEN pour fonctionner. Par défaut, l'instance est supposée être dans le répertoire .m2 du répertoire home de l'utilisateur lançant le serveur d'application. Afin d'éviter la duplication des informations, du repository maven, un lien symbolique est mis en place pour le fichier settings.xml. Dans l' installation réalisée, un lien /var/opt/maven a été mise en place. Le lien mis en place reflète ce dernier.

#sudo ln -s /var/opt/maven/conf/settings.xml /usr/share/tomcat6/.m2/settings.xml


Au démarrage de l'application, l'erreur suivante a été constatée

Il apparaît clairement un problème d'accès à des fichiers. Les répertoires indiqués sont créés manuellement:

#cd /var/opt/sonar
#mkdir extensions
#cd extensions
#sudo cp -R <UNZIP_FOLDER>/extensions/* ./
#cd /var/opt/sonar
#sudo cp -R <UNZIP_FOLDER>/extras ./
#sudo cp -R <UNZIP_FOLDER>/lib ./
#chown -R tomcat6:tomcat6 *

Icon-database-init.png Initialisation de la base de donnée

Une fois installé, il est nécessaire d'initialiser la base de données. Pour cela, il faut se connecter à l'adresse suivante: http://localhost:8080/sonar/setup


Il faut alors cliquer sur le bouton <Upgrade> pour lancer l'initialisation de la base de données.

Icon ACL.png Sécurité sur fichier de paramétrage

L'application utilise le fichier de configuration sonar.properties, qui est externalisé à partir de la version 2.13, pouvant contenir des données sensibles. Avec l'utilisation du plugin LDAP, le mot de passe du compte d'administration est renseigné, donc potentiellement visible. Il est donc important de positionner des droits d'accès restrictifs. Etant installé sur un serveur Tomcat, le seul compte devant accéder au fichier est celui exécutant le serveur, soit tomcat6.

#sudo chown tomcat6:tomcat6 /var/opt/sonar/conf/sonar.properties
#sudo chmod 640 /var/opt/sonar/conf/sonar.properties


Update icon.png Update

2.4 → 2.8 2.8 → 2.11 2.12 → 2.13.1 2.13.1 → 2.14 2.14 → 3.0
3.0 → 3.0.1 3.0.1 → 3.1 3.1 → 3.1.1 3.1.1 → 3.2 3.2 → 3.3.2
3.3.2 → 3.4 3.4 → 3.4.1 3.4.1 → 3.5 3.5 → 3.5.1 3.5.1 → 3.6
3.6 → 3.6.1 3.6.1 → 3.6.2 3.6.2 → 3.6.3 3.6.3 → 3.7 3.7 → 3.7.1
3.7.1 → 3.7.2 3.7.2 → 3.7.3 3.7.3 → 3.7.4


Ce principe de construction de war ne sera plus explicité après la version 3.7.4. En effet, le script n'est plus fourni. Toutefois, il est encore possible de le faire manuellement, opération expliquée à partir de la version 4.0 de SonarQube, qui est le nouveau nom de l'application.