SonarQube安装配置202202

本文档详述了如何在Linux环境下安装配置SonarQube 8.9.7 LTS,包括卸载旧版JDK,安装JDK11,下载并解压SonarQube,安装PostgreSQL12,创建SonarQube数据库,配置sonar.properties文件,设置日志目录,修改系统限制,启动SonarQube服务。同时,还介绍了sonar-scanner的安装配置步骤,包括下载、解压、配置项目参数及扫描代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SonarQube安装配置

说明

从7.9开始SonarQube便不在支持mysql,网上很多教程都是基于mysql的,现在已不适用!

SonarQube数据库只支持PostgreSQL、Oracle和MS SQLSERVER

本篇文档基于PostgreSQL12

注:SonarQube为静态代码扫描工具,只能扫描代码中存在的问题,而不会扫描代码如何执行业务逻辑!请知悉!

安装JDK11

SonarQube8.9.7和sonar-scanner需要安装JDK,oracle JRE11或者openjdk11,

# 查询已安装的JDK
rpm -qa | grep openjdk
java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
java-1.8.0-openjdk-headless-1.8.0.312.b07-1.el7_9.x86_64

# 卸载旧版本的JDK
rpm -e java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
rpm -e java-1.8.0-openjdk-headless-1.8.0.312.b07-1.el7_9.x86_64

# 安装openjdk11,需要EPEL源
yum install -y epel-release

# 安装openjdk11并验证
yum install java-11-openjdk.x86_64
java -version
openjdk version "11.0.14" 2022-01-18 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.14+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.14+9-LTS, mixed mode, sharing)

下载SonarQube8.9.7LTS

推荐下载LTS版本,相对于其他版本更加稳定,但是功能更新比较慢,SonarQube LTS版本一年更新一次,非LTS版本2月更新一次

https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.7.52159.zip

解压SonarQube8.9.7LTS

unzip sonarqube-8.9.7.52159.zip
sonar-scanner-cli-4.6.2.2472-linux.zip
mv 

安装PostgreSQL12

# 下载、解压
wget http://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2
tar xvf postgresql-12.2.tar.bz2 

# 编译安装
cd postgresql-12.2/
# 安装至/opt/pgsql12
./configure --prefix=/opt/pgsql12
make world
make install-world

# 新增pgsql用户,添加密码
adduser postgres
passwd postgres

# 创建数据目录并授权
mkdir -p /home/postgres/data
chown -R postgres:postgres /home/postgres/data

# 切换postgres用户操作
su - postgres
# 初始化数据库
/opt/pgsql12/bin/initdb -D /home/postgres/data
# 启动数据库
/opt/pgsql12/bin/pg_ctl -D /home/postgres/data -l logfile start

创建数据库SonarQube

创建SonarQube数据库时,字符集一定要选择UTF8,在postgres用户下执行/opt/pgsql12/bin/psql

# 为超级用户postgres配置一个密码
\password postgres;
# 创建sonar数据库账户和密码
CREATE USER sonar WITH PASSWORD 'sonar123456';
CREATE DATABASE sonardb WITH OWNER sonar ENCODING UTF8;
GRANT ALL PRIVILEGES ON DATABASE sonardb TO sonar;

配置SonarQube文件

需要修改/opt/sonarqube-8.9.7/conf/sonar.properties,这个文件主要配置SonarQube数据库连接,网页配置和JVM虚拟机配置.
vim /opt/sonarqube-8.9.7/conf/sonar.properties,找到18~19两行,修改连接数据库用户名和密码(可是使用set nu在vim里设置行号),修改之前使用cp /opt/sonarqube-8.9.7/conf/sonar.properties /opt/sonarqube-8.9.7/conf/sonar.properties.bak备份一下配置文件

配置数据库连接

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

修改36行的JDBC连接,如果是Oracle和MS SQLSERVER找到对应的JDBC修改即可

# 修改sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
sonar.jdbc.url=jdbc:postgresql://localhost/sonardb
配置WEB选项

找到101行,配置SonarQube登录地址,

# 去掉前面的注释,改为127.0.0.1
sonar.web.host=127.0.0.1

找到107行,更改SonarQube的端口,默认为9000

# 去掉前面的注释,改为自定义即可
sonar.web.port=9000
配置ELASTICSEARCH选项

251行可以对ELASTICSEARCH进行配置

配置SonarQube LOG选项

320行可以对LOG进行配置,默认位置为安装目录下,需要修改为/var/log下,找到371行:

