CentOS 7にソースコードの静的解析を行う『SonarQube』をインストールする

JavaやC、PHPやPythonなど複数言語のソースを統合管理できるツール『SonarQube』なるものを知ったので、試しにCentOS 7にインストールしてみることにする。
『SonarQube』については、以下の概要が詳しい。

なお、すでにSELinux/Firewalldについては停止・無効化しているものとする。

1.前提パッケージの導入

『SonarQube』では、JavaとPostgreSQL(MariaDBはサポート外だが、MySQLも利用できる)を使うのでそれらを導入する。 まず、以下のコマンドでJava1.8のインストールを行う。

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.rpm"
rpm -ihv jdk-8u112-linux-x64.rpm

次に、以下のコマンドでPostgreSQLのインストールを行う。

rpm -ihv https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
yum -y group install "PostgreSQL Database Server 9.5 PGDG"
/usr/pgsql-9.5/bin/postgresql95-setup initdb
systemctl start postgresql-9.5
systemctl enable postgresql-9.5

PostgreSQLのインストール後、以下のコマンドでSonarQubeで使うユーザおよびデータベースを作成する。

sudo -u postgres psql -c "
    create user sonar;
    alter role sonar with createdb;
    alter user sonar with encrypted password 'P@ssw0rd';
"
sudo -u postgres psql -c "create database sonar owner sonar;"
sudo -u postgres psql -c "
    grant all privileges on database sonar to sonar;
    alter user postgres password 'P@ssw0rd';
"
sed -e '/^#/! s/ident/md5' \
    -e '/^#/! s/peer/md5' \
    -i.bk /var/lib/pgsql/9.5/data/pg_hba.conf
systemctl restart postgresql-9.5

2.SonarQube 6.1のインストール

次に、SonarQubeのインストールを行う。
以下のコマンドでSonarQubeのダウンロードと配置をする。

mkdir -p /usr/local/sonarqube
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.1.zip -O /usr/local/sonarqube/sonarqube-6.1.zip
unzip /usr/local/sonarqube/sonarqube-6.1.zip -d /usr/local/sonarqube/
ln -s /usr/local/sonarqube/sonarqube-6.1 /usr/local/sonarqube/sonar

次に、設定ファイルにSonarQubeのDB接続情報を記述する。
項目はすべてコメントアウトされているので、sedで書き換えてやる。

sed -e '/^#sonar.jdbc.username/c sonar.jdbc.username=sonar' \
    -e '/^#sonar.jdbc.password/c sonar.jdbc.password=P@ssw0rd' \
    -e '/^#sonar.jdbc.url=jdbc:postgresql:\/\/localhost\/sonar/s/^#//' \
    -i.bk /usr/local/sonarqube/sonar/conf/sonar.properties

設定ファイル編集後、以下のコマンドでSonarQubeを起動する。

/usr/local/sonarqube/sonar/bin/linux-x86-64/sonar.sh start
[root@BS-PUB-WEBTOOL-TEST01 ~]# /usr/local/sonarqube/sonar/bin/linux-x86-64/sonar.sh status
SonarQube is running (5892).

これでインストール完了。
最後に、自動起動設定をしておく。

useradd sonar
chown -R sonar. /usr/local/sonarqube/
cat <<EOF > /etc/systemd/system/sonar.service
[Unit]
Description=SonarQube
After=network.target network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/sonarqube/sonar/bin/linux-x86-64/sonar.sh start
ExecStop=/usr/local/sonarqube/sonar/bin/linux-x86-64/sonar.sh stop
ExecReload=/usr/local/sonarqube/sonar/bin/linux-x86-64/sonar.sh restart
Type=forking
User=sonar

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable sonar
systemctl start sonar

これでインストールは完了。

3.ブラウザからアクセスする

Webコンソール用に9000番ポートが開いているので、そこからアクセスする。

無事、アクセスすることができた。
本来は単体で利用するものではなく、CIなどと組み合わせて利用するものなので、次回以降にそのあたりに触れていきたい。

なお、右上のログインから初期ID/PW(admin/admin)でログインすることで、アドオンなどをインストールすることができる。