Rocky Linux 8 安装 SonarQube 代码质量分析器

SonarQube 是 SonarSource 开发的开源代码质量检查平台。 它会自动检测代码中的错误和漏洞,并提供项目代码质量报告。 它可以分析 27 种不同编程语言的代码,包括 C、C++、Java、Javascript、PHP、Go、Python 等等。 SonarQube 帮助开发人员减少代码大小、复杂性和维护时间,并使其更易于阅读和理解。

在这篇文章中,我们将向我们展示 Rocky Linux 8 上安装 SonarQube

先决条件

  • 在 云平台上运行 Rocky Linux 8 的服务器
  • 在我们的服务器上配置的 root 密码

第 1 步 – 创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择 Rocky Linux 8 作为至少 4GB RAM 的操作系统。 通过 SSH 连接到我们的云服务器并使用页面顶部突出显示的凭据登录。

登录到服务器后,运行以下命令以使用最新的可用软件包更新基本系统。

dnf update -y

第 2 步 – 入门

首先,我们需要根据 SonarQube 要求调整内核设置。 我们可以编辑 /etc/sysctl.conf 文件。

nano /etc/sysctl.conf

添加以下行:

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

保存并关闭文件,然后运行以下命令以应用更改:

sysctl -f

接下来,使用以下命令安装 Java JDK:

dnf install java-11-openjdk-devel unzip -y

安装后,使用下面给出的命令验证 Java 版本:

java --version

我们应该看到以下输出:

openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

第 3 步 – 安装和配置 PostgreSQL

SonarQube 使用 PostgreSQL 作为数据库后端,因此我们需要在服务器上安装 PostgreSQL 数据库。

首先,使用以下命令安装 PostgreSQL 存储库:

dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

接下来,禁用默认的 PostgreSQL 模块并使用以下命令安装最新版本的 PostgreSQL:

dnf -qy module disable postgresql
dnf install postgresql13 postgresql13-server

安装完成后,使用以下命令初始化 PostgreSQL 数据库:

/usr/pgsql-13/bin/postgresql-13-setup initdb

接下来,使用以下命令启动并启用 PostgreSQL 服务:

systemctl enable --now postgresql-13

接下来,使用以下命令登录 PostgreSQL:

su - postgres
psql

接下来,使用以下命令为 SonarQube 创建数据库和用户:

create user sonar;
create database sonardb owner sonar;

接下来,授予 SonarQube 数据库的所有权限并设置用户密码:

grant all privileges on database sonardb to sonar;
ALTER USER sonar WITH ENCRYPTED password 'securepassword';

接下来,使用以下命令退出 PostgreSQL:

\q
exit

第 4 步 – 安装和配置 SonarQube

首先,使用以下命令为 SonarQube 创建一个专用用户:

useradd sonar

接下来,使用以下命令下载最新版本的 SonarQube:

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

下载成功后,使用以下命令解压下载的文件:

unzip sonarqube-9.2.2.50622.zip

接下来,使用以下命令将提取的目录移动到 /opt:

mv sonarqube-9.2.2.50622 /opt/sonarqube

接下来,编辑 SonarQube 配置文件:

nano /opt/sonarqube/conf/sonar.properties

定义我们的 SonarQube 数据库、Web 主机、JVM 选项和数据目录:

sonar.jdbc.username=sonar
sonar.jdbc.password=securepassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonardb

sonar.web.host=0.0.0.0
sonar.web.port=9000

sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

sonar.path.data=data
sonar.path.temp=temp

保存并关闭文件,然后更改 /opt/sonarqube 的所有权:

chown -R sonar:sonar /opt/sonarqube

接下来,编辑 wrapper.conf 文件并定义我们的 Java 路径:

nano /opt/sonarqube/conf/wrapper.conf

更改以下行:

wrapper.java.command=/usr/local/jdk-11.0.2/bin/java

保存并关闭文件。

第 5 步 – 为 SonarQube 创建一个 Systemd 服务文件

接下来,我们将需要创建一个 systemd 服务来管理 SonarQube 服务。 我们可以使用以下命令创建它:

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
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure

[Install]
WantedBy=multi-user.target

保存并关闭文件,然后重新加载 systemd 守护程序以应用更改:

systemctl daemon-reload

接下来,启动并启用 SonarQube 服务:

systemctl start sonarqube
systemctl enable sonarqube

接下来,使用下面给出的命令验证 SonarQube 服务状态:

systemctl status sonarqube

我们应该看到以下输出:

● sonarqube.service - SonarQube service
   Loaded: loaded (/etc/systemd/system/sonarqube.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-12-16 15:25:55 UTC; 5s ago
  Process: 6372 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
 Main PID: 6421 (wrapper)
    Tasks: 52 (limit: 23695)
   Memory: 680.4M
   CGroup: /system.slice/sonarqube.service
           ├─6421 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=Sona>
           ├─6423 java -Dsonar.wrapped=true -Djava.awt.headless=true --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.ba>
           └─6451 /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-3.el8_5.x86_64/bin/java -XX:+UseG1GC -Djava.io.tmpdir=/opt/sonarqube/temp -XX:Erro>

Dec 16 15:25:54 rockylinux systemd[1]: Starting SonarQube service...
Dec 16 15:25:54 rockylinux sonar.sh[6372]: Starting SonarQube...
Dec 16 15:25:55 rockylinux sonar.sh[6372]: Started SonarQube.
Dec 16 15:25:55 rockylinux systemd[1]: Started SonarQube service.

此时,SonarQube 已启动并侦听端口 9000。我们可以使用以下命令检查它:

ss -antpl | grep 9000

我们应该看到以下输出:

LISTEN 0      25                      *:9000             *:*    users:(("java",pid=6541,fd=13))     

第 6 步 – 访问 SonarQube Web 界面

现在,打开我们的 Web 浏览器并使用 URL http://wer-server-ip:9000 访问 SonarQube Web 界面。 我们应该看到 SonarQube 登录页面:
SonarQube 登录页面

提供默认管理员用户名和密码为 admin/admin,然后单击登录按钮。 登录后,我们应该会看到密码更新页面:

SonarQube 更新密码页面

更改默认管理员密码,然后单击更新按钮。 我们应该在以下页面上看到 SonarQube 仪表板:
SonarQube 仪表板

恭喜! 我们已在 Rocky Linux 8 上成功安装 SonarQube。我们现在可以手动创建项目或从 GitHub、GitLab 或 Azure 导入项目,然后开始从 Web 浏览器分析我们的代码。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论