第二章:安装与配置¶
系统要求¶
硬件要求¶
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4+ 核 |
| 内存 | 2GB | 4GB+ |
| 磁盘 | 10GB | 50GB+ SSD |
软件要求¶
- Java: OpenJDK 17 或 Oracle JDK 17
- 数据库: PostgreSQL 12+(推荐)、MySQL 8.0+、Oracle、SQL Server
- 操作系统: Linux、Windows、macOS
Docker 方式安装(推荐)¶
1. 快速启动¶
使用 Docker Compose 一键部署:
# docker-compose.yml
version: "3.8"
services:
sonarqube:
image: sonarqube:community
container_name: sonarqube
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
ports:
- "9000:9000"
networks:
- sonarnet
db:
image: postgres:15
container_name: sonarqube_db
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
volumes:
- postgresql_data:/var/lib/postgresql/data
networks:
- sonarnet
volumes:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
postgresql_data:
networks:
sonarnet:
driver: bridge
2. 启动服务¶
# 创建必要的目录
mkdir -p /opt/sonarqube
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f sonarqube
3. 访问 SonarQube¶
- URL: http://localhost:9000
- 默认账号: admin
- 默认密码: admin
首次登录后会提示修改密码。
Linux 系统配置¶
SonarQube 使用 Elasticsearch,需要调整系统参数:
# 编辑 /etc/sysctl.conf
sudo vim /etc/sysctl.conf
# 添加以下配置
vm.max_map_count=262144
fs.file-max=65536
# 使配置生效
sudo sysctl -p
# 编辑 /etc/security/limits.conf
sudo vim /etc/security/limits.conf
# 添加以下配置
sonarqube - nofile 65536
sonarqube - nproc 4096
二进制包安装¶
1. 下载安装包¶
# 下载 SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.3.0.82913.zip
# 解压
unzip sonarqube-10.3.0.82913.zip -d /opt/
mv /opt/sonarqube-10.3.0.82913 /opt/sonarqube
2. 创建数据库¶
-- PostgreSQL
CREATE USER sonar WITH PASSWORD 'sonar';
CREATE DATABASE sonar OWNER sonar;
GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
3. 配置 SonarQube¶
# 编辑配置文件
vim /opt/sonarqube/conf/sonar.properties
# 数据库配置
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar
# Web 服务器配置
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/
# Elasticsearch 配置
sonar.search.javaAdditionalOpts=-Xms512m -Xmx512m
4. 创建服务用户¶
# 创建用户
sudo useradd -r -s /bin/false sonarqube
# 设置权限
sudo chown -R sonarqube:sonarqube /opt/sonarqube
5. 创建系统服务¶
[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=sonarqube
Group=sonarqube
Restart=on-failure
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable sonarqube
sudo systemctl start sonarqube
# 查看状态
sudo systemctl status sonarqube
安装 SonarScanner¶
SonarScanner 是代码扫描的客户端工具。
1. 下载安装¶
# 下载
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
# 解压
unzip sonar-scanner-cli-5.0.1.3006-linux.zip -d /opt/
mv /opt/sonar-scanner-5.0.1.3006-linux /opt/sonar-scanner
# 添加到 PATH
echo 'export PATH=$PATH:/opt/sonar-scanner/bin' >> ~/.bashrc
source ~/.bashrc
2. 配置 Scanner¶
# 编辑配置文件
vim /opt/sonar-scanner/conf/sonar-scanner.properties
# 配置 SonarQube 服务器地址
sonar.host.url=http://localhost:9000
3. 验证安装¶
输出:
Maven/Gradle 插件配置¶
Maven¶
<!-- pom.xml -->
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.10.0.2594</version>
</plugin>
</plugins>
</build>
Gradle¶
// build.gradle
plugins {
id "org.sonarqube" version "4.4.1.3373"
}
sonarqube {
properties {
property "sonar.projectKey", "my-project"
property "sonar.host.url", "http://localhost:9000"
}
}
初始配置¶
1. 登录管理后台¶
访问 http://localhost:9000,使用 admin/admin 登录。
2. 生成令牌¶
3. 配置邮件通知¶
# sonar.properties
sonar.smtp.host=smtp.example.com
sonar.smtp.port=587
sonar.smtp.username=noreply@example.com
sonar.smtp.password=your-password
sonar.smtp.starttls.enable=true
4. 配置代理(如需要)¶
# sonar.properties
sonar.web.javaAdditionalOpts=-Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080
常见问题排查¶
1. 启动失败¶
# 查看日志
tail -f /opt/sonarqube/logs/sonar.log
tail -f /opt/sonarqube/logs/es.log
# 常见原因
# - 内存不足
# - vm.max_map_count 配置过低
# - 端口被占用
2. 数据库连接失败¶
# 检查数据库连接
psql -h localhost -U sonar -d sonar
# 检查配置
grep -E "sonar.jdbc" /opt/sonarqube/conf/sonar.properties
3. Elasticsearch 启动失败¶
小结¶
本章介绍了 SonarQube 的多种安装方式:
- Docker 方式:最简单,适合快速体验和开发环境
- 二进制包方式:适合生产环境,需要更多配置
安装完成后,下一步是配置项目进行代码扫描。