CentOS/RHEL/Rocky Linux上安装和配置SonarQube
本指南介绍如何在CentOS/RHEL/Rocky Linux系统上安装和配置SonarQube的方法。
安装先决条件
SonarQube是基于Java构建的,因此我们将确保安装Java 11。
同时,需要安装PostgreSQL。
在CentOS/RHEL/Rocky Linux上安装和配置SonarQube的方法
步骤1:更新并安装所需的工具
在这一步中,请确保您的服务器得到了很好的更新,并安装了安装过程中所需的所有工具。我们还将调整系统设置,如SELinux、max_map_count和fs.file-max。运行下面的命令来更新您的服务器:
sudo yum update -y
sudo yum install vim wget curl -y
1、将SELinux配置为允许
这可以通过运行以下命令来完成:
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
2、调整max_map_count和fs.file-max
在Linux内核文档中,此文件包含进程可能具有的最大内存映射区域数。内存映射区域被用作调用malloc的副作用,直接由mmap、mprotect和madvise使用,也可以在加载共享库时使用。
要调整设置以符合SonarQube的要求,请打开“/etc/sysctl.conf”文件并添加设置,如下所示:
sudo tee -a /etc/sysctl.conf<<EOF
vm.max_map_count=262144
fs.file-max=65536
EOF
然后重新加载sysctl配置,如下所示:
sudo sysctl --system
3、创建sonar用户
建议创建一个单独的用户来运行SonarQube。让我们创建一个,如下:
sudo useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonar
步骤2:安装Java 17
正如在上面介绍中所提到的,SonarQube是用Java编写的,它需要安装Java:
sudo yum -y install java-17-openjdk-devel
通过检查版本确认Java安装成功:
$ java -version
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.7.0.7-1.el8_7) (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.7.0.7-1.el8_7) (build 17.0.7+7-LTS, mixed mode, sharing)
步骤3:安装和配置PostgreSQL的说明
安装可参考在CentOS 7/RHEL 7服务器上安装PostgreSQL 15的方法,阅读地址在https://www.hmxthome.com/linux/4956.html。安装完成后,我们可以成功连接到我们的PostgreSQL数据库,这时,我们可以继续为SonarQube创建用户和数据库。
在这里,我们将为SonarQube创建一个用户。在退出数据库之前,请按如下所示进行操作:
sudo su - postgres
psql
create user sonar;
create database sonar_db owner sonar;
grant all privileges on database sonar_db to sonar;
为创建的sonar用户设置密码:
ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';
\q
exit
步骤4:获取并安装SonarQube
我们将下载SonarQube的长期版本,然后安装在我们的服务器中。按照以下步骤安装我们的SonarQube。
您可以访问SonarQube下载页面,下载地址在https://binaries.sonarsource.com/?prefix=Distribution/sonarqube/,查看他们的各种产品。或者,下载开发人员版:
cd ~/
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.1.69595.zip
然后解压缩文件:
sudo yum -y install unzip
unzip sonarqube-*.zip
之后,将文件夹重命名为sonarqube:
sudo mv sonarqube-*/ /opt/sonarqube
rm sonarqube-*.zip
步骤5:配置SonarQube
一旦文件被提取到/opt/目录,就可以配置应用程序了。
打开“/opt/sonarqube/conf/sonar.properties”文件并添加数据库详细信息,如下所示。除此之外,找到共享的行并取消对它们的注释:
$ sudo vim /opt/sonarqube/conf/sonar.properties
##数据库详细信息
sonar.jdbc.username=sonar
sonar.jdbc.password=StrongPassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonar_db
##如何访问SonarQube Web UI
sonar.web.host=0.0.0.0
sonar.web.port=9000
##Java选项
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError
##要取消注释以下Elasticsearch存储路径
sonar.path.data=data
sonar.path.temp=temp
将SonarQube文件的所有权授予我们在步骤1中创建的sonar用户:
sudo chown -R sonar:sonar /opt/sonarqube
如果在默认位置找不到Java,则必须指定SonarQube要查找的二进制文件。您可以在“/opt/sonarqube/conf/wrapper.conf”文件中指定java的位置。查找“wrapper.java.command”行,并将您的java位置放在它旁边:
$ sudo vim /opt/sonarqube/conf/wrapper.conf
wrapper.java.command=/usr/lib/jvm/jre-openjdk/bin/java
到这里,再添加SonarQube Systemd服务文件
最后,我们将确保能够通过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
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target
编辑完systemd文件后,我们必须重新加载它们,以便可以读取和加载它们:
sudo systemctl daemon-reload
然后启动并启用服务:
sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service
如果已成功启动并正在运行,请检查其状态:
$ systemctl status sonarqube.service
sonarqube.service - SonarQube service
Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; vendor preset: disabled)
Active: active
步骤6:更改防火墙规则以允许SonarQube访问
此时此刻,sonarqube服务应该正在运行。如果您无法访问web界面,请访问位于“/opt/sonarqube/logs”中的日志文件,您将在其中找到:
elasticsearch日志(es.log)。
声纳日志(sonar.log)。
网络日志(web.log)。
访问日志(access.log)以及其他日志。
当前,我们启用了SonarQube网络在9000端口上监听。为了使一切正常工作,我们应该允许防火墙上的这个端口。通过运行下面共享的命令继续执行此操作:
sudo firewall-cmd --permanent --add-port=9000/tcp && sudo firewall-cmd --reload
步骤7:访问Web用户界面
我们现在已经准备好访问SonarQube接口,并开始评估我们的代码的安全性。要访问界面,请打开您喜爱的浏览器并将其指向http://server-ip-or-fqdn:9000地址格式。
步骤8:访问SonarQube Web界面以完成SonarQube配置
在SonarQube Web界面要登录,只需点击“登录(Log In)”按钮,就会进入一个类似于下面分享的页面。使用用户名作为“admin”,使用密码“admin”:
之后,您将被要求将密码更新为新密码。输入新的管理员密码,然后继续登录:
您应该被引导进入主要区域,如下图所示:
至此,在CentOS/RHEL/Rocky Linux系统上安装和配置SonarQube顺利完成。