# 去掉前面的注释,改为如下目录
sonar.path.logs=/var/log/sonarqube/

更改LOG目录属主,不然LOG4J会报错

chown -R sonarqube:sonarqube /var/log/sonarqube/

SonarQube日志格式为:

2016.11.16 16:47:00 | INFO | ce | [AVht0dNXFcyiYejytc3m][o.s.s.c.t.CeWorkerCallableImpl] Executed task | project=org.sonarqube:example-java-maven | type=REPORT | id=AVht0dNXFcyiYejytc3m | submitter=admin | time=1699ms
  • 2016.11.16 16:47:00 :日志时间。格式为: YYYY.MM.DD HH:MM:SS
  • INFO:日志级别。默认为INFO,其他级别为:ERROR, WARN, INFO, DEBUG and TRACE
  • ce:进程标识符为ce。 SonarQube日志分别有4项组成,分别为:app (main), web (Web Server), ce (Compute Engine) and es (Elasticsearch),出现哪个标识说明由哪个进程生成
  • AVht0dNXFcyiYejytc3m:SQ线程标识符,允许为空,和前面的进程标识CE相对应,显示的为任务ID,如果进程标识符为web,显示的将是HTTP请求ID
  • o.s.s.c.t.CeWorkerCallableImpl:日志名称,由哪个类产生
  • 剩下为:有效负载日志,此段内容不遵循任何特定格式,长度可能不同,并包含换行符,有以些key=value格式提供格式,对已分析代码断的日志将以|time=xxms收尾

364~367可以设置日志级别,建议调试阶段设置为DEBUG,待正常以后改为WARN或者ERROR

#sonar.log.level.app=INFO
#sonar.log.level.web=INFO
#sonar.log.level.ce=INFO
#sonar.log.level.es=INFO
配置ELASTICSEARCH存储路径

默认为SonarQube安装路径下,建议安装在其他路径,在412~413行可以进行配置

sonar.path.data=/data/sonarqube/data
sonar.path.temp=/data/sonarqube/temp
修改Liunx文件限制数

增加sonarqube用户和密码

useradd sonarqube
passwd sonarqube

查看Limits配置
vm.max_map_count:使用sysctl vm.max_map_count命令查看,默认为65530,官方建议大于等于524288,如果大于此值不用修改
fs.file-maxsysctl fs.file-max查看,官方建议大于等于131072,如果大于此值不用修改
ulimit -n:sonarqube打开文件数,官方建议大于等于131072,如果大于此值不用修改
ulimit -usonarqube大开线程数,官方建议大于等于8192,如果大于此值不用修改

修改配置

  • 修改vm.max_map_count
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
  • 修改fs.file-max
echo "fs.file-max = 6553560" >> /etc/sysctl.conf
sysctl -p
  • 修改ulimit
vim /etc/security/limits.d/99-sonarqube.conf 
# 增加sonarqube用户大开文件数
sonarqube   -   nofile   131072
sonarqube   -   nproc    8192
启动SonarQube

切换sonarqube用户启动sonar脚本

/opt/sonarqube-8.9.7/bin/linux-x86-64/sonar.sh start

登录网页设置sonarqube

打开网址:http://192.168.1.154:9000/,输入默认用户名和密码admin:admin
image.png
修改默认密码
image.png
安装中文语言包点击Administration > Marketplace
注:安装插件时需要连接外网,并且SonarQube不确保安装的插件安全问题,点击 I understand the risk同意风险问题
image.png
在搜索框选择’chinese’,点击install安装
image.png
安装完成重启点击’Restart Server’
image.png

sonar-scanner安装配置

下载、解压
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
unzip sonar-scanner-cli-4.6.2.2472-linux.zip
mv sonar-scanner-4.6.2.2472-linux /opt
创建sonar-scanner命令软连接
ln -sf /opt/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner /usr/bin/
ln -sf /opt/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner-debug /usr/bin/

# 验证
sonar-scanner --help
INFO: 
INFO: usage: sonar-scanner [options]
INFO: 
INFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output

配置连接sonar-qube参数

编辑/opt/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties文件:

vim /opt/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
# 去掉前面的注释即可
#----- Default SonarQube server
sonar.host.url=http://localhost:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

# 配置登录用户和密码
# sonar-scanner扫描时需要登陆sonar-qube,这里配置的是sonar-scanner登录密码,如果怕不安全,可以配置token
# 如何配置token登录参考官方文档:https://docs.sonarqube.org/8.9/user-guide/user-token/
sonar.login=admin
sonar.password=password
配置项目参数
mkdir /opt/sonar-scanner-4.6.2.2472-linux/project/php

