在Amazon Linux 2上安装SonarQube,对PHP进行静态代码分析
执行环境
-
- amazon linux 2 t2.medium
-
- ※java,esなどを動かすためある程度のスペックが必要です。
-
- t2.micro, t2.midiumではメモリ不足ですぐにプロセスが殺害されます。。。
- 公式ドキュメントにはRAM3GBが最低条件と記載ありましたが、もっと必要かと。
SonarQube是什么?
开源的静态分析工具
自动审查我们编写的代码,并指出潜在错误和可能存在漏洞的地方。
以下是主要功能的概述。
-
- 重複コードの検出
-
- サイクロマチック数の計測
-
- 脆弱性のあるコードの検出
-
- バグを誘発しそうなコードの検出
- 指摘されたissueの管理
不需要使用API等,可以安装在专用服务器上并在本地环境中使用,这也是它的优点之一。
SonarQube的配置
公式的图像非常容易理解。
搭建一个专用的 SonarQube 服务器,并向其发送要分析的代码请求。
安装Java
因为在SonarQube服务器上需要安装Java 17的开发环境(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
安装数据库
安装在公式文档中列出的支持的数据库(虽然没有列在表中,但似乎也支持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的安装
首先,需要创建一个Linux用户以便运行SonarQube。
$ sudo useradd sonarqube
另外,在运行SonarQube之前,需要满足以下条件。
vm.max_map_count (メモリマップ領域の最大数)が524,288以上
fs.file-max が131,072以上
131072以上のファイルディスクリプターが扱える
8192以上のスレッドが扱える
为了满足以上要求,需要编辑操作系统的参数。
# カーネルパラメータを調整
$ 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
请从官方发行版中选择合适的版本并进行下载安装。在此,我们将安装当前最新版本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。