在 Debian 11/Debian 10 上安装和配置 SonarQube |在 Debian 11/Debian 10 上安装和配置 SonarQube |在 Debian 11/Debian 10 上安装和配置 SonarQube |在 Debian 11/Debian 10 上安装和配置 SonarQube |
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 Debian 11/Debian 10 上安装和配置 SonarQube |

发表 admin at 2025年2月28日
类别
  • 未分类
标签

每个开发人员都希望拥有一个无错误、干净的代码,可以尽快部署到生产环境中。帮助他们实现这一目标的工具之一是SonarQube。

什么是 SonarQube?

SonarQube是一个用Java语言编写的基于Web的源代码质量管理和分析工具。它由 SonarSource 开发,通过持续检查、检测代码中的错误和安全漏洞,确保您编写干净且无问题的代码,从而简化编码任务。

SonarQube 是一个跨平台工具,可以集成到 Gitlab、GitHub、Azure DevOps、BitBucket 等平台

SonarQube 的功能包括:

  • 它适用于 25 种不同的编程语言,即 Java、PHP、C++、Ruby、JavaScript、Kotlin、Scala、.NET、COBOL 等
  • 识别并报告错误、重复代码、代码异味、安全漏洞等
  • 它通过自动代码分析、与 GitHub 等集成增强了工作流程(确保更好的 CI/CD)
  • 记录指标历史并提供演变图。
  • 具有良好可视化工具的内置方法,深入研究 IDE 的问题和插件

在本指南中,我们将系统地介绍如何在 Debian 11/0 上安装和配置 SonarQube。

在 Debian 11/Debian 10 上安装和配置 SonarQube

在开始安装 SonarQube 之前,请确保您拥有:

  • 64位Debian 11/10系统-SonarQube不支持32位系统使用uname -m来确定您的架构
  • 具有 sudo 权限的用户。
  • 至少 2 GB RAM
  • 2vCPU 核心

第1步:准备Debian系统

您还需要更新 Debian 系统并安装所需的工具。

sudo apt update
sudo apt install net-tools wget unzip vim curl

编辑 /etc/sysctl.conf 中的文件以满足所需的 SonarQube 要求。

sudo vim /etc/sysctl.conf

将以下行添加到文件中。

vm.max_map_count=262144
fs.file-max=65536

重新加载 sysctl 配置。

sudo sysctl --system

步骤 2 – 在 Debian 上安装 Java 11

由于 SonarQube 是用 Java 编写的,因此它需要 Java 才能运行。我们将在 Debian 上安装 Java OpenJDK 11,如下所示。

sudo apt install openjdk-17-jdk

验证您的 Java 安装。

$ java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 17.0.6+10-Ubuntu-0ubuntu122.04, mixed mode, sharing)

步骤 3 – 安装 PostgreSQL 数据库服务器

SonarQube 支持 PostgreSQL、Oracle(XE 扩展、11G、12C、18C 19C 和 Windows 系统的 MSSQL)。在本指南中,我们将使用 SonarQube 的 PostgreSQL 数据库。在 Debian 上安装 PostgreSQL。首先下载 PostgreSQL 的 GPG 密钥。

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

然后添加 PostgreSQL 存储库。

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

最后,使用以下命令更新 APT 包索引并安装 PostgreSQL。

sudo apt update
sudo apt install postgresql postgresql-contrib

安装完成后,PostgreSQL 默认启动其服务,检查该服务的状态。

$ systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since  Fri 2023-05-05 15:59:55 UTC; 37s ago
   Main PID: 8370 (code=exited, status=0/SUCCESS)
        CPU: 2ms

May 05   15:05:05 debian systemd[1]: Starting PostgreSQL RDBMS...
May 05   15:05:05 debian systemd[1]: Finished PostgreSQL RDBMS.

如果该服务未运行,请使用以下命令启动它:

sudo systemctl start postgresql

启用 PostgreSQL 在启动时启动:

sudo systemctl enable postgresql

步骤 4 – 为 SonarQube 创建 PostgreSQL 数据库

现在让我们为 SonarQube 配置数据库。设置 PostgreSQL 用户的密码。

sudo passwd postgres

设置您的首选密码并切换到用户,如下所示。

sudo su - postgres

为 SonarQube 创建一个新用户。

createuser sonar

现在切换到 PostgreSQL shell。

psql

为上面创建的用户创建密码:

ALTER USER sonar WITH ENCRYPTED PASSWORD 'Passw0rd';

创建数据库并为用户分配权限。

CREATE DATABASE sonarqube OWNER sonar;
GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;
\q
exit

第 5 步 – 下载并配置 SonarQube