在项目文件夹根目录创建sonar-project.properties配置文件:

vim sonar-project.properties
# 添加如下内容
# 设置projectKey,自定义,但是必须唯一,不可重复
sonar.projectKey=php:project

# 配置项目名称
sonar.projectName=test

# 版本号
sonar.projectVersion=1.0

# 调用scanner的phpmodule, cssmodule, jsmodule
phpmodule.sonar.language=php

# 源码路径,PHP无需编译可以不用配置
# sonar.sources=

# 扫描代码目录,sonar-scanner会扫描此目录检测BUG
sonar.projectBaseDir=/home/www/test
 
# 设置源码编码,默认跟随操作系统
sonar.sourceEncoding=UTF-8

# 排除目录,多个用,号分割
sonar.exclusions="vendor/**"

# 配置登录用户和密码
# sonar-scanner扫描时需要登陆sonar-qube,这里配置的是sonar-scanner登录密码,如果怕不安全,可以配置token
# 如何配置token登录参考官方文档:https://docs.sonarqube.org/8.9/user-guide/user-token/
sonar.login=admin
sonar.password=admin

更多配置参考:https://docs.sonarqube.org/8.9/analysis/analysis-parameters/

开始检测
sonar-scanner -D project.settings=/opt/sonar-scanner-4.6.2.2472-linux/project/php/sonar-scanner.properties

根据代码的数量检测需要一段时间,时间根据服务器配置高低决定长短,检测完成会生成报告:
image.png

登录网页查看检查报告

在首页能看到项目检测预览图
image.png
点击上方的Issuse可以看到检测详细情况
image.png
点击红色背景内容可以看到详细代码错误问题
image.png
点击Why is this an issue?在底部可以看到修复建议
image.png
sonarqube检测出的问题,很多为为不符合编码规则,比如变量不设置不合理,引用错误,有过多的重复代码块,以及if屎山。建议根据实际情况进行修复。

### 安装配置 SonarQube 在 Kubernetes 上 在 Kubernetes 上安装配置 SonarQube 通常涉及多个步骤,包括创建命名空间、部署依赖项(如数据库)、配置持久化存储(PVC)、以及使用 Helm Chart 或原生 Kubernetes YAML 文件进行部署。 #### 创建命名空间 在开始安装之前,建议为 SonarQube 创建一个独立的命名空间,以便更好地组织资源管理权限。 ```bash kubectl create namespace sonarqube ``` #### 使用 Helm Chart 安装 SonarQube Helm 是 Kubernetes 的包管理工具,可以简化复杂应用的部署。使用 Helm 安装 SonarQube 时,首先确保已经添加了包含 SonarQube Chart 的仓库(如 Bitnami 或官方仓库)。 ```bash helm install sonarqube ./sonarqube --namespace sonarqube ``` 安装完成后,可以通过以下命令获取访问 SonarQube 的 URL: ```bash export NODE_PORT=$(kubectl get --namespace sonarqube -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube) export NODE_IP=$(kubectl get nodes --namespace sonarqube -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT ``` #### 使用 Kubernetes YAML 文件部署 如果不使用 Helm,可以通过 Kubernetes YAML 文件手动部署 SonarQube。首先需要创建持久卷声明(PVC)以确保持久化存储: ```bash kubectl apply -f sonarqube-pvc.yaml ``` 接下来,部署 SonarQube 的 Deployment Service: ```bash kubectl apply -f sonarqube-deployment.yaml ``` 验证部署状态: ```bash kubectl get pods -l app=sonarqube kubectl get svc sonarqube ``` 查看日志以确保部署成功: ```bash kubectl logs -f deployment/sonarqube ``` #### 配置持久化存储 SonarQube 需要持久化存储以保存项目数据配置。确保 PVC 配置正确,并且有足够存储空间[^3]。查看 PVC PV 的状态: ```bash kubectl get pvc kubectl get pv ``` #### 登录 SonarQube 部署完成后,通过浏览器访问 SonarQube 的 Web 界面,默认用户名为 `admin`,密码为 `admin`。首次登录后建议立即更改密码[^1]。 #### 删除 SonarQube 部署 如果需要删除 SonarQube,可以使用以下命令: ```bash kubectl delete -f sonarqube.yaml ``` 确保清理所有相关资源,包括 PVC PV,以避免资源浪费。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值