当前位置:   article > 正文

第一章(二):代码管理之SonarQube的部署及使用_sonarqule 9.8 postsql

sonarqule 9.8 postsql

第一章(二):代码管理之SonarQube的部署及使用

如果转载,还请注明我文章的链接,书写不易,互相珍重,期待技术交流

sonar用于进行代码的质量分析

系统环境:centos7.8

sonarqube:8.5.1

postgresql:postgresql-12.5

jre:openjdk-11

Yu

2020年11月

在这里插入图片描述

一、软件环境要求及准备

系统环境配置ip 主机名 关闭防火墙 selinux等,不再演示

1、Supported Platforms

官方说明

https://docs.sonarqube.org/8.5/requirements/requirements/

2、download

openjdk-11:http://jdk.java.net/java-se-ri/11

postgresql-12:https://www.postgresql.org/download/linux/redhat/

postgresql  yum方式安装:
Install the repository RPM:
# sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Install PostgreSQL:
# sudo yum install -y postgresql12-server

Optionally initialize the database and enable automatic start:
# sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# sudo systemctl enable postgresql-12
# sudo systemctl start postgresql-12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、Notes

从7.9版本开始 sonar不再建议使用mysql,当前其建议的三个数据库,仅剩postgresql是开源的。所以直接选postgresql

另外需要注意,如果是物理机,内存不要低于2G,如果是虚拟机,那内存不要低于3G,不然会出现启动失败或者jvm运行中宕机

IP主机名作用备注
192.168.80.151node1gitlab访问url:http://local.gitlab.com
192.168.80.152node2sonarqube访问url:http://local.sonar.com

配置好hosts(集群内所有主机均需配置)

[root@node* ~]# vim /etc/hosts
192.168.80.151    node1
192.168.80.152    node2
192.168.80.153    node3
192.168.80.151    local.gitlab.com
192.168.80.152    local.sonar.com

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、安装基础环境

1、安装jdk11

[root@node2 ~]# ls openjdk-11+28_linux-x64_bin.tar.gz
openjdk-11+28_linux-x64_bin.tar.gz

  • 1
  • 2
  • 3

解压并移动目录

[root@node2 ~]# tar xf openjdk-11+28_linux-x64_bin.tar.gz -C /usr/local/

  • 1
  • 2

配置环境变量

[root@node2 jdk-11]# vi /etc/profile
# 文件的最后位置添加
# java11 /usr/local/jdk-11环境变量
export JAVA_HOME=/usr/local/jdk-11
export JRE_HOME=\$JAVA_HOME/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar



生效环境变量
[root@node2 jdk-11]#  source /etc/profile

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

验证版本

[root@node2 jdk-11]# java --version
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

  • 1
  • 2
  • 3
  • 4
  • 5

2、安装postgresql

配置yum源

