部署 SonarQube 服务器
最近搭了下 SonarQube 服务器,在这里记录一下,以免下次需要的时候又花大量的时间精力找资料、找文档。
概括来说,主要分为以下几个步骤:
- 安装 JDK11 环境
- 安装 PostgreSQL 数据库
- 官网下载
免费社区版本,并解压到非数字开头的目录。 LTS 表示长期维护版本(Long term support) - 创建 sonarqube 用户, 因为依赖的 Elasticsearch 不支持 root 用户启动
- 到*$SONARQUBE-HOME/conf/sonar.properties* 文件中设置数据库连接参数。
- 启动*$SONARQUBE-HOME/bin/linux-x86-64/sonar.sh*
接下来,会分别介绍每步的操作和可能遇到的坑。
安装 JDK 环境
服务器是 centos7,所以很多软件可以直接通过 yum 来安装。
Java | Server | Scanners |
---|---|---|
Oracle JRE | ✅11 | ✅11 |
❌8 | ❌8 | |
OpenJDK | ✅11 | ✅11 |
❌8 | ❌8 |
上表是 SonarQube 官网对 java 版本的要求情况,我们安装 OpenJDK 11 就好了。
先搜索下
1 | yum search java-11-openjdk |
1 | yum install java-11-openjdk-devel.x86_64 |
安装成功
安装 PostgreSQL
对于数据库,SonarQube 支持很多常见的数据库,譬如 PostgreSQL、Microsoft SQL Server、Oracle、MySQL。经过考虑选择 PostgreSQL。对于 PostgreSQL 的版本,下表是官网的适配信息,注意要把数据库的编码设置为 UTF-8。
PostgreSQL | ✅ 13 |
---|---|
✅ 12 | |
✅ 11 | |
✅ 10 | |
✅ 9.6 | |
⚠️ Must be configured to use UTF-8 charset |
按照下面的步骤,一步步执行就能完成 PostgreSQL 的安装。本次选择的最新版,需要下载其他版本也可以去官网生成安装脚本后执行安装。
1 | sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
安装成功截图:
SonarQube 最终要使用账号密码连接数据库,因此修改 PostgreSQL 配置文件, 允许密码登录:
1 | vi /var/lib/pgsql/13/data/pg_hba.conf |
按照下图,将 METHOD 修改为 md5 便是使用账号密码连接了。
修改完成后,重启一下 postgresql 服务
1 | systemctl enable postgresql-13 |
在创建 postgresql 过程中,会创建 postgres 用户,可以先改下 postgres 用户的密码:
切换到 postgres 用户, 使用 sql 语句,创建服务于 SonarQube 的用户和数据库。
1 | su - postgres |
创建 sonar 用户
在 Unix-based 的系统上,SonarQube 不能以 root 方式运行,因此需要为 SonarQube 创建一个用户, 这里添加一个名为 sonar 的用户,并设置密码:
1 | useradd sonar |
从官网下载免费社区版本,并解压到非数字开头的目录中,接着修改 sonarqube 文件夹的用户和用户组
调整 sonar 配置
SonarQube 的运行环境已经搭建完毕,接着修改 sonar 的配置,设置连接数据库的用户和密码。配置文件中已经有针对不同数据库的配置,找到 PostgreSQL 的配置,取消注释,修改下上文中创建的数据库名称即可。
1 | vi sonarqube-8.9.2.46101/conf/sonar.propertie |
SonarQube 默认运行在 9000 端口,为了能让外网访问,开放一下防火墙端口:
1 | sudo firewall-cmd --add-port=9000/tcp --permanent |
启动 SonarQube 服务
到 $SONARQUBE-HOME/bin/linux-x86-64/ 路径以 console 的形式启动 sonarqube,如果启动失败这样就能清晰的看到错误日志。
1 | cd /opt/sonarqube-8.9.2.46101/bin/linux-x86-64 |
可能会遇到如下的错误:
遇到这些问题,是因为还需要调整下服务器的配置,SonarQube 有如下要求
If you’re running on Linux, you must ensure that:
vm.max_map_count
is greater than or equal to 524288fs.file-max
is greater than or equal to 131072- the user running SonarQube can open at least 131072 file descriptors
- the user running SonarQube can open at least 8192 threads
可以临时修改或者永久修改这些配置。
临时修改
1 | sysctl -w vm.max_map_count=524288 |
永久修改
编辑 /etc/security/limits.conf
文件,在文件末尾添加如下配置:
1 | vi /etc/security/limits.conf |
编辑 /etc/sysctl.conf
文件,在文件末尾添加如下配置:
1 | vi /etc/sysctl.conf |
然后刷新
1 | sysctl -p |
最后查看下这些配置是否设置成功:
1 | sysctl vm.max_map_count |
再次启动,没有错误了。
访问 ip:9000 就能登录到 SonarQube 的管理后台了, 到这里服务就部署完毕。
部署 SonarQube 服务器