怎样在 Ubuntu 22.04 LTS 上安装 SonarQube

在本教程中,我们将向您展示怎样在 Ubuntu 22.04 LTS 上安装 SonarQube。 对于那些不知道的人,SonarQube 或以前的 Sonar 是一个用于静态代码分析和代码安全的开源平台。 它可以发现超过 20 种编程语言的安全漏洞,并自动分析代码质量以检测代码错误和异味。 SonarQube 还提供重复代码、编码标准、代码复杂度和安全建议等报告。

本文假设您至少具备 Linux 的基本知识,知道怎样使用 shell,最重要的是,您将网站托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户下运行,如果不是,您可能需要添加 ‘sudo‘ 到命令以获取 root 权限。 我将向您展示在 Ubuntu 22.04 (Jammy Jellyfish) 上逐步安装 SonarQube。 对于 Ubuntu 22.04 和任何其他基于 Debian 的发行版,如 Linux Mint、Elementary OS、Pop!_OS 等,您可以按照相同的说明进行操作。

先决条件

  • 运行以下操作系统之一的服务器:Ubuntu 22.04、20.04 和任何其他基于 Debian 的发行版,如 Linux Mint。
  • 建议您使用全新的操作系统安装来防止任何潜在问题。
  • 对服务器的 SSH 访问(或者如果您在桌面上,则只需打开终端)。
  • 一个 non-root sudo user或访问 root user. 我们建议充当 non-root sudo user,但是,如果您在充当 root 时不小心,可能会损害您的系统。

在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 SonarQube

步骤 1. 首先,通过运行以下命令确保所有系统包都是最新的 apt 终端中的命令。

sudo apt update
sudo apt upgrade
sudo apt install wget apt-transport-https gnupg2 software-properties-common

步骤 2. 安装 Java OpenJDK。

现在运行以下命令将 Java 11 安装到您的 Ubuntu 系统:

sudo apt install openjdk-11-jdk

安装完成后,您可以通过检查 Java 版本来验证它:

java -version

步骤 3. 安装 PostgreSQL 数据库。

默认情况下,PostgreSQL 在 Ubuntu 22.04 基础存储库中可用。 现在运行以下命令将最新版本的 PostgreSQL 安装到您的系统中:

sudo apt install postgresql postgresql-contrib

成功安装后,启用 PostgreSQL(在系统启动时自动启动)、启动并使用以下命令验证状态:

sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

接下来,通过 PostgreSQL shell 为 SonarQube 创建新的数据库和用户:

sudo -u postgres psql

运行以下 PostgreSQL 查询为 SnonarQube 创建一个新的数据库和用户:

CREATE USER sonarqube WITH PASSWORD 'your-strong-passwd';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

之后,我们为 SonarQube 创建一个新用户,并设置自定义内核参数:

sudo useradd -b /opt/sonarqube -s /bin/bash sonarqube

接下来打开文件 /etc/sysctl.conf 使用您最喜欢的文本编辑器:

sudo nano /etc/sysctl.conf

添加以下配置:

vm.max_map_count=524288
fs.file-max=131072

Save 和 close 文件,然后运行下面的 sysctl 命令以应用新更改:

sudo sysctl --system

步骤 4. 在 Ubuntu 22.04 上安装 SonarQube。

默认情况下,SonarQube 在 Ubuntu 22.04 基础存储库中不可用。 现在运行以下命令,从官方页面下载最新版本的 SonarQube 到您的系统:

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

接下来,解压下载的文件:

unzip sonarqube-9.6.1.59531.zip
mv sonarqube-9.6.1.59531 /opt/sonarqube

我们将需要更改一些文件夹权限:

sudo chown -R sonarqube:sonarqube /opt/sonarqube

步骤 5. 配置 SonarQube。

首先,打开SonarQube配置文件’/opt/sonarqube/conf/sonar.properties‘ 使用您最喜欢的文本编辑器:

nano /opt/sonarqube/conf/sonar.properties

添加以下配置:

sonar.jdbc.username=sonarqube
sonar.jdbc.password=Your-Strong-Passwd
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

取消注释以下配置:

sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server
sonar.log.level=INFO
sonar.path.logs=logs

步骤 6. 配置 SonarQube Systemd 服务。

现在让我们创建一个 systemd 文件,因此可以控制 SonarQube 服务。 使用以下命令创建文件:

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

Save 和 close 该文件,然后使用以下命令重新加载 systemd 管理器:

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

步骤 7. 配置防火墙。

现在我们设置一个简单的防火墙(UFW) Apache 允许在默认 Web 端口 9000 上进行公共访问:

sudo ufw allow OpenSSH
sudo ufw allow 9000/tcp
sudo ufw enable

步骤 8. 访问 SonarQube Web 界面。

成功安装后,打开您的网络浏览器并使用 URL 访问 SonarQube 安装向导 https://your-server-ip-address:9000. 输入默认用户名和密码 admin/admin 并单击登录。 您将被重定向到以下页面:

恭喜! 您已成功安装 SonarQube。 感谢您使用本教程在 Ubuntu 22.04 LTS Jammy Jellyfish 系统上安装 SonarQube。 如需更多帮助或有用信息,我们建议您查看 SonarQube 官方网站.