SonarQube安装配置的核心思路是先定数据库、再装服务、最后配扫描器,只要按这套顺序来,二十分钟就能跑通一个可用的代码扫描平台。
SonarQube安装前,先把这些基础问题想清楚
你的机器配置适合跑SonarQube吗
- 官方要求最低2核4G,但实际运行起来,2G内存会比较吃力,行业共识认为,一个10人左右的开发团队做日常扫描,4核8G的云主机足够用了。
- 磁盘方面,SonarQube会存扫描历史,小团队预留50G就够了,但建议用云盘,方便扩容。
- 系统选择上,Linux是主流,CentOS 7或Ubuntu 22.04都行,Windows也能跑但配置麻烦,不推荐。
数据库选MySQL还是PostgreSQL
- 官方在文档中明确把PostgreSQL作为首选推荐,社区版对PostgreSQL的支持也最稳定。
- 如果你手头已有MySQL,要注意SonarQube新版本的安装包默认不带MySQL驱动,而且从较新版本开始已经不再官方支持MySQL,这里插一句:企业版用户大多转向PostgreSQL,这也是行业趋势。
- 选好数据库后,提前在数据库里创建一个名为sonar的库和专用账号,别用root。
SonarQube安装配置的详细步骤,照着做就行
第一步:用Docker Compose把服务跑起来(推荐)
在服务器上新建一个目录,比如/opt/sonarqube,然后创建一个docker-compose.yml如下:
version: '3'
services:
sonarqube:
image: sonarqube:lts-community
container_name: sonar
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar123
ports:
- "9000:9000"
volumes:
- sonar_data:/opt/sonarqube/data
- sonar_logs:/opt/sonarqube/logs
- sonar_extensions:/opt/sonarqube/extensions
db:
image: postgres:13
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar123
POSTGRES_DB: sonar
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
sonar_data:
sonar_logs:
sonar_extensions:
postgres_data:

然后执行docker-compose up -d,第一次启动会拉镜像,等一两分钟,访问http://服务器IP:9000,就能看到登录页,默认管理员账号密码都是admin,第一次登录会强制改密码。
一个关键点是,sonarqube容器启动后需要时间初始化数据库,如果页面显示“SonarQube is starting”,别急着刷新,等它变成可登录状态,你可以用docker logs -f sonar看日志,出现SonarQube is up就说明好了。
第二步:用传统安装包方式部署(备用方案)
如果你不想用Docker,也可以下载官方zip包,步骤是:
- 在SonarQube官网下载对应版本的zip包,解压到
/opt/sonarqube。 - 修改
conf/sonar.properties,配置数据库连接、端口等。 - 用非root用户(比如sonar用户)启动:
bin/linux-x86-64/sonar.sh start。 - 查看日志
logs/sonar.log确认启动成功。
传统方式没有Docker方便,但如果你对资源占用控制更精细,可以选这个。
第三步:安装配置SonarQube Scanner扫描器
服务跑起来只是第一步,真正做代码扫描需要Scanner,Scanner负责分析代码并上传结果到服务端。
在服务器上下载sonar-scanner-cli,解压到/opt/sonar-scanner,然后修改conf/sonar-scanner.properties大致是:
sonar.host.url=http://localhost:9000 sonar.sourceEncoding=UTF-8
如果你的Scanner要连接远程服务端,把URL改成对应地址。
扫描项目时,在项目根目录创建sonar-project.properties,写明项目信息:
sonar.projectKey=my_project sonar.projectName=My Project sonar.language=java sonar.sources=src sonar.java.binaries=target/classes
然后执行/opt/sonar-scanner/bin/sonar-scanner,扫描完去SonarQube界面看报告。

第四步:顺手把中文语言包装上
团队如果看不惯英文界面,可以在界面里安装中文插件,路径是:Administration → Marketplace → 搜索“Chinese Pack” → Install,安装完重启服务。
不过业内专家指出,中文包有时会滞后于主版本升级,小团队图方便可以用,正规大团队一般直接用英文版。
SonarQube与Jenkins集成时的常见配置问题
集成前,先拿到令牌Token
在SonarQube中创建全局令牌:右上角头像 → My Account → Security → Generate Token,复制保存,这个令牌是Scanner和Jenkins之间的通行证。
Jenkins上装插件并配置服务器地址
- Jenkins插件市场安装“SonarQube Scanner”插件。
- 在Jenkins系统设置里,添加SonarQube Server,填上URL和Token。
- 在全局工具配置里,指定Scanner路径或自动安装。
在Pipeline里写扫描步骤
如果使用Pipeline,典型代码如下:
stage('SonarQube Scan') {
steps {
withSonarQubeEnv('SonarQube') {
sh 'sonar-scanner'
}
}
}
集成时最常踩的坑
- 报错
Not authorized. Please check the token,说明Token没配对或已过期,重新生成。 - 报错
Project not found. Please check the projectKey,说明sonar-project.properties里的projectKey和服务端不一致,检查大小写。 - 扫描时提示内存不足,在Scanner配置里调整
SONAR_SCANNER_OPTS的Xmx。
这些坑很常见,但都不是大问题,按提示一步步排查就行。
生产环境安装配置SonarQube要注意的几点
数据库账号和权限分开
不要用postgres超级账号,单独创建sonar用户,只授予sonar库的权限,这样即使项目代码泄露,也不会波及数据库其他库。
用Nginx做HTTPS反向代理
SonarQube默认HTTP,生产环境建议前面挂Nginx,配置SSL证书,并把9000端口不对外暴露,Nginx配置大致如下:

server {
listen 443 ssl;
server_name sonar.example.com;
ssl_certificate /etc/nginx/cert/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/privkey.pem;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
改完Nginx配置记得重启,并把防火墙的9000端口关掉,只留443。
插件和升级节奏别太快
SonarQube的插件质量参差不齐,装太多插件会导致启动变慢,甚至把服务搞挂,尽量只装官方和知名社区插件,升级前先备份data和extensions目录。
SonarQube安装配置常见问题解答
问:sonarqube安装配置过程中,数据库连接一直失败怎么办
答:先检查数据库容器是否正常运行,然后在SonarQube的docker-compose.yml中确认SONAR_JDBC_URL里的主机名、端口和库名是否正确,如果数据库和SonarQube不在同一台机器,还要检查数据库权限和防火墙。
问:sonarqube扫描完成后,网页上看不到任何代码问题
答:最常见的原因是Scanner上传结果失败,查看sonar-scanner日志里有没有EXECUTION FAILURE提示,如果有,根据错误码定位,另一种情况是权限不足,普通用户只能看到自己参与的项目,用管理员账号登录再看一眼。
问:sonarqube安装配置时没有中文包,影响使用吗
答:不影响核心功能,SonarQube主要看指标和规则,英文界面上的Bugs、Vulnerabilities、Code Smells是固定专业术语,熟悉之后比中文包更一致。
最后说一句
SonarQube安装配置本质上就是“数据库 + 服务 + 扫描器”三个组件的联动,把前面步骤走一遍,再跑通一个真实项目,你就彻底掌握这套工具了。
