微信优化

weixinyouhua

Sonarqube安装配置怎么做?sonarqube环境搭建常见问题

2026-08-31 14:54:34

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:

Sonarqube安装配置怎么做?sonarqube环境搭建常见问题

然后执行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界面看报告。

Sonarqube安装配置怎么做?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配置大致如下:

Sonarqube安装配置怎么做?sonarqube环境搭建常见问题

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安装配置本质上就是“数据库 + 服务 + 扫描器”三个组件的联动,把前面步骤走一遍,再跑通一个真实项目,你就彻底掌握这套工具了。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待