Quick Overview of Sonar
A Sonar instance is a set of three modules:
- Client: it is a batch that computes data (measures, violations, etc.) by analyzing source code. The Client then populates the database with those data. The Client is launched by an analyzer.
- Database that stores the data computed by the Client.
- Sonar Server that displays the web interface to browse the projects data stored in the database.
Prior to the installation, check the requirements.
Download and unzip the distribution.
Apache Derby is shipped 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. See the supported platforms for more information.
To use one of the external databases, 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.
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.
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 OS : bin/<YOUR OS>/sonar.sh start
- On MS Windows : bin/windows-x86-32/StartSonar.bat
- Read "Install on AIX, HPUX or Solaris" for other platforms
Note that you can also run as a NT service with bin/windows-x86-32/InstallNTService.bat then bin/windows-x86-32/StartNTService.bat
You can now browse to http://localhost:9000.
Mode 2 - Deploy on JEE Server
Sonar can be packaged as a WAR then deployed into an existing JEE server. To use this method of installation, you must already know how to deploy a web application on the application server of choice. The supported servers are Tomcat 5.x, 6.x, 7.x and Jetty 6.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/
- Deploy war/sonar.war to the application server
- Browse to http://localhost/sonar and follow setup instructions
Prior to Sonar 2.2, the WAR file must be rebuilt each time the configuration is updated (new plugins or new extensions).
From Sonar 2.2 onwards, the WAR file is now linked to the Sonar directory (the directory where the distribution is unzipped). It implies that :
- the directory where the distribution is unzipped cannot be removed
- there is no need to rebuild the WAR when installing/uninstalling plugins or rule extensions
- the WAR file must be deployed on the host which contains the Sonar directory
- the WAR file must be rebuilt when the Sonar directory is moved
the WAR file must be rebuilt when a configuration file is updated (directory conf/)
More details on this blog.
Mode 3 - Run as a service on MS Windows
Install/uninstall NT service (may have to run these batch files via "Run As Administrator"):
Start/stop the service :
Mode 4 - Run as a service on Linux
The following has been tested on Ubuntu 8.10 and CentOS 6.2.
Create the file /etc/init.d/sonar with this content :
Register Sonar at boot time (Ubuntu, 32 bit):
Register Sonar at boot time (RedHat, CentOS, 64 bit):
The Client can be launched by 3 different kinds of analyzer:
- Sonar Runner: recommended for non-Java projects, see installation and configuration guide.
- Maven: recommended for Java projects built with Maven, see installation and configuration guide.
- Ant Task: recommended for Java projects built with Ant, see installation and configuration guide.
To run Sonar behind a proxy, browse this page.