一、环境准备
系统要求:
- 操作系统:CentOS/RHEL 7+ 或 Ubuntu 18.04+(推荐Ubuntu 20.04 LTS)
- 硬件配置:至少4GB内存(生产环境建议8GB+),20GB以上磁盘空间
- 软件依赖:
- Java环境:SonarQube 8.9+需OpenJDK 11(可通过
java -version
检查,版本需≥11) - 数据库:MySQL 5.7+/MariaDB 10.3+(本次以MySQL 8.0为例)
- Java环境:SonarQube 8.9+需OpenJDK 11(可通过
二、安装SonarQube服务端
步骤1:下载与解压
# 切换到安装目录(建议/usr/local)
cd /usr/local
# 下载SonarQube 8.9 LTS版本(可通过官网获取最新URL)
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.0.43852.zip
# 解压文件
sudo unzip sonarqube-8.9.0.43852.zip
# 重命名目录(可选)
sudo mv sonarqube-8.9.0.43852 sonarqube
步骤2:创建专用用户(安全最佳实践)
# 创建sonar用户(避免以root运行)
sudo useradd -m -d /opt/sonar -s /bin/false sonar
# 赋予目录权限
sudo chown -R sonar:sonar /usr/local/sonarqube
sudo chmod -R 755 /usr/local/sonarqube
三、配置MySQL数据库
步骤1:安装MySQL 8.0
# Ubuntu系统示例
sudo apt-get update
sudo apt-get install mysql-server
# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
步骤2:创建SonarQube专用数据库
# 进入MySQL控制台
mysql -u root -p
# 创建数据库(注意字符集配置)
CREATE DATABASE sonarqube CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 创建专用用户(建议使用强密码)
CREATE USER 'sonar_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
# 授予权限(生产环境建议限制主机访问)
GRANT ALL PRIVILEGES ON sonarqube.* TO 'sonar_user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
四、配置SonarQube核心参数
# 切换到配置目录
cd /usr/local/sonarqube/conf
# 编辑主配置文件
sudo nano sonar.properties
关键配置修改:
# 数据库连接(MySQL 8.0需指定驱动参数)
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8mb4&serverTimezone=UTC
sonar.jdbc.username=sonar_user
sonar.jdbc.password=StrongPassword123!
# 服务端口(默认9000,如需修改)
sonar.web.port=9000
# 内存配置(生产环境建议调整)
# sonar.jvm.options=-Xms2048m -Xmx2048m -XX:MaxPermSize=512m
五、启动与验证服务
步骤1:启动SonarQube
# 切换到sonar用户
sudo su - sonar
# 启动服务(后台运行)
cd /usr/local/sonarqube/bin/linux-x86-64
./sonar.sh start
# 查看启动日志
tail -f ../logs/sonar.log
步骤2:验证服务运行
- 访问
http://服务器IP:9000
,默认账号密码:admin/admin
- 若无法访问,检查防火墙设置:
# Ubuntu防火墙配置示例 sudo ufw allow 9000/tcp
六、安装SonarScanner(代码分析客户端)
步骤1:下载与配置
cd /usr/local
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
sudo unzip sonar-scanner-cli-4.6.2.2472-linux.zip -d sonar-scanner
# 配置环境变量
sudo nano /etc/profile.d/sonar-scanner.sh
添加内容:
export SONAR_SCANNER_HOME=/usr/local/sonar-scanner
export PATH=$PATH:$SONAR_SCANNER_HOME/bin
使配置生效:
source /etc/profile
步骤2:执行代码分析
在项目根目录创建sonar-project.properties
:
sonar.projectKey=your-project-key
sonar.projectName=Project Name
sonar.projectVersion=1.0
sonar.sources=.
sonar.java.binaries=target/classes # Java项目示例
sonar.sourceEncoding=UTF-8
执行分析命令:
sonar-scanner -Dsonar.host.url=http://服务器IP:9000 -Dsonar.login=admin -Dsonar.password=admin
七、安全与优化建议
-
生产环境配置:
- 启用HTTPS:通过Nginx代理配置SSL证书
- 限制数据库访问:仅允许SonarQube服务器IP连接MySQL
- 定期备份数据库
-
性能优化:
- 调整JVM内存参数(根据服务器配置)
- 启用索引:在sonar.properties中添加
sonar.jdbc.batchSize=500
-
用户管理:
- 禁用默认admin账号,创建专用管理员
- 配置LDAP/SSO集成(企业版功能)
八、常见问题排查
-
启动失败:
- 检查
sonar.log
是否有Java版本不兼容错误 - 确认MySQL驱动存在(SonarQube 8.9需手动下载
mysql-connector-java-8.0.23.jar
到extensions/jdbc-driver/mysql/
目录)
- 检查
-
分析结果未显示:
- 检查SonarScanner日志是否有网络连接错误
- 确认项目Key唯一性,避免覆盖已有分析数据
-
内存不足:
- 增加
sonar.jvm.options
中的Xms/Xmx值 - 关闭不必要的后台服务释放内存
- 增加
通过以上步骤,你已完成SonarQube在Linux系统的全流程部署。如需进一步配置插件(如Java、Python代码分析),可在SonarQube后台市场place
中搜索安装。生产环境建议参考官方文档进行高可用集群配置。