在Debian 11 Linux系统上安装和配置SonarQube
在本指南中,我们将系统地介绍如何在Debian 11 Linux上安装和配置SonarQube的方法。
前言
在我们开始安装SonarQube之前,请确保您有以下条件:
具有64位Debian 11系统,因为SonarQube不支持32位系统,请使用uname -m来确定您的体系结构。
具有sudo权限的用户。
至少2GB RAM。
2vCPU内核。
您还需要安装Debian 11系统更新和所需的工具:
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
在Debian 11 Linux系统上安装和配置SonarQube的详细步骤
步骤1、在Debian 11上安装Java 11
由于SonarQube是用Java编写的,因此它需要Java才能发挥作用。我们将在Debian 11上安装Java OpenJDK 11,如下所示:
sudo apt install openjdk-11-jdk
验证您的Java安装:
$ java -version
Openjdk version "11.0.12"
步骤2、在Debian 11上安装PostgreSQL数据库
SonarQube支持PostgreSQL、Oracle(XE扩展、11G、12C、18C、19C和MSSQL for Windows系统。在本指南中,我们将使用SonarQobe的PostgreSQL数据库。在Debian 11上安装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
如果服务没有运行,请使用以下命令启动它:
sudo systemctl start postgresql
启用PostgreSQL在启动时启动:
sudo systemctl enable postgresql
步骤3、为SonarQube创建PostgreSQL数据库
现在让我们为SonarQube配置数据库。请先设置PostgreSQL用户的密码:
sudo passwd postgres
设置您的首选密码并切换到如下用户:
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
步骤4、下载并配置SonarQube
现在我们已经为SonarQube配置了一个数据库,我们将下载SonarQobe二进制文件。从SonarQube官方下载页面下载SonarQobe,地址在https://www.sonarsource.com/,也可以下载目标的版本,比如下载9.1版本,即下载sonarqube-9.1.0.47736.zip文件。
提取下载的SonarQube文件:
unzip sonarqube-*.zip
将提取的文件移动到/opt/目录:
sudo mv sonarqube-*/ /opt/sonarqube
1、为SonarQube创建系统用户帐户
由于SonarQube不应以root用户身份运行,因此我们需要创建一个非管理员帐户来运行SonarQobe:
sudo useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube
将目录/opt/sonarqube的所有权更改为创建的用户:
sudo chown -R sonarqube: /opt/sonarqube
2、配置SonarQube
现在我们已经成功下载并安装了SonarQube,我们需要对其进行配置。根据创建的PostgreSQL数据库设置数据库连接:
sudo vim /opt/sonarqube/conf/sonar.properties
在文件中,编辑以下行:
# DATABASE
.......
# User credentials.
..........
sonar.jdbc.username
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=192.168.200.11
....
sonar.web.port=9000
.....
# ELASTICSEARCH
.....
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError
保存并关闭文件。
步骤5、创建SonarQube系统服务文件
目前,我们还没有办法管理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 start sonarqube
启用SonarQube服务以在启动时运行:
sudo systemctl enable sonarqube
检查SonarQube服务的状态:
$ systemctl status sonarqube
允许端口9000通过防火墙:
1]、使用UFW
sudo ufw allow 9000
2]、使用Firewalld
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控制中心界面
SonarQube Web界面可以使用URL访问,地址格式为http://server-ip:9000,在此登录页面上,使用用户名admin和密码admin登陆:
成功登录后,您将被要求更改默认密码:
然后您将获得此SonarQube页面:
此页面由SonarQube集成的平台组成,即GitHub、GitLab。您可以从列出的平台创建代码。或者,您可以手动创建代码。如果您想在代码中看到问题,请导航到issues选项卡:
在上面的页面上,您可以看到代码中的所有漏洞和错误等。您还可以通过导航到rules选项卡来查看所需编程语言中管理代码的规则:
至此,说明您已经在Debian 11 Linux系统上成功安装并配置了SonarQube。有了这个控制中心界面,您可以便捷地使用SonarQube。