SonarQube-9.9 LTS 部署说明

发布时间 2023-07-07 14:15:57作者: 啊啊啊啊啊啊贵

SonarQube-9.9 LTS 部署说明

前置准备

  • SonarQube 9.9 LTS 软件包
  • soanr-scanner 扫描仪
  • JAVA 环境(根据官方要求,选择了JDK17)
  • 数据库环境(根据官方要求,选择了postgresql 15)

Linux 部署

Step 0: 增加 vm.max_map_count 内核,执行以下命令

sudo sysctl vm.max_map_count=524288
sudo sysctl fs.file-max=131072
sudo ulimit -n 131072
`sudo ulimit -u 8192`

要增加vm.max_map_count内核,请永久性地使用文件描述符和ulimit。打开下面的配置文件并插入下面的值,

sudo nano /etc/security/limits.conf
sonarqube   -  nofile  131072
sonarqube   -  nofile  8192

Step 1: 安装 OpenJDK 17

正式安装前先更新一下系统并安装依赖工具,执行以下命令:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install wget unzip -y

执行以下命令安装 OpenJDK and JRE 17(一般执行完第一条指令 jre 也会顺带安装好):

sudo apt-get install openjdk-17-jdk -y 
sudo apt-get install openjdk-17-jre -y

若系统中有多个 JDK 版本,需要设置该版本为默认版本,执行以下命令

sudo update-alternatives --config java

OUTPUT:

Selection Path Priority Status


0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 auto mode

1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode

*2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode

输入: 2 ,选择OpenJDK 17

检查JDK版本:

java -version

OUTPUT:

openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment (build 17.0.7+7-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 17.0.7+7-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Step 2: 安装和设置 PostgreSQL

执行以下命令添加和下载 PostgreSQL

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

使用以下命令安装PostgreSQL数据库服务器

sudo apt-get -y install postgresql postgresql-contrib

可以使用一下命令查看版本

pg_config | grep VERSION

OUTPUT:

VERSION = PostgreSQL 15.3 (Ubuntu 15.3-1.pgdg20.04+1)

启动 PostgreSQL 数据库服务

sudo systemctl start postgresql

设置开机自启数据库

sudo systemctl enable postgresql

修改 PostgreSQL 默认用户的密码

sudo passwd postgres

切换到 postgres 用户

su - postgres

创建一个新的用户

createuser sonar

进入 PostgreSQL shell

psql

为Sonar Qube数据库的新创建用户设置密码(注意分号不要遗漏)

ALTER USER sonar WITH ENCRYPTED password 'sonar';

通过运行以下命令为PostgreSQL数据库创建一个新数据库

CREATE DATABASE sonarqube OWNER sonar;

授予 sonar 用户在 sonarqube 数据库上的所有权限

grant all privileges on DATABASE sonarqube to sonar;

退出 psql shell

\q

通过运行exit命令切换回sudo用户

exit

Step 3: 安装 SonarQube

若没有安装包则先进行下载,有则跳过此步,执行以下命令

cd /tmp
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip

解压到 /opt 目录下,

unzip sonarqube-9.9.0.65466.zip -d /opt

将提取的安装程序移动到 /opt/sonarqube 目录

sudo mv /opt/sonarqube-9.9.0.65466 /opt/sonarqube

Step 4: 配置 SonarQube

创建组和用户

创建组 sonar

sudo groupadd sonar

添加用户访问权限

sudo useradd -c "user to run SonarQube" -d /opt/sonarqube -g sonar sonar
sudo chown sonar:sonar /opt/sonarqube -R

打开SonarQube配置文件并进行配置 (键入CTRL+X保存并关闭文件)

sudo nano /opt/sonarqube/conf/sonar.properties

找到下面两行:

#sonar.jdbc.username=
#sonar.jdbc.password=

修改成如下状态

#--------------------------------------------------------------------------------------------------
# IMPORTANT:
# This file will *not* be reloaded upon hitting the "Restart" button in the UI, or using the
# api/system/restart endpoint.
# In order for any change made to this file to be taken into account, you must perform a full
# restart of the main SonarQube service.
#--------------------------------------------------------------------------------------------------

# Property values can:
# - be overridden by environment variables. The name of the corresponding environment variable is the
#   upper-cased name of the property where all the dot ('.') and dash ('-') characters are replaced by
#   underscores ('_'). For example, to override 'sonar.web.systemPasscode' use 'SONAR_WEB_SYSTEMPASSCODE'.
# - be encrypted. See https://docs.sonarqube.org/latest/instance-administration/security/#settings-encryption

#--------------------------------------------------------------------------------------------------
# DATABASE
#
# IMPORTANT:
# - The embedded H2 database is used by default. It is recommended for tests but not for
#   production use. Supported databases are Oracle, PostgreSQL and Microsoft SQLServer.
# - Changes to database connection URL (sonar.jdbc.url) can affect SonarSource licensed products.

# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

启动 SonarQube

切换到 soanr 用户

sudo su sonar

移动到脚本目录

cd /opt/sonarqube/bin/linux-x86-64

运行启动脚本

./sonar.sh start

OUTPUT:

Starting SonarQube...
Started SonarQube

这个时候就已经启动了可以通过打开 http://localhost:9000 查看是否成功启动

检查 SonarQube 运行状态

./sonar.sh status

OUTPUT:

SonarQube is running (9490).

要检查sonarqube日志,请导航到/opt/sonarqube/logs/sonar.log目录

tail /opt/sonarqube/logs/sonar.log

通过检查状态和查看日志可以看到 SonarQube 的运行状态

配置 Systemd 服务

首先停止 SonarQube

cd /opt/sonarqube/bin/linux-x86-64
./sonar.sh stop

为Sonar Qube创建一个systemd服务文件,以作为系统启动运行

sudo nano /etc/systemd/system/sonar.service

添加以下内容:

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking

ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop

User=sonar
Group=sonar
Restart=always

LimitNOFILE=131072
LimitNPROC=8192

[Install]
WantedBy=multi-user.target

保存和关闭文件之后,通过执行以下命令启动Sonarqube守护程序:

sudo systemctl start sonar

启用声纳Qube服务,以便在系统启动时自动启动

sudo systemctl enable sonar

检查sonarqube服务是否正在运行

sudo systemctl status sonar

进入 SonarQube

要使用浏览器访问Sonar Qube,请键入服务器IP,然后键入端口9000

http://server_IP:9000 OR http://localhost:9000

使用默认管理员用户名登录Sonar Qube,用户密码都为admin

添加插件并配置


soanr-cxx-plugin-2.1.1.488.jar(C++插件),sonar-pdfreport-plugin-4.0.1.jar(PDF报告插件),soanr-l10n-zh-plugin-9.9.jar(中文插件),
放到 /opt/sonarqube/extensions/plugins 目录下

执行以下命令重启SonarQube服务

重启后中文插件直接生效

sudo systemctl restart sonar

重新进入网页端进行配置

C++相关配置:

  1. 选择质量配置,点击创建
    1688699182884
  2. 选择 创建空质量配置 ,语言选择 CXX 名称 C++Plugin(自定义)
    1688699272873
  3. 点击更多激活规则
    1688699428442
  4. 选择批量修改,选择激活C++Plugin
    1688699507911
  5. 点击应用
    1688699569886
  6. 关闭窗口,回到质量配置,设置CXX默认配置
    1688699643511
    1688699758838
  7. 在配置处,设置C++分析文件的后缀
    1688699879031

PDF相关配置以及报告下载:

  1. 配置访问用户名和密码,用户名和密码为登录的管理员的用户密码,在初始未修改密码的情况下用户名和密码都为:admin;(若是用户密码错误,在分析时则会出现401的错误提示)
    1688700082794
  2. PDF报告下载,选择项目,点击一个项目,在PDF插件安装成功后,在活动后会有一个更多选项,在此进行下载
    1688700387486
  3. 点击下载
    1688700425781

Step 5: 使用Sonar-Qube进行代码检测

soanr-scanner 安装,执行以下命令(创建链接)

sudo unzip sonar-scanner-cli-4.8.0.2856-linux.zip -d /opt
sudo mv /opt/sonar-scanner-4.8.0.2856-linux /opt/sonar-scanner
sudo ln -s /opt/sonar-scanner/bin/* /usr/local/bin

可使用两种方式进行代码检测

网页新增项目:

  1. 新增项目,选择手动
    1688700711949
  2. 设置显示名和项目标识
    1688700790182
  3. 点击本地
    1688700825140
  4. 创建令牌,分析项目
    1688700881308
    1688700900268
  5. 根据项目环境选择操作系统,在需要分析的项目目录下执行框选的命令
    1688701033452
  6. 项目中进行扫描
    1688701197019
    1688701217989
  7. 之后在web端就能够看到分析结果
    1688707743342

使用配置文件 sonar-project.properties

  1. 在项目根目录创建文件 sonar-project.properties,并写入如下内容
  #sonarqube服务器地址(我这里是本地)
  sonar.host.url=http://192.168.30.123:9000
  #sonarqube用户名
  sonar.login=admin
  #sonarqube密码
  sonar.password=admin
  #项目唯一标识(不能出现重复)
  sonar.projectKey=test4
  #项目名称
  sonar.projectName=test4
  #源代码目录
  sonar.sources=.
  #版本号
  sonar.projectVersion=1.0
  #源代码文件编码
  sonar.sourceEncoding=UTF-8
  #排除文件,未安装 Node.js,将 TypeScript 文件排除,不进行分析
  sonar.exclusions=**/*.ts
  #PDF Username
  sonar.pdf.username=admin
  #PDF Password
  sonar.pdf.password=admin
  1. 执行命令 sonar-scanner -X
    1688708465923
  2. 成功执行后,在web端就能看到结果