[root@node2 ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

  • 1
  • 2

安装

[root@node2 ~]# yum install -y postgresql12-server
......
Complete!
  • 1
  • 2
  • 3

初始化

[root@node2 ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK


  • 1
  • 2
  • 3
  • 4

配置

这里有个大坑,postgresql-12默认的验证是 ident,但是sonar调用postgresql登录时,是利用的md5验证,这个坑困扰了我2个多小时。。。。启动不起来,看日志的话web.log日志里会记录一个数据库连接失败,不好排查

[root@node2 ~]# vi /var/lib/pgsql/12/data/pg_hba.conf
host    all             all             127.0.0.1/32            md5
# 复制这一行,如上将ident修改为md5 并且注释掉原本的那一行

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动

[root@node2 ~]# systemctl start postgresql-12
[root@node2 ~]# systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.


  • 1
  • 2
  • 3
  • 4
  • 5

验证版本

[root@node2 ~]# psql --version
psql (PostgreSQL) 12.5


  • 1
  • 2
  • 3
  • 4

修改密码

PostgreSQL安装成功后,会在Linux系统中默认创建一个postgres用户,必须切换到postgres才可以访问PostgreSQL数据库,root用户无权访问


切换用户
[root@node2 ~]# su - postgres
-bash-4.2$


-bash-4.2$ psql
psql (12.5)
Type "help" for help.

postgres=# alter user postgres with password '123456';
ALTER ROLE


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

三、安装sonar

下载链接:https://www.sonarqube.org/downloads/

1、解压缩软件包

[root@node2 ~]# yum -y install unzip


[root@node2 ~]# unzip sonarqube-8.5.1.38104.zip

  • 1
  • 2
  • 3
  • 4
  • 5

2、配置sonar库及数据库账户

切换至postgres用户
登录数据库
root@node2 ~]# su - postgres
Last login: Fri Dec  4 10:27:02 CST 2020 on pts/1
-bash-4.2$ psql
psql (12.5)
Type "help" for help.

postgres=#



创建sonar数据库命名为sonar(随意)
postgres=# create database sonar;
CREATE DATABASE


创建一个sonar使用的用户(用户名随意)
postgres=# create user sonar;
CREATE ROLE

给sonar用户赋予密码
postgres=# alter user sonar with password '123456';
ALTER ROLE

给sonar用户授权
postgres=# alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;
ALTER ROLE
ALTER ROLE
ALTER ROLE


将sonar库所有者赋权给sonar用户
postgres=# alter database sonar owner to sonar;
ALTER DATABASE


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
查看数据库
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 sonar     | sonar    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)



查看用户
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 sonar     | Superuser, Create role, Create DB                          | {}

postgres=#


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

3、修改系统参数

复制一个窗口,使用root用户

[root@node2 ~]# vi /etc/sysctl.conf
# 文末追加
vm.max_map_count=262144
fs.file-max=65536


[root@node2 ~]# vi /etc/profile
# 文末追加
ulimit -n 65536



应用生效
[root@node2 ~]# sysctl -p
vm.max_map_count = 262144
fs.file-max = 65536
[root@node2 ~]# source /etc/profile


[root@node2 ~]# ulimit -n
65536


[root@node2 ~]# vi /etc/security/limits.conf
# 文末追加
*    soft    nofile    65536
*    hard    nofile    65536


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

max_map_count 文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量

file-max 系统级别的能够打开的文件句柄的数量

ulimit 用户级别能够打开的文件句柄的数量

4、创建sonar用户

ElasticSearch组件不允许使用root启动

[root@node2 ~]# useradd sonar
[root@node2 ~]# passwd sonar
Changing password for user sonar.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5、移动sonar目录并赋权

[root@node2 ~]# mv sonarqube-8.5.1.38104 /usr/local/
[root@node2 ~]# chown -R sonar. /usr/local/sonarqube-8.5.1.38104


  • 1
  • 2
  • 3
  • 4

6、修改sonar配置文件

先来创建两个目录,用以存储数据
[root@node2 ~]# mkdir /data/sonarqube/data -p
[root@node2 ~]# mkdir /data/sonarqube/temp -p

赋权
[root@node2 ~]# chown -R sonar. /data/sonarqube

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
[root@node2 ~]# vi /usr/local/sonarqube-8.5.1.38104/conf/sonar.properties
	 18 sonar.jdbc.username=sonar
     19 sonar.jdbc.password=123456
     36 sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar
    102 sonar.web.host=0.0.0.0
    108 sonar.web.port=9000
    407 sonar.path.data=/data/sonarqube/data
    408 sonar.path.temp=/data/sonarqube/temp


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
配置java路径
[root@node2 ~]# vi /usr/local/sonarqube-8.5.1.38104/conf/wrapper.conf
      4 wrapper.java.command=/usr/local/jdk-11/bin/java


  • 1
  • 2
  • 3
  • 4
  • 5

7、配置启动脚本

将sonar启动脚本链接到系统命令路径
[root@node2 ~]# ln -s /usr/local/sonarqube-8.5.1.38104/bin/linux-x86-64/sonar.sh /usr/bin/sonar


