在Amazon Linux 2上安装SonarQube,对PHP进行静态代码分析

执行环境

    • amazon linux 2 t2.medium

 

    • ※java,esなどを動かすためある程度のスペックが必要です。

 

    • t2.micro, t2.midiumではメモリ不足ですぐにプロセスが殺害されます。。。

 

    公式ドキュメントにはRAM3GBが最低条件と記載ありましたが、もっと必要かと。

SonarQube是什么?

开源的静态分析工具

自动审查我们编写的代码,并指出潜在错误和可能存在漏洞的地方。

以下是主要功能的概述。

    • 重複コードの検出

 

    • サイクロマチック数の計測

 

    • 脆弱性のあるコードの検出

 

    • バグを誘発しそうなコードの検出

 

    指摘されたissueの管理

不需要使用API等,可以安装在专用服务器上并在本地环境中使用,这也是它的优点之一。

SonarQube的配置

公式的图像非常容易理解。

image.png

搭建一个专用的 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。

广告
将在 10 秒后关闭
bannerAds