如何在 Ubuntu 22.04 上安装 SonarQube 代码质量监控神器

简介

SonarQube 是一个强大的开源平台,专注于代码质量的持续检测和提升。它通过静态代码分析技术,自动审查代码,帮助开发者发现潜在的bug、代码异味以及安全漏洞。SonarQube 支持多种编程语言,能够集成到现有的开发流程中,为代码质量保驾护航。

功能特点

  • 多语言支持:SonarQube 支持包括 Java、C#、C/C++、JavaScript 在内的多种编程语言,覆盖广泛的开发需求。
  • 代码质量评估:提供代码复杂度、重复代码、代码覆盖率等关键指标,帮助团队了解代码健康状况。
  • 安全漏洞检测:识别代码中的安全漏洞,提前防范安全风险。
  • 代码异味识别:发现代码中的不良实践,如不必要的复杂性、潜在的bug等,促进代码优化。
  • 集成开发流程:轻松集成到 CI/CD 流程中,实现代码质量的自动化监控。
  • 实时报告和通知:提供实时的代码质量报告,支持问题追踪和通知,帮助团队及时响应和改进。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

1. 更新系统

首先,确保你的系统是最新的:

sudo apt update
sudo apt upgrade -y

2. 安装 Java

SonarQube 需要 Java 11 或 17。我们将安装 OpenJDK 17:

sudo apt install openjdk-17-jdk -y

安装完成后,验证 Java 是否安装成功:

java -version

3. 安装 PostgreSQL

SonarQube 使用 PostgreSQL 作为数据库。安装 PostgreSQL 15:

sudo apt install curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail <https://www.postgresql.org/media/keys/ACCC4CF8.asc>
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] <https://apt.postgresql.org/pub/repos/apt> $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

更新并安装 PostgreSQL 15:

sudo apt update
sudo apt install postgresql-15 -y

接下来,配置 PostgreSQL:

切换到 PostgreSQL 用户:

sudo -i -u postgres

为 SonarQube 创建新用户和数据库:

createuser sonar
createdb sonar -O sonar
psql

在 PostgreSQL shell 中,为 sonar 用户设置密码:

ALTER USER sonar WITH ENCRYPTED PASSWORD 'your_password';
\\q

退出 PostgreSQL 用户:

exit

4. 安装 SonarQube

下载最新版本的 SonarQube:

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.5.1.90531.zip

解压 SonarQube 包:

unzip sonarqube-10.5.1.90531.zip
sudo mv sonarqube-10.5.1.90531 /opt/sonarqube

创建一个 SonarQube 用户:

sudo adduser --system --no-create-home --group --disabled-login sonarqube

更改 SonarQube 目录的所有者:

sudo chown -R sonarqube:sonarqube /opt/sonarqube

配置 SonarQube:

编辑 SonarQube 配置文件:

sudo nano /opt/sonarqube/conf/sonar.properties

取消注释并设置以下属性:

sonar.jdbc.username=sonar
sonar.jdbc.password=your_password
sonar.jdbc.url=jdbc:postgresql://localhost/sonar

5. 创建 Systemd 服务文件

创建一个新的服务文件:

sudo nano /etc/systemd/system/sonarqube.service

添加以下内容:

[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target

重新加载 systemd 守护进程并启动 SonarQube:

sudo systemctl daemon-reload
sudo systemctl start sonarqube
sudo systemctl enable sonarqube

6. 文件描述符

检查当前限制:

ulimit -n

至少应该是 65536。要增加它,添加以下内容到 /etc/security/limits.conf

sudo nano /etc/security/limits.conf

添加以下行:

sonarqube - nofile 65536
sonarqube - nproc 4096

检查并设置虚拟内存限制:

sudo sysctl -w vm.max_map_count=262144

要使这个更改永久生效,添加到 /etc/sysctl.conf

sudo nano /etc/sysctl.conf

添加以下行:

vm.max_map_count=262144

应用更改:

sudo sysctl -p

7. 配置防火墙

我们需要在防火墙中添加端口。

ufw allow 9000/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

8. 安装和配置 Nginx

安装 Nginx:

sudo apt install nginx -y

为 SonarQube 创建一个新的 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/your_domain

注意:your_domain 替换为你的域名。

添加以下内容:

server {
    listen 80;
    server_name your_domain;
    access_log /var/log/nginx/sonarqube.access.log;
    error_log /var/log/nginx/sonarqube.error.log;
    location / {
        proxy_pass http://localhost:9000;
        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;
    }
}

注意:your_domain 替换为你的域名。

启用新配置:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

测试 Nginx 配置并重启 Nginx:

sudo nginx -t
sudo systemctl restart nginx

9. 配置 HTTPS

为了增加安全性,考虑为你的 SonarQube 实例配置 HTTPS。你需要为你的域名准备一个 SSL 证书。你可以使用 Certbot 从 Let’s Encrypt 获取免费的 SSL 证书。

sudo apt install certbot python3-certbot-nginx -y

然后运行以下命令获取并安装 SSL 证书:

sudo certbot --nginx -d your_domain

注意:your_domain 替换为你的域名。

按照提示配置 HTTPS。

10. 访问 SonarQube

打开你的浏览器,访问 https://your_domain_or_ip。你应该能看到 SonarQube 的登录页面。默认的凭据是:

  • 用户名:admin
  • 密码:admin

首次登录后,系统会提示你更改默认密码。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site