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++相关配置:
- 选择质量配置,点击创建
- 选择 创建空质量配置 ,语言选择 CXX 名称 C++Plugin(自定义)
- 点击更多激活规则
- 选择批量修改,选择激活C++Plugin
- 点击应用
- 关闭窗口,回到质量配置,设置CXX默认配置
- 在配置处,设置C++分析文件的后缀
PDF相关配置以及报告下载:
- 配置访问用户名和密码,用户名和密码为登录的管理员的用户密码,在初始未修改密码的情况下用户名和密码都为:admin;(若是用户密码错误,在分析时则会出现401的错误提示)
- PDF报告下载,选择项目,点击一个项目,在PDF插件安装成功后,在活动后会有一个更多选项,在此进行下载
- 点击下载
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
可使用两种方式进行代码检测
网页新增项目:
- 新增项目,选择手动
- 设置显示名和项目标识
- 点击本地
- 创建令牌,分析项目
- 根据项目环境选择操作系统,在需要分析的项目目录下执行框选的命令
- 项目中进行扫描
- 之后在web端就能够看到分析结果
使用配置文件 sonar-project.properties
- 在项目根目录创建文件
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
- 执行命令
sonar-scanner -X
- 成功执行后,在web端就能看到结果