SonarQubeでプログラムの品質管理をはじめる（インストール）

## 記載する予定のもの
* [概要](http://qiita.com/sh-ogawa/items/fac0eca110c3558dfae9)
* インストール方法(CentOS 7にSonarQubeを立ち上げる)（今回）
* [Maven、Jenkinsを使用してCIに組み込む](http://qiita.com/sh-ogawa/items/120b3c0eef93e48a862a)
* SonarQubeで行った品質レポートの見方
* SonarQubeのバージョンアップ方法

前回、
[SonarQubeでプログラムの品質管理をはじめる（概要）](http://qiita.com/sh-ogawa/items/fac0eca110c3558dfae9)
でSonarQubeの概要に触れました。
今回はSonarQUbeのインストールをして、SonarQubeのWEBページが開くところまでを書きます。

# インストール環境
OSはCentOS 7(minimal)を使います。
CentOS 7の立ち上げ方は以下を参照してください。

[CentOS7のインストール方法](http://qiita.com/sh-ogawa/items/9eddd56ee9b4ae7cb1fd)

# インストール
## 入れるもの
* SonarQube 5.1
* MySQL5.6
* Java jdk 1.8

## 補足
Linux + SonarQube5.1でインストール手順を書きますが、
バイナリインストールのため、SonarQubeのバージョンが上がっても方法は変わりません。
また、Windows環境へのインストールについても、
環境変数の設定周りをWindowsの方法で置き換えてあげればインストールをできるはずです。

## インストール手順

1. Javaのインストール
<br>以下のコマンドでjdkをダウンロード

```lang:コマンド
# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz"
```
ダウンロードが終わったら"/usr/local/java"にファイルを移動し、解凍します。

```lang:コマンド
# tar xvf jdk-8u45-linux-x64.tar.gz
```
シンボリックリンクを当てておきます。

```lang:コマンド
# ln -s jdk1.8.0_45 latest
```
環境変数にJAVA_HOMEを設定します。
/etc/profile.dにjavaenv.shとjavaenv.cshを作成し中身は以下とします。

```lang:javaenv.sh
export JAVA_HOME=/usr/local/java/latest
export PATH=$PATH:$JAVA_HOME/bin
```

```lang:javaenv.csh
setenv JAVA_HOME=/usr/local/java/latest
setenv PATH=$PATH:$JAVA_HOME/bin
```
　
2. MySQLのインストール
<br>MySQLはyumでサクッとインストールしてしまいます。

```lang:コマンド
# yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum -y install mysql-community-server
# chown -R mysql:mysql /var/lib/mysql/*
# chkconfig mysqld on
```
　
3. SonarQubeのインストール
<br>以下のコマンドでダウンロードします。

```lang:コマンド
# wget "http://dist.sonar.codehaus.org/sonarqube-5.1.zip"
```
ダウンロードが終わったらファイルを"/usr/local/sonarqube"に移動して解凍します。

```lang:コマンド
# unzip sonarqube-5.1.zip
シンボリックリンクも当てておきます。
# ln -s sonarqube-5.1 sonar
```

環境変数にSONAR_HOMEを設定します。
/etc/profile.dにsonarenv.shとsonarenv.cshを作成し中身は以下とします。

```lang:sonarenv.sh
export SONAR_HOME=/usr/local/sonarqube/sonar
export PATH=$PATH:$SONAR_HOME/bin/linux-x86-64
```

```lang:sonarenv.csh
setenv SONAR_HOME=/usr/local/sonarqube/sonar
setenv PATH=$PATH:$SONAR_HOME/bin/linux-x86-64
```
mysqlを使用するようにSonarの設定を書き換えます。
"/usr/local/sonarqube/sonar/conf/sonar.properties"を編集します。

```lang:sonar.properties
以下プロパティのコメントを削除して有効にする。
sonar.jdbc.username
sonar.jdbc.password
sonar.jdbc.url
```

serviceから起動できるように、"/usr/local/sonarqube/sonar/conf/wrapper.conf"を編集します。

```lang:wrapper.conf
wrapper.java.command=java を以下に変更
wrapper.java.command=/usr/local/java/latest/bin/java
```

SonarQubeをサービスに追加して、自動起動の登録をします。

```lang:コマンド
# ln -s /usr/local/sonarqube/sonar/bin/linux-x86-64/sonar.sh /etc/init.d/sonar
# chkconfig --add sonar
# chkconfig sonar on

```

4. ファイアウォールの設定
すべてdefaultなので以下のポートに穴を開けます。

|ソフト|ポート|
|:--:|:--:|
|MySQL|3306|
|SonarQube|9000|

```lang:コマンド
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
```
　
5. MySQLにユーザ作成
MySQLにsonar用のユーザを作成します。
mysqlのrootユーザでMySQLにログインして以下のコマンドを実行します。

```lang:コマンド
CREATE DATABASE sonar;
CREATE USER 'sonar'@'localhost' IDENTIFIED by 'sonar';
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
FLUSH PRIVILEGES;
```
色々と変えたのでLinuxを再起動しなおします。
再起動したら、ブラウザから以下にアクセスすればSonarQubeのトップページが開きます。
トップページが表示されればインストールは完了です。

```lang:URL
http://{SonarQUbeをインストールした端末のIPアドレス}:9000
```

以下のような画面が出ます。
![sonar-top-page.png](https://qiita-image-store.s3.amazonaws.com/0/56851/95b5669b-60dd-b6ac-787e-e019e473bba4.png)

# 追記（2018/7/23）
なんか、chkconfigから外れて起動しなくなった。
> service sonar does not support chkconfig

## 環境
Amazon Linux AMI
sonarqube-6.3.1

## 対処方法
このページ、CentOSで説明してるけど、同じ症状出て詰まったら、試してみてください。

/etc/ini.d/sonarの先頭に以下を追加

```
#! /bin/sh
# chkconfig: 345 98 20
# description: start SonarQUbe
# processname: sonar
```

あとは、

```
# chkconfig --add sonar
# chkconfig sonar on
# service sonar start
```
すればOK