Full installation in 5 steps

Step 1 - Create database

Apache Derby is embedded by default with Sonar. It does not need any installation. It's great for demos and tests but we advice you to use a robust database for real use. The following are currently supported : MySQL 5.x, Oracle 10g XE, Postgresql and MS SqlServer 2005. It may work on other versions.

To use one of the external database, it is necessary to explicitly set up the initial database schema and permissions. Tables and indexes will then be automatically created when launching Sonar for the first time. Example scripts for setting MySQL up can be found in extras/database/mysql

Step 2 - Install server

Step 3 - Configure database

If you do not use the default embedded database, edit conf/sonar.properties to configure the database access. Templates are available for every supported database. Just uncomment them and comment the first four lines dedicated to derby.

sonar.jdbc.url : the URL of the database

sonar.jdbc.driver : the class of the driver

sonar.jdbc.user : the username (default value is 'sonar')

sonar.jdbc.password : the password (default value is 'sonar')

Example for MySQL :

For Oracle, copy the JDBC driver to /extensions/jdbc-driver/[YOUR DATABASE]/. Other drivers for supported database are already provided.

Step 4 - Start server

Mode 1 - Start the standalone application

The default listen port is 9000, the default context path is / and Sonar listens by default to all network interfaces : '0.0.0.0'. Once launched, the Sonar web server is available on http://localhost:9000. Parameters can be changed into the file conf/sonar.properties. Here is an example to listen to http://localhost:80/sonar :

Execute the following script to start the server :

on linux/mac : bin/[YOUR PLATEFORM]/sonar.sh start

on windows : bin/windows-x86-32/StartSonar.bat

Note that you can also run as a NT service with bin/windows-x86-32/InstallNTService.bat then bin/windows-x86-32/StartNTService.bat

Prior to Sonar 1.9, it was necessary to follow setup instructions. From 1.9 setup is run automatically on a fresh installation when launching the server.

Mode 2 - Deploy on Tomcat application server

Sonar can be packaged as a WAR then deployed into an existing JEE application server. To use this method of installation, you must already know how to deploy a web application on the application server of choice. The only supported JEE application servers are Tomcat 5.x, 6.x and 7.x.

Installation steps are :

edit conf/sonar.properties as described in standalone mode. The file conf/wrapper.conf is never used when deploying to application server.

execute the script build-war.sh (or build-war.bat on MS Windows) from the directory war/

Step 5 - Configure Maven

Sonar uses a Maven plugin to analyze sources and to inject measures into the database. That's why database properties must be defined into the Maven configuration. Edit settings.xml file, located into $MAVEN_HOME/conf or ~/.m2, and add the parameters from step 3.

If data collection and server are on different boxes, set the server host with the property 'sonar.host.url'.

Example :

Icon

Warning : With Sonar 2.2, the property sonar.host.url MUST NOT end with a slash character. Otherwise, JDBC driver is not found by the Sonar Maven plugin. See SONAR-1685.

It is recommended to increase the Java heap memory. It avoids getting OutOfMemoryError failures. Set the MAVEN_OPTS environment variable :

Run as a service

MS Windows

Install/uninstall NT service :

Start/stop the service :

Linux

The following has been tested on Ubuntu 8.10.

Create the file /etc/init.d/sonar with this content :

Register Sonar at boot time :

Before version 2.2 : declare the Sonar Maven Repository inside Nexus

Icon

This additional configuration is not required anymore since version 2.2.

The Sonar Maven plugin has multiple runtime dependencies on for instance jdbc driver to use, checkstyle or pmd extensions, etc ... To keep Sonar installation simple and avoid Sonar users to manually deploy all those dependencies on their own Maven repository, Sonar server embeds its own repository. This repository can be reached at the following URL : http://yoursonar:sonarport/deploy/maven/README.txt. By default, you don't have to change anything and the Sonar Maven plugin uses the "sonar.host.url" property to know where is located this repository.

If a Maven mirror is defined in your company like the following one :

and you don't want to change this configuration to exclude Sonar Maven Repository from this mirroring mechanism, here is the way you need to configure your Nexus repository manager to declare the Sonar Maven Repository :

2- Add this newly created repository to your public group of repositories.

3- No more to do except launching the Sonar Maven plugin on a project to check your new configuration.

Note for Nexus 1.6

Icon

The auto blocking feature of Nexus 1.6 must be deactivated on the Sonar proxy. This issue is fixed since Sonar 2.1.

Note

Icon

The status of this repository inside Nexus will remain "In Service - Checking remote ...". This issue is fixed since Sonar 1.9.

Running Sonar behind a Proxy

This section helps you configure Sonar if you want to run Sonar behind a proxy. This can be done for security concerns or to consolidate multiple disparate applications.

Running Sonar behind an Apache Proxy

We assume that you've already installed Apache 2 with module mod_proxy, that you are using a Virtual Host for www.somecompany.com and that Sonar is running and available on http://sonahost:sonarport/.

At this point, edit the HTTPd configuration file for the www.somecompany.com virtual host. Include the following to expose Sonar via mod_proxy at http://www.somecompany.com/ :

By default, mod_proxy uses HTTP protocol to communicate with the Sonar instance. For performance concerns, you might prefer using the AJP13 protocol. This protocol is packet-oriented. A binary format is chosen over the more readable plain text for reasons of performance. To cut down on the expensive process of socket creation, the web server will attempt to maintain persistent TCP connections to the servlet container, and to reuse a connection for multiple request/response cycles.

If you want to use this AJP13 protocol you must to activate the mod_proxy_ajp module and then edit the sonar.properties configuration file and uncomment the sonar.ajp13.port property :

Once this done, edit the HTTPd configuration file for the www.somecompany.com virtual host and make the following changes :

Apache configuration is going to vary based on your own application's requirements and the way you intend to expose Sonar to the outside world. If you need more details about Apache HTTPd, mod_proxy and mod_proxy_ajp, please see http://httpd.apache.org.

Running Sonar behind Nginx

We assume that you've already installed Nginx, that you are using a Virtual Host for www.somecompany.com and that Sonar is running and available on http://sonahost:sonarport/.

Nginx configuration is going to vary based on your own application's requirements and the way you intend to expose Sonar to the outside world. If you need more details about Nginx, please see http://nginx.org.