在 Rocky Linux 上安装 SonarQube
本指南介绍如何在 Rocky Linux 9 服务器上安装和配置 SonarQube。SonarQube 是一款开源静态代码分析平台:可检测缺陷、代码坏味道和安全漏洞,支持多种编程语言,并可通过自动化代码审查保持高质量。SonarQube 基于 Java,可部署在各种 Linux 发行版(包括 Rocky Linux)或容器(Docker、Kubernetes)中。
本文描述的部署使用 OpenJDK 17、PostgreSQL 作为数据库、Apache 作为反向代理,以及 Let's Encrypt 提供 HTTPS。
订购服务器
要托管 SonarQube 实例,HostMyServers 提供多种方案:
- Performance VPS - 适合小型项目
- NVMe VPS - 性价比高
- 经济型专用服务器 - 适合多项目或重度分析
- 性能专用服务器 - 最佳性能
前提条件
- 以 root 或具有 sudo 权限的用户进行 SSH 访问
- Rocky Linux 9 64 位系统
- 至少 4 GB 内存(SonarQube 与 Elasticsearch 对内存要求较高)
- 一个 域名(例如
sonarqube.您的域名.com),并有一条指向服务器 IP 的 A 记录 - 端口 80(HTTP)和 443(HTTPS)可访问
配置要求
| 组件 | 最低 | 推荐 |
|---|---|---|
| 内存 | 4 GB | 8 GB |
| CPU | 2 核 | 4 核 |
| 存储 | 10 GB | 20 GB |
| 网络 | 100 Mbps | 1 Gbps |
SonarQube 在本地监听 9000 端口。Apache 反向代理到该端口;公网通过 80/443 的 HTTP/HTTPS 访问。
连接服务器
通过 SSH 连接到 Rocky Linux 服务器:
ssh 用户@服务器IP地址
系统更新
开始前先更新软件包:
sudo dnf update -y
安装 OpenJDK 17
SonarQube 需要 JRE/JDK。SonarQube 2025 LTA(长期支持)版本需要 Java 17 或 21。我们使用 OpenJDK 17。
sudo dnf install -y java-17-openjdk java-17-openjdk-devel
验证已安装版本:
java -version
应看到类似:openjdk version "17.x.x"。若当前为更旧版本,可用 sudo alternatives --config java 选择 Java 17。
创建 SonarQube 用户
SonarQube 使用 Elasticsearch 进行搜索与索引;必须以 非 root 用户运行。请创建专用系统用户:
sudo useradd --system sonarqube
SonarQube 的 PostgreSQL 数据库
SonarQube 支持多种数据库引擎。我们使用 PostgreSQL。
安装并初始化 PostgreSQL
sudo dnf install -y postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl enable postgresql
sudo systemctl start postgresql
创建数据库和用户
以用户 postgres 连接 PostgreSQL:
sudo -i -u postgres psql
在 PostgreSQL 控制台中执行(将 您的密码 替换为强密码):
\password postgres
CREATE DATABASE sonardb;
CREATE USER sonaruser WITH ENCRYPTED PASSWORD '您的密码';
GRANT ALL PRIVILEGES ON DATABASE sonardb TO sonaruser;
\q
启用密码认证(pg_hba.conf)
编辑认证配置文件:
sudo nano /var/lib/pgsql/data/pg_hba.conf
对本地与 TCP 连接,对「local」使用 trust,对「host」(如 127.0.0.1/32 和 ::1/128)使用 md5。示例:
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
重启 PostgreSQL:
sudo systemctl restart postgresql
安装 SonarQube
SonarQube 不在默认 DNF 仓库中。请从官网下载压缩包。
下载并解压 SonarQube
请查看 SonarQube 下载页 获取最新 LTA 版本。以下以 25.x 为例(如需请调整 URL 和目录名):
sudo dnf install -y unzip
sudo mkdir -p /opt/sonarqube
cd /tmp
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.1.0.102122.zip
unzip sonarqube-25.1.0.102122.zip
sudo mv sonarqube-25.1.0.102122/* /opt/sonarqube
请将 sonarqube-25.1.0.102122 替换为您下载版本解压后的实际目录名。
安装 SonarScanner CLI(可选但推荐)
SonarScanner 可从命令行分析项目。从 SonarScanner CLI 下载最新版本。
sudo mkdir -p /opt/sonarscanner
cd /tmp
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-7.0.2.4839-linux-x64.zip
unzip sonar-scanner-cli-7.0.2.4839-linux-x64.zip
sudo mv sonar-scanner-7.0.2.4839-linux-x64/* /opt/sonarscanner
配置 SonarQube 服务器 URL(用于本地分析):
sudo nano /opt/sonarscanner/conf/sonar-scanner.properties
添加或设置:sonar.host.url=http://127.0.0.1
使可执行文件在系统中可用:
sudo chmod +x /opt/sonarscanner/bin/sonar-scanner
sudo ln -sf /opt/sonarscanner/bin/sonar-scanner /usr/local/bin/sonar-scanner
验证:sonar-scanner -v