一、环境准备
1. 系统配置
bash# 系统参数优化
cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
fs.file-max=65536
EOF
sysctl -p
# 设置系统限制
cat >> /etc/security/limits.conf << EOF
sonarqube - nofile 65536
sonarqube - nproc 4096
EOF
2. 依赖安装
bash# 安装Java环境
apt update
apt install -y openjdk-11-jdk
# 安装PostgreSQL
apt install -y postgresql postgresql-contrib
二、数据库配置
1. PostgreSQL配置
sql-- 创建数据库和用户
CREATE DATABASE sonarqube;
CREATE USER sonarqube WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
-- 修改PostgreSQL配置
ALTER SYSTEM SET max_connections = '300';
ALTER SYSTEM SET shared_buffers = '256MB';
ALTER SYSTEM SET effective_cache_size = '800MB';
2. 数据库优化
bash# 修改pg_hba.conf
echo "host sonarqube sonarqube 127.0.0.1/32 md5" >> /etc/postgresql/13/main/pg_hba.conf
# 重启PostgreSQL
systemctl restart postgresql
三、SonarQube安装
1. 安装配置
bash# 下载SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
unzip sonarqube-9.9.0.65466.zip
mv sonarqube-9.9.0.65466 /opt/sonarqube
# 创建服务用户
useradd -r sonarqube -d /opt/sonarqube
chown -R sonarqube:sonarqube /opt/sonarqube
2. 服务配置
properties# /opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonarqube
sonar.jdbc.password=your_password
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
sonar.web.javaOpts=-Xmx2048m -Xms1024m
sonar.web.host=0.0.0.0
sonar.web.port=9000
四、插件管理
1. 核心插件安装
bash# 安装语言插件
curl -X POST -u admin:admin \
"http://localhost:9000/api/plugins/install?key=java"
# 安装质量配置
curl -X POST -u admin:admin \
"http://localhost:9000/api/qualityprofiles/restore" \
--data-binary @java-sonar-way.xml
2. 自定义规则
xml<!-- custom-rules.xml -->
<rules>
<rule>
<key>MyCustomRule</key>
<name>Custom Naming Convention</name>
<description>Check naming conventions</description>
<severity>MAJOR</severity>
</rule>
</rules>
五、性能优化
1. JVM配置
bash# sonar.sh配置
SONAR_OPTS="-server \
-Xms2048m \
-Xmx2048m \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=data/heapdump"
2. Web服务优化
properties# sonar.properties
sonar.web.javaAdditionalOpts=-server
sonar.search.javaAdditionalOpts=-server
sonar.ce.javaAdditionalOpts=-server
sonar.web.workers=4
sonar.ce.workerCount=4
六、集成配置
1. Jenkins集成
groovy// Jenkinsfile
pipeline {
agent any
stages {
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('SonarQube') {
sh "${scannerHome}/bin/sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.sources=src"
}
}
}
}
}
2. GitLab集成
yaml# .gitlab-ci.yml
sonarqube_analysis:
stage: analyze
script:
- sonar-scanner \
-Dsonar.projectKey=${CI_PROJECT_NAME} \
-Dsonar.sources=. \
-Dsonar.host.url=${SONAR_HOST_URL} \
-Dsonar.login=${SONAR_TOKEN}
最佳实践建议
- 质量规则管理
- 定制规则集合
- 设置质量门限
- 配置排除规则
- 管理质量配置
- 性能优化
- 合理配置内存
- 优化数据库
- 管理分析任务
- 清理历史数据
- 安全配置
- 设置访问控制
- 配置LDAP认证
- 启用HTTPS
- 管理API令牌
本指南为您提供了在云服务器上部署SonarQube代码质量平台的完整方案。记住,代码质量管理是一个持续的过程,需要根据团队需求不断调整和优化。
重要提示:
- 定期更新版本
- 监控系统资源
- 备份重要数据
- 优化分析性能
对于生产环境的SonarQube平台,建议建立完善的监控机制,确保平台的稳定运行。同时,要注意保护敏感数据,定期检查安全配置,确保代码分析过程的安全性。