Rocky Linux 8.7系统下SonarQube代码质量管理平台安装配置实战教程 从基础环境准备到服务启动包含数据库配置及常见问题解决
引言
SonarQube是一个开源的代码质量管理平台,用于持续检查代码质量,提供代码缺陷、漏洞和代码异味检测。它支持多种编程语言,并能够与CI/CD工具集成,帮助开发团队在开发过程中实时监控和改进代码质量。在Rocky Linux 8.7系统上安装和配置SonarQube需要一系列步骤,本文将详细介绍从基础环境准备到服务启动的全过程,包括数据库配置以及常见问题的解决方案。
环境准备
在开始安装SonarQube之前,我们需要确保Rocky Linux 8.7系统已经进行了基础配置。首先,更新系统到最新状态:
sudo dnf update -y
然后,安装必要的工具和依赖:
sudo dnf install -y wget unzip curl which java-11-openjdk-devel
为了确保SonarQube能够正常运行,我们需要设置系统参数。编辑/etc/sysctl.conf
文件:
sudo vi /etc/sysctl.conf
在文件末尾添加以下内容:
vm.max_map_count=262144 fs.file-max=65536 ulimit -n 65536 ulimit -u 4096
保存并退出,然后应用更改:
sudo sysctl --system
接下来,我们需要创建一个专用的用户来运行SonarQube,这有助于提高安全性:
sudo useradd -r -s /bin/false sonarqube
Java环境安装与配置
SonarQube需要Java环境支持,推荐使用OpenJDK 11。我们可以使用以下命令安装:
sudo dnf install -y java-11-openjdk-devel
安装完成后,验证Java版本:
java -version
应该显示类似以下内容:
openjdk version "11.0.xx" OpenJDK Runtime Environment (build 11.0.xx) OpenJDK 64-Bit Server VM (build 11.0.xx, mixed mode, sharing)
设置JAVA_HOME环境变量,编辑/etc/profile.d/java.sh
文件:
sudo vi /etc/profile.d/java.sh
添加以下内容:
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which java))))) export PATH=$PATH:$JAVA_HOME/bin
保存并退出,然后使更改生效:
source /etc/profile.d/java.sh
验证JAVA_HOME是否设置正确:
echo $JAVA_HOME
数据库安装与配置
SonarQube支持多种数据库,包括PostgreSQL、MySQL、Oracle和SQL Server。在本教程中,我们将使用PostgreSQL作为SonarQube的数据库。
首先,安装PostgreSQL:
sudo dnf install -y postgresql postgresql-server
初始化PostgreSQL数据库:
sudo postgresql-setup --initdb
启动PostgreSQL服务并设置开机自启:
sudo systemctl start postgresql sudo systemctl enable postgresql
登录到PostgreSQL并创建SonarQube数据库和用户:
sudo -u postgres psql
在PostgreSQL命令行中执行以下SQL语句:
CREATE DATABASE sonarqube; CREATE USER sonar WITH ENCRYPTED PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar; ALTER DATABASE sonarqube OWNER TO sonar; q
接下来,我们需要配置PostgreSQL允许远程连接。编辑/var/lib/pgsql/data/pg_hba.conf
文件:
sudo vi /var/lib/pgsql/data/pg_hba.conf
在文件末尾添加以下内容:
host sonarqube sonar 0.0.0.0/0 md5
然后,编辑/var/lib/pgsql/data/postgresql.conf
文件:
sudo vi /var/lib/pgsql/data/postgresql.conf
找到listen_addresses
参数,将其修改为:
listen_addresses = '*'
保存并退出,然后重启PostgreSQL服务:
sudo systemctl restart postgresql
SonarQube下载与安装
现在,我们可以下载并安装SonarQube。首先,访问SonarQube官方网站(https://www.sonarqube.org/downloads/)获取最新版本的下载链接。在本教程中,我们将使用SonarQube 9.9.0.65466 Community Edition。
下载SonarQube:
cd /opt sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
解压下载的文件:
sudo unzip sonarqube-9.9.0.65466.zip
创建一个符号链接以便于管理:
sudo ln -s sonarqube-9.9.0.65466 sonarqube
更改SonarQube目录的所有权:
sudo chown -R sonarqube:sonarqube /opt/sonarqube-9.9.0.65466 sudo chown -R sonarqube:sonarqube /opt/sonarqube
SonarQube配置
现在,我们需要配置SonarQube以使用我们之前创建的PostgreSQL数据库。编辑SonarQube配置文件:
sudo vi /opt/sonarqube/conf/sonar.properties
找到并取消注释以下行,并根据实际情况修改:
sonar.jdbc.username=sonar sonar.jdbc.password=your_password sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
保存并退出。
接下来,我们需要配置SonarQube Web服务器的访问地址。编辑同一个文件,找到并取消注释以下行:
sonar.web.host=0.0.0.0 sonar.web.port=9000 sonar.web.context=/sonarqube
保存并退出。
启动SonarQube服务
现在,我们可以启动SonarQube服务。首先,我们需要以sonarqube用户身份运行SonarQube:
sudo -u sonarqube /opt/sonarqube/bin/linux-x86-64/sonar.sh start
检查SonarQube服务状态:
sudo -u sonarqube /opt/sonarqube/bin/linux-x86-64/sonar.sh status
如果服务正在运行,应该显示”SonarQube is running (pid xxxxx)“。
为了方便管理,我们可以创建一个systemd服务文件。编辑/etc/systemd/system/sonarqube.service
文件:
sudo vi /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
保存并退出,然后重新加载systemd配置:
sudo systemctl daemon-reload
启动SonarQube服务并设置开机自启:
sudo systemctl start sonarqube sudo systemctl enable sonarqube
检查SonarQube服务状态:
sudo systemctl status sonarqube
访问与初步设置
现在,我们可以通过浏览器访问SonarQube Web界面。打开浏览器,输入以下地址:
http://your_server_ip:9000/sonarqube
默认情况下,使用以下凭据登录:
- 用户名:admin
- 密码:admin
首次登录后,系统会要求您更改密码。按照提示操作即可。
登录后,您可以开始配置SonarQube,包括:
- 安装插件
- 创建项目
- 配置质量门
- 设置权限等
常见问题及解决方案
1. SonarQube无法启动,提示”max virtual memory areas vm.max_map_count [65530] is too low”
解决方案:增加vm.max_map_count的值,如前所述,编辑/etc/sysctl.conf
文件,添加vm.max_map_count=262144
,然后运行sudo sysctl --system
。
2. SonarQube无法启动,提示”elasticsearch max file descriptors [4096] for elasticsearch process is too low”
解决方案:增加文件描述符限制,编辑/etc/security/limits.conf
文件,添加以下内容:
sonarqube - nofile 65536 sonarqube - nproc 4096
然后重启系统。
3. 数据库连接失败
解决方案:检查数据库配置是否正确,确保PostgreSQL服务正在运行,并且SonarQube配置文件中的数据库连接信息正确。检查防火墙设置,确保SonarQube服务器可以访问数据库端口(默认为5432)。
4. SonarQube Web界面无法访问
解决方案:检查SonarQube服务是否正在运行,检查防火墙设置,确保端口9000已开放。可以使用以下命令开放端口:
sudo firewall-cmd --permanent --add-port=9000/tcp sudo firewall-cmd --reload
5. SonarQube运行缓慢或内存不足
解决方案:调整SonarQube的内存设置。编辑/opt/sonarqube/conf/sonar.properties
文件,找到并修改以下参数:
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError sonar.ce.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError sonar.search.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
根据服务器的实际内存情况调整这些值。
6. SonarQube启动后自动停止
解决方案:检查SonarQube日志文件,通常位于/opt/sonarqube/logs/
目录下。查看sonar.log
文件以获取错误信息。常见原因包括Java版本不兼容、内存不足或数据库连接问题。
7. 无法上传项目分析结果
解决方案:检查SonarQube服务器和项目分析工具之间的网络连接。确保SonarQube服务器URL正确配置在项目分析工具中。检查项目分析工具的日志以获取更多错误信息。
总结
通过本教程,我们详细介绍了在Rocky Linux 8.7系统上安装和配置SonarQube代码质量管理平台的完整过程。从基础环境准备、Java环境安装、数据库配置,到SonarQube的安装、配置和启动,以及常见问题的解决方案。现在,您已经拥有一个功能完整的SonarQube实例,可以开始使用它来管理和提高代码质量了。
SonarQube是一个强大的工具,可以帮助开发团队发现代码中的问题,提高代码质量,减少技术债务。通过持续集成和持续部署流程中的集成,SonarQube可以成为开发流程中不可或缺的一部分。
在实际使用过程中,您可能需要根据具体需求进一步配置SonarQube,例如安装特定语言的插件、配置质量门、设置权限等。希望本教程对您有所帮助,祝您使用SonarQube愉快!