Sonarqube是一个开源代码质量监测服务
依赖于mysql,不支持mariadb,所以在centos7中我们需要安装mysql来作为Sonarqube的数据库
安装服务
MySQL(sonarqube版本<7.9)
- 获取MySQL源
#CentOS 7wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmrpm -ivh mysql57-community-release-el7-9.noarch.rpm
- 安装MySQL
yum install -y mysql mysql-server
- 配置MySQL
vim /etc/my.cnfbind 10.0.0.152
- 启动MySQL
#启动systemctl start mysqld#加入开机启动systemctl enable mysqld
- 初始化数据库,连接数据库
#配置数据库连接密码mysql_secure_installation#连接数据库mysql -uroot -p
- 为sonarqube配置数据库
#创建Sonarqube数据库mysql -uroot -pleihb -e "CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;"mysql -uroot -pleihb -e "show databases;"
PostgreSQL(Sonarqube >7.9)
#安装源yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm#安装postgresqlyum install postgresql12#初始化/usr/pgsql-12/bin/postgresql-12-setup initdb#开启systemctl start postgresql-12#修改postgresql配置允许使用账号密码连接vim /var/lib/pgsql/12/data/pg_hba.conflocal all all trusthost all all 127.0.0.1/32 trusthost all all ::1/128 trust#修改postgresql配置允许我们的IP连接到数据库vim /var/lib/pgsql/12/data/postgresql.conflisten_addresses = '*'
创建数据库连接账户
#创建Sonar数据库su - postgrespsqlcreate user sonarqube with password 'sonarqube';create database sonarqube owner sonarqube;grant all on database sonarqube to sonarqube;\q
Sonarqube
- 配置Java环境
#获取Java包
wget -o java-jdk.tar.gz https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.6%2B10_openj9-0.18.1/OpenJDK11U-jdk_x64_linux_openj9_11.0.6_10_openj9-0.18.1.tar.gz
#解压缩到/usr/local
tar xf java-jdk.tar.gz -C /usr/local/
#做软链接
ln -s /usr/local/jdk-11.0.6+10 /usr/local/java
#添加Java环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/java/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 创建sonar用户
useradd sonar
- 下载Sonarqube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.2.0.32929.zip
- 解压缩
#解压缩到/usr/local
unzip sonarqube-8.2.0.32929.zip -d /usr/local
#软链接
ln -s /usr/local/sonarqube-8.0.2.32929 /usr/local/sonarqube
- 给Sonarqube目录授权
chown -R sonar:sonar /usr/local/sonarqube
- Sonarqube服务连接数据库
Sonarqube自7.9版本以来,已经不支持使用作为MySQL数据库,所以在此使用postgreSQL作为数据库
vim /usr/local/sonarqube/conf/sonar.properties
sonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonarqube
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube
- 启动
#启动
su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start"
#关闭
su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh stop"
Sonarqube使用
Sonarqube与Jenkins集成
FAQ
启动时最常见的两个错误
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法
[1]:
#修改配置文件,在文件最后加入下面两个行,用户退出重新登录生效
#sonar处改为创建的sonarqube服务用户
vi /etc/security/limits.conf
sonar soft nofile 65536
sonar hard nofile 65536
[2]:
#临时生效
sysctl -w vm.max_map_count=262144
#永久生效,写入配置文件
vim /etc/sysctl.conf
vm.max_map_count=655360
#生效配置
sysctl -p
如果还是无法启动,应该跟踪查看web.logtailf /usr/local/sonarqube/logs/web.log看日志中如何输出错误,查看Caused by处cat /usr/local/sonarqube/logs/web.log|grep 'Caused by'
