简介
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
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
开始部署
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