创建启动脚本
[root@node2 ~]# vi /etc/init.d/sonar
# 写入以下内容
# !/bin/bash
# rc file for SonarQube

/usr/bin/sonar $*


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
赋权
[root@node2 ~]# chmod 755 /etc/init.d/sonar

  • 1
  • 2
  • 3

8、启动

切换到sonar用户!!,否则Es启动会报错的

[root@node2 ~]# su - sonar
[sonar@node4 ~]$


  • 1
  • 2
  • 3
  • 4
[sonar@node2 ~]$ service sonar start
Starting SonarQube...
Started SonarQube.


  • 1
  • 2
  • 3
  • 4
  • 5

9、web端访问

浏览器直接输入" IP地址:9000 "

或者配置域名hosts

修改C:\Windows\System32\drivers\etc\hosts文件

192.168.80.152 local.sonar.com

然后访问 http://local.sonar.com:9000 即可了

在这里插入图片描述

管理员登录

默认账户:admin

默认密码:admin

在这里插入图片描述

汉化

在这里插入图片描述

会提示重启

在这里插入图片描述

点击网页的 restart server 重启 等待一会就好了

在这里插入图片描述

四、sonarqube的一些使用说明

1、管理员密码的修改

在这里插入图片描述

在这里插入图片描述

如果遗忘了admin密码,可以直接去sonar库中,sql更新一下密码即可

2、设置访问模式

默认sonar所有用户都可匿名访问web界面和内容,如果要设置为强制用户访问模式,按下图操作

在这里插入图片描述

3、创建新的用户与组

3.1创建用户

在这里插入图片描述

在这里插入图片描述

3.2创建及配置群组

默认情况下,有两个组:

sonar-administrators:默认仅有admin属于该组,但如果想要添加其他用户为管理员,也是可以的,可以在用户配置及组配置中添加进该组或者勾选用户到该组

sonar-users(默认):默认情况下,所有创建的新用户均属于该组

1)创建新组

在这里插入图片描述

在这里插入图片描述

2)添加用户进组
组的界面添加

在这里插入图片描述

在这里插入图片描述

用户的界面加入组

在这里插入图片描述

在这里插入图片描述

4、插件的安装

其实前面已经安装过一次插件了,即语言包

这里再来演示下

在这里插入图片描述

需要注意的是,有些插件开源版是是用不了的,会有提示的

不联网手动安装插件

如果不方便直接联网下载插件,也可以手工方式更新插件

前往官方插件下载界面,根据版本下载好插件后,将jar包放置到 ${sonar_home}/extensions/plugins目录下,

而且同一个插件的老版本和新版本是不能同时存在该目录的

[root@node2 ~]# cd /usr/local/sonarqube-8.5.1.38104/extensions/plugins/
[root@node4 plugins]# ls
README.txt  sonar-l10n-zh-plugin-8.5.jar

也就是放在这个目录下,根据自己的安装位置而定

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

放置完成后,重启sonar服务即可

五、sonarqube扫描器

服务端安装完成了,但是sonar还需要客户端(扫描端)来完成整体的工作

扫描器扫描代码,然后发送到服务器端,sonar才能进行代码的分析

1、扫描端的实现方式

目前有以下几种扫描端形式:

命令行

构建工具(比如:Maven,gradle,ant等的sonarqube扫描器)

持续集成平台 (比如jenkins的sonarqube扫描器)

本地扫描器 (比如intelliJ Idea, eclipse的sonarqube扫描器)

但是不论哪种方式,都是将代码通过sonar的9000端口发送至sonar服务端来实现服务

2、本地开发工具的代码扫描(IDEA插件)

我这里演示一下 Visual Studio CodeSonarLint

VScode也是近几年极为热门的一款开发工具,算是比较有代表性的

2.1 打开 vs code的扩展

也可以直接快捷键 “ctrl + shift + x打开”

在这里插入图片描述

需要注意的是,如果本地缺JRE运行环境,会报错让你安装的

