SonarQube是一个实用的代码质量管理平台!它可以轻松评估代码质量,并提供易于理解的建议,以帮助提高代码的可读性,可维护性和可靠性。还可以自定义您的代码质量管理流程,并支持许多不同的编程语言。
SonarQube启动是需要数据库和java环境支持,在7.9版本之前是支持MySql8.0以下+JDK8环境的,但在7.9版本及之后版本就不再支持Mysql了,JDK版本要求也上传至11。
以下安装是基于SonarQube9.6、postgresql11、JDK11安装
JAVA环境安装
首先登陆oracle下载安装包,下载地址。下载到本地后通过scp命名或者工具将安装包上传到centos目录中,我选择的是/home/java。
cd /home/java
# 解压压缩包
tar -zxvf jdk-11.0.18_linux-x64_bin.tar.gz
# 将解压后的文件移动到usr/local下面
mv jdk-11.0.18 /usr/local/
# 添加环境变量
vim /etc/profile
# 将以下内容写入配置文件
export JAVA_HOME=/usr/local/jdk-11.0.18
export JRE_HOME=\$JAVA_HOME/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新使配置生效
source /etc/profile
# 执行java -version能出现版本号即成功
Postgresql安装
Postgresql安装的11版本,可以通过yum命令安装,无需先下载安装包再上传文件方式。参考
# 安装pgdg-redhat-repo
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装postgresql11-server
yum install postgresql11-server
# 进入安装目录并初始化数据库
cd /usr/pgsql-11/bin && ./postgresql-11-setup initdb
# 启动服务
systemctl start postgresql-11
到这,已经算安装完成了,但是配置文件没有修改会导致远程连接,本地登陆验证等受限。
修改postgresql.conf
# 监听所有访问,修改连接权限
listen_address='*'
# 密码验证开启
password_encryption = on
修改pg_hba.conf
# 原配置信息
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
# 修改为
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 password
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
host all all 0.0.0.0 0.0.0.0 md5
# 重启服务
systemctl restart postgresql-11
# 修改默认用户密码
su - postgres
psql
## 修改密码
alter user postgres password '密码';
SonarQube安装
SonarQube下载的9.6.1版本,下载地址,在安装前需要先新增用户与用户组,使用root用户的话SonarQube中es无法启动。
# 新增sonar用户与用户组
groupadd sonar
useradd sonar -g sonar
安装SonarQube
# 安装解压指令,有则无需安装
yum install unzip
# 解压
unzip sonarqube-9.6.1.zip
# 创建目录并移动解压后的sonarqube
mkdir /opt/sonar && mv sonarqube-9.6.1/* /opt/sonar/
# 赋权
chown -R sonar.sonar /opt/sonar/
修改配置文件,设置数据库连接属性
sonar.jdbc.username={username}
sonar.jdbc.password={password}
sonar.jdbc.url=jdbc:postgresql://localhost/{数据库名称}
启动服务
# 切换用户
su sonar
# 启动服务
/opt/sonar/bin/linux-x86-64/sonar.sh start
# 如需查看日志,可在/opt/sonar/logs/下查询web.log、es.log、sonar.log日志信息
常见错误
app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 1
这个报错是指SonarQube不能使用root用户启动
app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 143
这个报错是指数据库没法连接,有可能是因为用户认证失败,或可能数据库权限不够,又或者是表无法创建;这个时间可以查看/opt/sonar/logs/web.log信息。
2023.02.08 16:07:25 ERROR web[][o.s.s.p.PlatformImpl] Web server startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@55054057-org.sonar.server.platform.db.CheckDatabaseCharsetAtStartup': Initialization of bean failed; nested exception is Database charset is SQL_ASCII. It must support UTF8.
如抛出这个信息,则是因为创建的数据库字符集不是UTF8格式,可进入数据库命令行后执行以下代码解决:
# 参考自:https://blog.csdn.net/qq_35624642/article/details/81985940
update pg_database set datallowconn = TRUE where datname = 'template0';
update pg_database set datistemplate = FALSE where datname = 'template1';
drop database template1;
create database template1 with template = template0 encoding = 'UTF8';
update pg_database set datistemplate = TRUE where datname = 'template1';
update pg_database set datallowconn = FALSE where datname = 'template0';
如是其他错误,则检查数据库是否能够远程连接成功或根据日志信息继续排查。