Sonarqube是一个开源代码质量监测服务
依赖于mysql,不支持mariadb,所以在centos7中我们需要安装mysql来作为Sonarqube的数据库

安装服务

MySQL(sonarqube版本<7.9)

  1. 获取MySQL源
  1. #CentOS 7
  2. wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  3. rpm -ivh mysql57-community-release-el7-9.noarch.rpm
  1. 安装MySQL
  1. yum install -y mysql mysql-server
  1. 配置MySQL
  1. vim /etc/my.cnf
  2. bind 10.0.0.152
  1. 启动MySQL
  1. #启动
  2. systemctl start mysqld
  3. #加入开机启动
  4. systemctl enable mysqld
  1. 初始化数据库,连接数据库
  1. #配置数据库连接密码
  2. mysql_secure_installation
  3. #连接数据库
  4. mysql -uroot -p
  1. 为sonarqube配置数据库
  1. #创建Sonarqube数据库
  2. mysql -uroot -pleihb -e "CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;"
  3. mysql -uroot -pleihb -e "show databases;"

PostgreSQL(Sonarqube >7.9)

  1. #安装源
  2. yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  3. #安装postgresql
  4. yum install postgresql12
  5. #初始化
  6. /usr/pgsql-12/bin/postgresql-12-setup initdb
  7. #开启
  8. systemctl start postgresql-12
  9. #修改postgresql配置允许使用账号密码连接
  10. vim /var/lib/pgsql/12/data/pg_hba.conf
  11. local all all trust
  12. host all all 127.0.0.1/32 trust
  13. host all all ::1/128 trust
  14. #修改postgresql配置允许我们的IP连接到数据库
  15. vim /var/lib/pgsql/12/data/postgresql.conf
  16. listen_addresses = '*'

创建数据库连接账户

  1. #创建Sonar数据库
  2. su - postgres
  3. psql
  4. create user sonarqube with password 'sonarqube';
  5. create database sonarqube owner sonarqube;
  6. grant all on database sonarqube to sonarqube;
  7. \q

Sonarqube

  1. 配置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
  1. 创建sonar用户
useradd sonar
  1. 下载Sonarqube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.2.0.32929.zip
  1. 解压缩
#解压缩到/usr/local
unzip sonarqube-8.2.0.32929.zip -d /usr/local

#软链接
ln -s /usr/local/sonarqube-8.0.2.32929 /usr/local/sonarqube
  1. 给Sonarqube目录授权
chown -R sonar:sonar /usr/local/sonarqube
  1. 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
  1. 启动
#启动
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.log
tailf /usr/local/sonarqube/logs/web.log看日志中如何输出错误,查看Caused by处
cat /usr/local/sonarqube/logs/web.log|grep 'Caused by'