安装SonarQube

1.环境准备

  1. SonarQube服务器需要JDK 17 , Sonar-Scanner需要JDK 11 或 JDK 17
  2. PostgreSQL 11到15版本

1.1.安装JDK 17(SonarQube主机)

# 1.下载安装包
[sonar@sonar ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-aarch64_bin.rpm

# 2.安装jdk17
[sonar@sonar ~]# sudo yum -y install jdk-17_linux-x64_bin.rpm

# 3.检查java是否安装成功
[sonar@sonar ~]# java -version

1.2.安装PostgreSQL 15 (DB主机)

1.2.1.下载PostgreSQL

# 1.安装依赖
[root@postgres ~]# curl -# -O https://ftp.postgresql.org/pub/source/v15.7/postgresql-15.7.tar.bz2

1.2.2.编译安装 PostgreSQL

# 1.解决预编译依赖
[root@postgres ~]# yum -y install gcc make libicu-devel readline-devel zlib-devel openssl-devel libxml2-devel bzip2

# 2.安装PostgreSQL
[root@postgres ~]# tar jxvf postgresql-15.7.tar.bz2 -C /usr/local/src && /usr/local/src/postgresql-15.7/configure && make && make install && echo "安装PostgreSQL成功"

1.2.3.初始化数据库

# 1.创建登录用户
[root@postgres ~]# useradd postgres
[root@postgres ~]# echo "123456" | passwd --stdin postgres

# 2.创建存储目录 并 修改所属权限
[root@postgres ~]# mkdir -p /data/postgresql/{data,log}
[root@postgres ~]# chown -R postgres.postgres /data/postgresql

# 3.配置软连接
[root@postgres ~]# ln -s /usr/local/pgsql/bin/* /usr/local/bin

# 4.切换用户
[root@postgres ~]# su - postgres

# 5.初始化数据库
[postgres@postgres ~]$ initdb -D /data/postgresql/data

1.2.4.启动数据库

# 1.编辑配置文件
[postgres@postgres ~]$ vim /data/postgresql/data/postgresql.conf # 文件详情在下方
[postgres@postgres ~]$ vim /data/postgresql/data/pg_hba.conf # 文件详情在下方
[postgres@postgres ~]$ exit

# 2.添加环境变量
[root@postgres ~]# vim /etc/profile # 文件详情在下方
[root@postgres ~]# source /etc/profile

# 3.执行.service脚本,通过systemd进行控制
[root@postgres ~]# vim postgresql_service.sh # 文件详情在下方
[root@postgres ~]# sh postgresql_service.sh

# 4.启动postgresql 并设置开机自启
[root@postgres ~]# systemctl enable --now postgresql
[root@postgres ~]# psql
# 1.postgresql.conf 配置文件
listen_addresses = '*'         # 监听所有网段 , 默认监听本机
port = 5432                            # 监听的TCP端口号 , 默认值5432
max_connections = 100                   # 最大连接数 , 默认值100
log_directory = '/data/postgresql/log' # log日志存放路径
# pg_hba.conf 配置文件
# 仅允许192.168.1.0网段连接
# TYPE : 访问控制条目 local用于本地连接;host用于远程连接
# DATABASE : 允许访问的数据库
# USER : 允许访问数据库的用户
# ADDRESS : 允许访问数据库的IP 
# METHOD : 连接数据库认证方式,trust免密认证;md5 , password表示需要密码认证;peer需要操作系统的用户身份认证
# TYPE  DATABASE        USER            ADDRESS               METHOD
host    all             all             10.39.84.0/24        trust
# 2.环境变量
export PGDATA=/data/postgresql/data
export PGHOME=/usr/local/pgsql
export PGPORT=5432
export PGUSER=postgres
export PATH=$PATH:/usr/local/pgsql/bin
# 3.postgresql_service.sh 脚本
#!/bin/bash
service(){
    cat > /usr/lib/systemd/system/postgresql.service <<EOF
[Unit]
Description=postgresql
After=network.target 

[Service]
User=$PGUSER
Group=$PGUSER
Type=forking 
ExecStart=/usr/local/pgsql/bin/pg_ctl -D $PGDATA start
Restart=always
ExecStop=/usr/local/pgsql/bin/pg_ctl -D $PGDATA stop -m fast

[Install]
WantedBy=multi-user.target
EOF
}
service 
systemctl daemon-reload

1.2.5.准备数据库及用户

# 1.创建新用户
postgres=# CREATE ROLE sonar WITH LOGIN PASSWORD '123456';

# 2.创建 sonar 数据库
postgres=# CREATE DATABASE sonar OWNER sonar;

# 3.授予数据库访问权限
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
postgres=# \q

1.2.6.sonar服务器登录数据库

# 1.需要注意 一定要先创建 Linux 用户 sonar , 不然无法操作 PostgreSQL
[root@sonar ~]# useradd sonar
[root@sonar ~]# echo "123456" | passwd --stdin sonar

# 2.给予sonar用户权限
[root@sonar ~]# vim /etc/sudoers
	sonar    ALL=(ALL)       ALL

# 3.本地需要安装postgresql才可以连接到远端DB , 但是直接yum安装可能遇到DB版本冲突问题
[root@sonar ~]# yum -y install postgresql

[root@sonar ~]# su sonar
[sonar@sonar root]$ psql -h 10.39.84.100 -p 5432 -U sonar -d sonar

2.部署 SonarQube

2.1.环境准备

# 1.安装必要软件
[root@sonar ~]# yum install -y wget zip unzip

# 2.调整系统参数
[root@sonar ~]# vim /etc/sysctl.conf # 文件详情在下方
[root@sonar ~]# vim /etc/security/limits.conf # 文件详情在下方
[root@sonar ~]# sysctl -p /etc/sysctl.conf
# 1./etc/sysctl.conf 配置文件
vm.max_map_count = 262144
fs.file-max = 65536

# 2./etc/security/limits.conf 配置文件
sonarqube soft nproc 4096
sonarqube hard nproc 4096
sonarqube soft nofile 65536
sonarqube hard nofile 65536

2.2.准备软件 及 数据目录

# 1.准备数据目录
[root@sonar ~]# mkdir -p /data/sonar/{data,temp}

# 2.下载 SonarQube 9.9LTA (9.9.6.92038版本)
[root@sonar ~]# curl -O -# https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.6.92038.zip
[root@sonar ~]# unzip sonarqube-9.9.6.92038.zip -d /usr/local
[root@sonar ~]# mv /usr/local/sonarqube-9.9.6.92038 /usr/local/sonar

# 3.授予权限
[root@sonar ~]# chown -R sonar:sonar /usr/local/sonar
[root@sonar ~]# chown -R sonar:sonar /data/sonar

2.3.修改配置文件

# 1.配置环境变量
[root@sonar ~]# vim /etc/profile
	export SONAR_HOME=/usr/local/sonar
[root@sonar ~]# source /etc/profile

# 2.准备好Postgres驱动程序
wget https://jdbc.postgresql.org/download/postgresql-42.7.3.jar -O $SONAR_HOME/lib/postgresql.jar

# 3.配置 SonarQube
[root@sonar ~]# vim $SONAR_HOME/conf/sonar.properties # 文件详情在下方
#在配置文件开头增加以下配置

#数据库配置
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:postgresql://10.39.84.100:5432/sonar

#文件配置
sonar.path.data=/data/sonar/data
sonar.path.temp=/data/sonar/temp

#Web配置
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/

2.4.开放端口

[root@sonar ~]# firewall-cmd --add-port=9000/tcp --permanent
[root@sonar ~]# firewall-cmd --reload

2.5.启动 SonarQube

# 设置开机自启
[root@sonar root]$ vim /usr/lib/systemd/system/sonarqube.service
    [Unit]
    Description=SonarQube service
    After=syslog.target network.target

    [Service]
    Type=forking
    ExecStart=/usr/local/sonar/bin/linux-x86-64/sonar.sh start
    ExecStop=/usr/local/sonar/bin/linux-x86-64/sonar.sh stop
    User=sonar
    Group=sonar
    Restart=always
    LimitNOFILE=65536
    LimitNPROC=10240

    [Install]
    WantedBy=multi-user.target
    
[root@sonar ~]# systemctl daemon-reload
[root@sonar ~]# systemctl enable --now sonarqube
[root@sonar ~]# systemctl status sonarqube

2.6.登录 SonarQube

http://10.39.84.100:9000/
默认用户名密码 :
	用户名 : admin
	密码  : admin
新的密码 :
	密码  : 123456

3.配置SonarQube

3.1.安装中文插件

  1. 方法一

    [截图]

  2. 方法二

    1. 手动下载插件 https://github.com/xuhuisheng/sonar-l10n-zh/tree/master

    2. 存放到/usr/local/sonar/extensions/plugins/路径下

3.2.配置Sonar-Scanner

  1. 下载sonar-scanner

    [sonar@sonar ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
    [sonar@sonar ~]# unzip sonar-scanner-cli-5.0.1.3006-linux.zip -d /usr/local
    [sonar@sonar ~]# mv /usr/local/sonar-scanner-5.0.1.3006-linux /usr/local/sonar-scanner
    
  2. 配置环境变量

    [sonar@sonar ~]# vim /etc/profile
    	export SONAR_SCANNER_HOME=/usr/local/sonar-scanner
    	export PATH=$SONAR_SCANNER_HOME/bin:$PATH
    [sonar@sonar ~]# source /etc/profile
    
  3. 校验sonar-scanner配置结果

    [sonar@sonar ~]# sonar-scanner -v
    
  4. 修改sonar-scanner的jdk为本机jdk(默认自带)

    [sonar@sonar ~]# vim /usr/local/sonar-scanner/bin/sonar-scanner
    	use_embedded_jre=false
    

3.3.使用Sonar-Scanner(这个自己研究吧,以下仅供参考)

  1. 在代码下载到工作目录下 , 在该目录下创建扫描文件(fileName.properties)

    sonar.projectKey 指定项目的关键字,sonar.host.url指定服务器地址(可以直接在配置文件中写死),projectName指定项目的名称, projectVersion指定项目的版本(可以用构建时间和构建ID定义),login指定登录用户名,password指定登录用户密码, projectDescription指定项目的描述信息, links.homepage指定项目的主页(超链接), sources指定扫描的目录, sourceEncoding指定扫描时的编码, **java.binaries**指定编译后的类文件目录(必填), **java.test.binaries**指定编译后的测试类目录,**java.surefire.report**指定测试报告目录。

    [sonar@sonar ~]# sonar-scanner -Dsonar.host.url=http://10.39.84.100:9000 \
    -Dsonar.projectKey=devops-maven-service \
    -Dsonar.projectName=devops-maven-service \
    -Dsonar.projectVersion=1.1 \
    -Dsonar.login=admin \
    -Dsonar.password=wg1q2w3e \
    -Dsonar.ws.timeout=30 \
    -Dsonar.projectDescription="my first project!" \
    -Dsonar.links.homepage=http://10.39.84.100/devops/devops-maven-service \
    -Dsonar.links.ci=http://10.39.84.100:8080/job/demo-pipeline-service/ \
    -Dsonar.sources=src \
    -Dsonar.sourceEncoding=UTF-8 \
    -Dsonar.java.binaries=target/classes \
    -Dsonar.java.test.binaries=target/test-classes \
    -Dsonar.java.surefire.report=target/surefire-reports
    
posted @ 2025-04-29 13:28  凨筝  阅读(172)  评论(0)    收藏  举报