SonarQube 安装部署与界面汉化

SonarQube 是代码质量管理平台,依赖 JDK 与 PostgreSQL 数据库。官方包解压即用,但细节不少:必须使用 Java 11、不能用 root 启动、内核参数有硬性门槛。本文按环境准备、数据库、应用部署、Nginx 反向代理、界面汉化五步走完全流程。

基础环境与 JDK

先补齐基础工具包:

[root@sonarqube ~]# yum install -y epel-release unzip vim wget

SonarQube 8.x 要求 Java 11,直接安装 JDK 11 的 rpm 包即可;装成 Java 13 会在启动时报错:

[root@sonarqube ~]# cd /opt/
[root@sonarqube opt]# rpm -ivh jdk-11.0.1_linux-x64_bin.rpm
sonar01
sonar02

部署 PostgreSQL

添加 PGDG 软件源并安装 PostgreSQL 10:

[root@sonarqube ~]# rpm -Uvh https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
[root@sonarqube ~]# yum install -y postgresql10-server postgresql10

初始化数据库:

[root@sonarqube ~]# /usr/pgsql-10/bin/postgresql-10-setup initdb

编辑 pg_hba.conf:

[root@sonarqube ~]# vim  /var/lib/pgsql/10/data/pg_hba.conf

关键改动两处——监听所有地址,以及允许远程 md5 密码认证:

listen_addresses = '*'
host all all 0.0.0.0/0 md5

放行 5432 端口并启动服务:

[root@sonarqube ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@sonarqube ~]# firewall-cmd --reload
[root@sonarqube ~]# systemctl start postgresql-10
[root@sonarqube ~]# systemctl enable postgresql-10
[root@sonarqube ~]# systemctl status postgresql-10
[root@sonarqube ~]# ss -tnlp |grep 5432

创建 SonarQube 专用的库、用户并授权:

[root@sonarqube ~]# sudo -u postgres psql
CREATE DATABASE sonar;
CREATE USER sonar WITH ENCRYPTED PASSWORD '密码';
GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
ALTER DATABASE sonar OWNER TO sonar;
q
sonar03
sonar04

安装 SonarQube

下载 sonarqube-8.0 压缩包并解压到 /usr/local,重命名目录:

[root@sonarqube ~]# wget -O /opt/sonarqube.zip https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.0.zip
[root@sonarqube ~]# unzip /opt/sonarqube.zip -d /usr/local
[root@sonarqube ~]# mv /usr/local/sonarqube-8.0 /usr/local/sonarqube

SonarQube 禁止以 root 运行,创建专用账号并把目录属主交给它:

[root@sonarqube ~]# useradd sonar -s /sbin/nologin
[root@sonarqube ~]# id sonar
uid=1000(sonar) gid=1000(sonar) groups=1000(sonar)
[root@sonarqube ~]# chown -R sonar. /usr/local/sonarqube/

编辑 sonar.properties,先配置数据库连接:

[root@sonarqube ~]# vim /usr/local/sonarqube/conf/sonar.properties
# 配置数据库,直接在pgsql上下文中添加如下参数
sonar.jdbc.username=sonar
sonar.jdbc.password=密码
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
sonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000
sonar.jdbc.removeAbandoned=true
sonar.jdbc.removeAbandonedTimeout=60

再设置 Web 端口 9000 与各组件内存参数:

sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError

写成 systemd 单元文件托管:

[root@sonarqube ~]# vim /etc/systemd/system/sonar.service
[Unit]
Description=SonarQube Server
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/usr/local/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target

启动前必须把 vm.max_map_count 提升到 262144,否则内置的 Elasticsearch 无法启动:

[root@sonarqube ~]# vim /etc/sysctl.d/00-sysctl.conf
vm.max_map_count = 262144
[root@sonarqube ~]# sysctl -p /etc/sysctl.d/00-sysctl.conf

重载并启动服务:

[root@sonarqube ~]# systemctl daemon-reload
[root@sonarqube ~]# systemctl start sonar.service
[root@sonarqube ~]# systemctl enable sonar.service
[root@sonarqube ~]# systemctl status sonar.service
[root@sonarqube ~]# ss -tnlp | grep 9000
sonar05
sonar06
sonar07

Nginx 反向代理与访问

安装 Nginx:

[root@sonarqube soft]# rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm

default.conf 中把请求转发到 127.0.0.1:9000:

[root@sonarqube ~]# vim /etc/nginx/conf.d/default.conf
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Ssl on;
        proxy_pass http://127.0.0.1:9000;
        proxy_read_timeout 300;
}

[root@sonarqube ~]# nginx -t

启动 Nginx 并放行 80 端口:

[root@sonarqube ~]# systemctl start nginx
[root@sonarqube ~]# systemctl enable nginx
[root@sonarqube ~]# systemctl status nginx
[root@sonarqube ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
[root@sonarqube ~]# firewall-cmd --reload

浏览器访问代理地址,默认账号密码均为 admin/admin,首次登录会要求修改。

sonar08
sonar09
sonar10
sonar11

界面汉化

登录后按截图顺序为平台安装中文语言支持,安装完成后重启 SonarQube,界面即变为中文:

sonar12
sonar13
sonar14
sonar15
sonar16

注意事项

  • Java 版本是唯一硬性门槛:11 可用,13 会直接启动报错,升级 JDK 前先确认兼容性。
  • vm.max_map_count 要写入 /etc/sysctl.d 持久化,重启后用 sysctl 复查,否则升级后又会回到默认值。
  • 安装目录属主必须是 sonar 用户,用 root 试启动只会得到拒绝提示。
  • 汉化语言包版本要与 SonarQube 主版本对应,跨版本混装会导致页面元素缺失。
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容