Sonar sous Apache

De EjnTricks

Cet article présente la configuration mise en place sur un serveur Apache pour une instance de Sonar.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Configuration-icon.png Configuration simple

La première configuration mise en place a été réalisée sur un serveur Apache simple, à savoir qu'il était utilisé pour un seul site. Dans ce cas, et pour une installation sous Ubuntu, les paramètres ont été mis en place dans le fichier /etc/apache2/httpd.conf.

ProxyPass /sonar http://localhost:8080/sonar
ProxyPassReverse /sonar http://localhost:8080/sonar

<Proxy http://localhost:8080/sonar>
  Order allow,deny
  Allow from all
</Proxy>

Dans ce cas, toutes requêtes sur /sonar seront redirigées vers l'application Sonar hébergée sur un Tomcat en local.


Configuration-icon.png Configuration pour un domaine spécifique

Au fil du temps, le serveur Apache a été enrichi sur la machine, afin de servir différents domaine. La première configuration mise en place rendait l'application disponible sur l'ensemble des domaines, chose qui n'était pas souhaitée. La configuration dans le fichier /etc/apache2/httpd.conf a été déplaçée dans le fichier de configuration du domaine souhaité, à savoir /etc/apache2/sites-enabled/002-dev.conf, pour le domaine dev.jouvinio.net

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/default
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/default>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                # Old configuration for APACHE 2.2
                # Order allow,deny
                # allow from all
                Require all granted
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                # Old configuration for APACHE 2.2
                # Order allow,deny
                # Allow from all
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass /sonar http://localhost:8080/sonar
        ProxyPassReverse /sonar http://localhost:8080/sonar
        <Proxy http://localhost:8080/sonar>
                Order allow,deny
                Allow from all
        </Proxy>

</VirtualHost>

Ainsi l'application Sonar ne sera disponible que pour ce domaine.

Update icon.png SonarQube en service

Suite à l'installation de la version 4.4, où la construction de war est abandonnée, l'application est démarré dans son propre contexte. N'étant plus sous Tomcat, la configuration Apache doit être modifiée. Par défaut, le numéro de port est 9000.

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/default
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/default>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                # Old configuration for APACHE 2.2
                # Order allow,deny
                # allow from all
                Require all granted
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                # Old configuration for APACHE 2.2
                # Order allow,deny
                # Allow from all
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass /sonar http://localhost:9000/sonar
        ProxyPassReverse /sonar http://localhost:9000/sonar
        <Proxy http://localhost:9000/sonar>
                Order allow,deny
                Allow from all
        </Proxy>

</VirtualHost>

Attention, il est nécessaire de spécifier le contexte d'exécution pour SonarQube en modifiant la variable sonar.web.context dans le fichier de configuration sonar.properties, comme explicité lors de son installation. Dans cet exemple, le lien mis en place est du type http://SERVEUR/sonar, le contexte doit être sonar.


Pour le premier cas présenté dans cet article, la configuration devient la suivante.

ProxyPass /sonar http://localhost:9000/sonar
ProxyPassReverse /sonar http://localhost:9000/sonar

<Proxy http://localhost:9000/sonar>
  Order allow,deny
  Allow from all
</Proxy>


Warning-icon.png Version 5.4

Lors de la sortie de la version 5.4, installation en service, le paramètre sonar.web.context a été supprimé de la configuration. Il n'est donc plus possible de spécifier un contexte root pour l'application. Ceci peut être problématique lorsque l'application est déployée dans le même domaine que d'autres applications, mais la configuration Apache doit être revue ainsi.

ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/

<Proxy http://localhost:9000/>
  Order allow,deny
  Allow from all
</Proxy>

A noter qu'un retour arrière est prévu pour la version suivante.