可以选择工具内下载,也可以自己安装,然后配置一下环境变量,然后再来vscode中,配置一下JRE路径

(我这里是windows10系统环境)

在这里插入图片描述

2.2 简单的代码错误提示演示

在这里插入图片描述

如上图,我写错一个地方,会根据错误程度有不同颜色波浪线提示,点击错误处出现小黄灯,然后就可以看到 sonatlint的错误提示

在这里插入图片描述

3、 SonarScanner扫描器

3.1 sonar服务器web界面创建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

3.2 下载并配置sonar-scanner

下载地址,https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

比如我这里是centos7,下载对应的linux x64即可

[root@node3 ~]# ls sonar-scanner-cli-4.5.0.2216-linux.zip
sonar-scanner-cli-4.5.0.2216-linux.zip


  • 1
  • 2
  • 3
  • 4

配置域名解析

[root@node3 ~]# vim /etc/hosts
192.168.80.151    node1
192.168.80.152    node2
192.168.80.153    node3
192.168.80.151    local.gitlab.com
192.168.80.152    local.sonar.com

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解压

[root@node3 ~]# unzip sonar-scanner-cli-4.5.0.2216-linux.zip

[root@node3 ~]# mv sonar-scanner-4.5.0.2216-linux/ /usr/local/


  • 1
  • 2
  • 3
  • 4
  • 5

修改配置文件

[root@node3 ~]# cd /usr/local/sonar-scanner-4.5.0.2216-linux/
[root@node3 sonar-scanner-4.5.0.2216-linux]# vim conf/sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://local.sonar.com:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.jdbc.url=jdbc:postgresql://local.sonar.com:5432/sonar
sonar.jdbc.username=sonar
sonar.jdbc.password=123456


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

因为我们采用的postgresql默认是禁止远程登录的,所以我们还要去配置一下postgresql的远程访问权限

[root@node2 plugins]# vi /var/lib/pgsql/12/data/pg_hba.conf
host    all             all             0.0.0.0/0            md5


[root@node2 plugins]# vi /var/lib/pgsql/12/data/postgresql.conf
listen_addresses = '*'

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

生产环境一定不能全允许,要记得只限定某个IP或者IP段

重启postgresql
[root@node2 log]# systemctl restart postgresql-12


  • 1
  • 2
  • 3
  • 4

配置环境变量

[root@node3 bin]# pwd
/usr/local/sonar-scanner-4.5.0.2216-linux/bin
[root@node3 bin]#
[root@node3 bin]# vim /etc/profile
#文末追加
export PATH=$PATH:/usr/local/sonar-scanner-4.5.0.2216-linux/bin


环境变量生效
[root@node3 bin]# source /etc/profile


验证
[root@node3 bin]# sonar-scanner -v
INFO: Scanner configuration file: /usr/local/sonar-scanner-4.5.0.2216-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.5.0.2216
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Linux 3.10.0-1127.13.1.el7.x86_64 amd64


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3.3 放置zblog代码

[root@node3 tmp]# mkdir php_test
[root@node3 tmp]# mv Z-BlogPHP_1_6_5_2140_Valyria.zip php_test/
[root@node3 tmp]# cd php_test/
[root@node3 php_test]# unzip Z-BlogPHP_1_6_5_2140_Valyria.zip
[root@node3 php_test]# rm -rf Z-BlogPHP_1_6_5_2140_Valyria.zip


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.4 扫描

复制web页面上的命令

在这里插入图片描述

直接在代码目录下执行以上命令即可

执行的过程中,web页面会显示

在这里插入图片描述

执行完成后,会显示耗费的时间和资源

在这里插入图片描述

3.5 扫描结果的查看

web端会自动刷新出结果

在这里插入图片描述

在这里插入图片描述

点开每一项,还会有说明

在这里插入图片描述

3.6 结果的汇总

打开 问题 可以看到问题的汇总说明

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/206906
推荐阅读
相关标签
  

闽ICP备14008679号