0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

amazon linux 2にSonarQubeをインストールし、phpを静的コード解析

Last updated at Posted at 2023-02-17

実行環境

  • amazon linux 2 t2.medium
    ※java,esなどを動かすためある程度のスペックが必要です。
    t2.micro, t2.midiumではメモリ不足ですぐにプロセスが殺害されます。。。
    公式ドキュメントにはRAM3GBが最低条件と記載ありましたが、もっと必要かと。

SonarQubeとは

オープンソースの静的解析ツール

私たちの書いたコードを全自動でレビューしてくれて、エラーの可能性や脆弱性のある個所を教えてくれます

主な機能は以下のような感じ

  • 重複コードの検出
  • サイクロマチック数の計測
  • 脆弱性のあるコードの検出
  • バグを誘発しそうなコードの検出
  • 指摘されたissueの管理

APIなどでなく、専用のサーバにインストールして使用するためオンプレ環境などでも利用できるのも利点。

SonarQube構成

公式の画像がとても分かりやすいです。

image.png

専用のsonarqubeサーバを立てて、そこに解析したいコードをリクエストする形ですね。

javaインストール

sonarqubeサーバにはjava17の開発環境(Oracle JRE か OpenJDK)が必要なので入れます。(2023年2月現在)

yum listにもamazon-linux-extrasにも17がないためwgetで入れます。めんどい。

# openjdk取得
$ wget https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.tar.gz

# 圧縮されているのでtar xvfで展開
$ tar xvf openjdk-17_linux-x64_bin.tar.gz

# 展開したフォルダを/optへ移動
$ sudo mv jdk-17 /opt/

# teeコマンドで設定するためのファイルを記述
$ sudo tee /etc/profile.d/jdk.sh <<EOF
#!/bin/sh
export JAVA_HOME=/opt/jdk-17
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

# 設定ファイルを反映させるためsourceコマンドで一度実行
$ source /etc/profile.d/jdk.sh

# 反映されたか確認
$ echo $JAVA_HOME
==> /opt/jdk-17

# インストールされたjavaのバージョン確認
$ java -version
==> openjdk version "17" 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)

# 圧縮ファイルは不要なので削除
$ rm openjdk-17_linux-x64_bin.tar.gz

DBインストール

公式のドキュメントにリストされている対応データベースをインストール。(表にはないですが、mysqlもいけるぽいです。)

今回はPostgresql14をインストールします。サーバがamazonlinux2なのでamazon-linux-extrasつかいます。

# ダウンロードしたいトピックの有効化
$ sudo amazon-linux-extras enable postgresql14

# yumでインストール
$ sudo yum install postgresql postgresql-server

# 自動起動有効化
$ sudo systemctl enable postgresql.service

# postgresユーザにログイン
$ sudo su - postgres

# postgresql初期化
$ initdb --encoding=UTF-8 --no-locale

# postgresqlユーザからログアウト
$ exit

# postgresql.confファイルを編集してpostsqlに接続できるように0.0.0.0をlisten
$ sudo vi /var/lib/pgsql/data/postgresql.conf
<< listen_addresses = '0.0.0.0'
$ sudo vi /var/lib/pgsql/data/pg_hba.conf
<< host    all             all             0.0.0.0/0               md5

# postgresqlを起動
$ sudo systemctl start postgresql

# psqlへ接続しユーザ, データベースを作成
$ psql template1 postgres
$ create user sonar with password 'sonar' createdb;
$ \c template1 sonar
$ create database sonar;
$ exit

SonarQubeインストール

とりあえずsonarqube運用するためのlinuxユーザ作成

$ sudo useradd sonarqube

また前提条件として、sonarqubeを動かすためには以下の条件が必要です。

  • vm.max_map_count (メモリマップ領域の最大数)が524,288以上
  • fs.file-max が131,072以上
  • 131072以上のファイルディスクリプターが扱える
  • 8192以上のスレッドが扱える

以上を満たすためにOSのパラメータを編集します。


# カーネルパラメータを調整
$ sudo vi /etc/sysctl.d/99-sonarqube.conf
<< fs.file-max=65536
vm.max_map_count=262144

# Ulimitを設定
$ sudo vi /etc/security/limits.d/99-sonarqube.conf
<< sonarqube   -   nofile   65536
sonarqube   -   nproc    2048

# OSを再起動して変更したカーネルパラメータを反映
$ sudo shutdown -r now

sonarqubeをダウンロード

※ダウンロードソースは公式のDistributionsから適切なバージョンを選択して入れてください。ここでは執筆現在の最新の9.9.0を入れます。

# wgetコマンドでsonarqubeのzipファイル取得
$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip -O /tmp/sonarqube.zip

# ダウンロードしたzipファイルの解凍
$ unzip /tmp/sonarqube.zip

# 解凍したsonarqubeを/usr/localへ移動(これはsonarqubeユーザが使用するため/optでなく/usr/local)
$ sudo mv sonarqube-9.9.0.65466 /usr/local/

# unixベースのシステムではsonarqubeをrootユーザでは実行できないのでsonarqubeユーザに権限を変更
$ sudo chown -R sonarqube:sonarqube /usr/local/sonarqube-9.9.0.65466/

sonarqubeが先ほどインストールしたpostgresqlに接続するように設定

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?