现在我们已经为 SonarQube 配置了数据库,现在我们将下载 SonarQube 二进制文件。从官方 SonarQube 下载页面下载最新版本的 SonarQube。截至本指南,最新版本为 9.x。您还可以使用 Wget 下载此版本,如下所示。

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

解压缩下载的 SonarQube 存档。

unzip sonarqube-*.zip

将解压后的文件移至/opt/目录。

sudo mv sonarqube-*/ /opt/sonarqube

为 SonarQube 创建系统用户帐户

由于 SonarQube 不应以 root 身份运行,因此我们需要创建一个非管理员帐户来运行 SonarQube。

sudo useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube

将目录 /opt/sonarqube 的所有权更改为创建的用户。

sudo chown -R sonarqube: /opt/sonarqube

配置 SonarQube

现在我们已经成功下载并安装了 SonarQube,我们需要对其进行配置。根据创建的 PostgreSQL 数据库设置数据库连接详细信息。

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

在该文件中,编辑以下行:

# DATABASE
# User credentials.
sonar.jdbc.username=sonar
sonar.jdbc.password=Passw0rd

#----- PostgreSQL 9.6 or greater
# By default the schema named "public" is used. It can be overridden with the parameter "currentSchema".
#sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

# WEB SERVER
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.host=0.0.0.0
sonar.web.port=9000

# ELASTICSEARCH
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

保存并关闭文件。

步骤 5 – 创建 SonarQube Systemd 服务文件

目前,我们还没有管理 SonarQube 服务的方法。因此,我们需要创建一个 systemd 服务文件来启动、停止和检查 SonarQube 的状态。

sudo vim  /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

保存并关闭文件,然后继续启动 SonarQube,如下所示。

sudo systemctl daemon-reload
sudo systemctl restart sonarqube

启用 SonarQube 服务在启动时运行。

sudo systemctl enable sonarqube

检查 SonarQube 服务的状态。

$ systemctl status sonarqube
● sonarqube.service - SonarQube service
     Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-05-05 15:52:37 EAT; 5s ago
    Process: 10525 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
   Main PID: 10578 (wrapper)
      Tasks: 49 (limit: 4663)
     Memory: 641.8M
        CPU: 10.021s
     CGroup: /system.slice/sonarqube.service
             ├─10578 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=SonarQube>
             ├─10580 java -Dsonar.wrapped=true -Djava.awt.headless=true --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/ja>
             └─10608 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -XX:+UseG1GC -Djava.io.tmpdir=/opt/sonarqube/temp -XX:ErrorFile=../logs/es_hs_err_pi>

May 05 16:07:45 debian systemd[1]: Starting SonarQube service...
May 05 16:07:45 debian sonar.sh[8924]: /usr/bin/java
May 05 16:07:45 debian sonar.sh[8924]: Starting SonarQube...
May 05 16:07:45 debian sonar.sh[8924]: Started SonarQube.
May 05 16:07:45 debian systemd[1]: Started SonarQube service.

允许端口 9000 通过防火墙。

  • 使用ufw
sudo ufw allow 9000
  • 使用防火墙
sudo firewall-cmd --permanent --add-port=9000/tcp && sudo firewall-cmd --reload

检查服务是否正在侦听端口 9000

$ sudo ss -plunt|grep 9000
tcp   LISTEN 0      25              [::ffff:192.168.100.124]:9000             *:*    users:(("java",pid=10358,fd=14))        

第 6 步 – 访问 SonarQube Web 界面

可以使用 URL http://server-ip:9000 访问 SonarQube Web 界面。在此登录页面上,使用用户名“admin”和密码“admin”

成功登录后,您将需要更改默认密码。

然后您将获得此 SonarQube 页面。

此页面包含 SonarQube 集成的平台,即 GitHub、GitLab 等,您可以从列出的平台创建代码。或者,您可以手动创建代码。如果您想查看代码中的问题,请导航至问题选项卡。

在上面的页面上,您可以看到代码中的所有漏洞、代码气味错误等。您还可以通过导航到规则选项卡来查看管理所需编程语言的代码的规则。

干杯!您已在 Debian 11|10 上成功安装并配置 SonarQube。通过这个简单的界面,您可以轻松地使用 SonarQube。

结论。

这标志着本关于如何在 Debian 11 | 10 上安装和配置 SonarQube 的指南的结束。我希望您能从本指南中有所收获。

在我们的页面上查看更多文章:

  • 在 SonarQube 和 Jenkins 中使用 Gradle 分析 Java 代码
  • 如何将 SonarQube 与 Jenkins 集成
  • 在 Rocky Linux 8/CentOS 8 上安装 SonarQube
  • 使用 Sonar Scanner 和 Jenkins 扫描 PHP|JavaScript|C#|HTML
©2015-2025 Norria support@norria.com