您的位置:首页 > 编程语言

内网SonarQube代码扫描工具安装(全)

2020-07-04 12:34 120 查看

官网:https://www.sonarqube.org/

1、Centos7安装jdk11

下载地址:https://download.oracle.com/otn/java/jdk/11.0.7+8/8c7daf89330c48f0b9e32f57169f7bac/jdk-11.0.7_linux-x64_bin.rpm?AuthParam=1592637544_e46b950a746bfc806abe02ef631d3df9

下载完成后拷贝到内网centos7上安装

[code]rpm -ivh jdk-11.0.7_linux-x64_bin.rpm

2、下载SonarQube 8.3.1

下载地址:https://www.sonarqube.org/downloads/

下载完成后拷贝到内网centos7上进行解压

[code][root@localhost local]# unzip sonarqube-8.3.1.34397.zip

3、Centos7内网安装Postgre数据库(用于存放sonar扫描结果)

准备一台能上网的Centos7虚拟机(其他能上网的也可以)

(1)安装存储库设置软件源,用于下载pg12包至本地(postgre官网有介绍)

[code]yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

(2)创建一个文件夹用来存放下载后的rpm包

root用户登录后,进入想要存放rpm包的目录,执行以下命令创建pg12_rpms文件夹:

[code][root@localhost ~]# mkdir pg12_rpms

(3)下载rpm包,存放在pg12_rpms文件夹中

[code]yum install --downloadonly --downloaddir=./pg12_rpms postgresql12-server

下载完成的rpm包如下图:

把下载完成的rpm包,放到内网Centos7服务器上

(4)在内网服务器上安装下载好的rpm包,注意一定要按以下顺序安装

[code]rpm -ivh postgresql12-libs-12.3-5PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql12-12.3-5PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql12-server-12.3-5PGDG.rhel7.x86_64.rpm

(5)初始化数据库

[code][root@localhost pg12_rpms]# /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK

(6)设置pg12开机启动/启动

[code]systemctl enable postgresql-12
systemctl start postgresql-12

(7)修改postgres密码(root用户下)

[code][root@localhost ~]# su - postgres
上一次登录:一 6月 29 08:35:12 CST 2020pts/0 上
-bash-4.2$ psql
psql (12.3)
输入 "help" 来获取帮助信息.

postgres=# alter user postgres with password 'root';
ALTER ROLE
postgres=# \q
-bash-4.2$ exit
登出
[root@localhost ~]#

(8)开启远程访问(root用户下)

1、防火墙开启5432端口,重载防火墙

[code]firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

2、编辑postgresql配置文件“/var/lib/pgsql/12/data/postgresql.conf”,将“#listen_addresses =' localhost' ”改为“listen_addresses = '*' " 允许远程访问数据库 (注意把#取消

(9)信任远程连接(root用户下)

1、编辑pg_hba配置文件“vi /var/lib/pgsql/12/data/pg_hba.conf”

2、修改“host all all 127.0.0.1/32 ident” 为 “host all all 127.0.0.1/32 md5”(如果不改,sonar.properties配置文件中数据库连接方式不能为localhost)

3、在文件末尾添加“host all all 0.0.0.0/0 md5”,如果你只信任某个IP可以这样写“host all all 192.58.65.8/32 md5”

(10)重启数据库

[code]systemctl restart postgresql-12

这时可以用工具远程连接访问数据库了(Navicat 、pgAdmin 4 等)

(11)在Postgre数据库中创建sonarqube所需的库、用户名、密码(root用户下)

[code]su - postgres #切换用户
psql #进入命令行模式
create database sonar; #创建sonar库
create user sonar; #创建sonar用户
alter user sonar with password 'sonar'; #设置sonar用户密码
alter role sonar createdb; #给sonar用户授权
alter role sonar superuser; #给sonar用户授权
alter role sonar createrole; #给sonar用户授权
alter database sonar owner to sonar; #更改sonar库拥有者为sonar用户

注意:如果使用pgAdmin等工具连接Postgre数据库的话,可以可视化创建库、用户、并授权,无需执行以上命令

4、Centos7创建新用户

由于SonarQube无法用root用户启动,所以要新建用户来启动

官网描述:

创建用户设置密码

[code][root@localhost ~]# useradd sonar
[root@localhost ~]# passwd sonar

5、修改系统配置

Linux 环境要求:

vm.max_map_count 大于等于 262144

fs.file-max 大于等于 65536

你可以通过以下命令查看这些值:

[code]sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n

root用户运行以下命令为当前会话设置值(注意:这种方式不能永久设置值)

[code]sysctl -w vm.max_map_count=262144
#sysctl -w fs.file-max - centos中通过查看参数值已经大于65536 所以不用设置
ulimit -n 378942

永久设置值(可选):

1、在/etc/sysctl.conf文件末尾增加vm.max_map_count=262144

[code]vi /etc/sysctl.conf
vm.max_map_count=262144 # 增加这条记录

2、在/etc/profile文件末尾增加ulimit -n 378942

[code]vi /etc/profile
ulimit -n 378942 #增加这条记录
source /etc/profile #使记录生效

6、sonarqube配置/启动

1、sonarqube目录授权给sonar用户,因为后面要用sonar用户启动

[code]chown -R sonar:sonar /usr/local/sonarqube-8.3.1.34397/

2、配置连接数据库,编辑sonar.properties,放开注释修改用户、密码、数据库连接串

[code]vi /usr/local/sonarqube-8.3.1.34397/conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost/sonar

如图:

4、防火墙开启9000端口,用于访问SonarQube

[code]firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

5、启动sonarqube(启动过程大概5-6秒要等待一会才能打开网址)

[code]su - sonar #切换sonar用户
[sonar@localhost ~]$ cd /usr/local/sonarqube-8.3.1.34397/bin/linux-x86-64
[sonar@localhost linux-x86-64]$ ./sonar.sh start
Starting SonarQube...
Started SonarQube.
[sonar@localhost linux-x86-64]$

启动后打开:http://192.168.129.160:9000/     192.168.129.160为你的服务器IP,默认用户名密码为admin/admin

 

7、sonarqube汉化

汉化包地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases

下载sonar-l10n-zh-plugin-8.3.jar (注意:下载对应的版本)

把下载好的sonar-l10n-zh-plugin-8.3.jar 放到内网Centos中对应的目录/usr/local/sonarqube-8.3.1.34397/extensions/plugins

执行命令重启

[code][sonar@localhost linux-x86-64]$ ./sonar.sh restart
Gracefully stopping SonarQube...
Stopped SonarQube.
Starting SonarQube...
Started SonarQube.
[sonar@localhost linux-x86-64]$

重启完成后发现界面已经被汉化

 

(也可以通过在线安装插件的方式进行安装,我们这里讲的是内网离线安装,就不多说了)

8、安装SonarScanner

SonarQube安装好后是没法扫描项目的,所以还需安装SonarScanner

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

把下载好的sonar-scanner-cli-4.3.0.2102-linux.zip放到/usr/local目录

[code][root@localhost ~]# cd /usr/local #进入目录
[root@localhost local]# unzip sonar-scanner-cli-4.3.0.2102-linux.zip #解压
[root@localhost local]# cd sonar-scanner-4.3.0.2102-linux #进入目录
[root@localhost sonar-scanner-4.3.0.2102-linux]# vi /conf/sonar-scanner.properties #修改配置

放开sonar.host.url、sonar.sourceEncoding注释(如果SonarScanner与SonarQube部署不在同一台服务器,那么需要修改sonar.host.url)

创建软连接,将SonarScanner改为全局可使用

[code]ln -s /usr/local/sonar-scanner-4.3.0.2102-linux/bin/sonar-scanner /usr/bin/sonar-scanner

9、测试使用

拖动一个java项目ScanningTool放到/usr/local,进入目录

[code][root@localhost conf]# cd /usr/local/ScanningTool

在项目根目录下创建sonar-scanner配置文件sonar-project.properties

[code][root@localhost ScanningTool]# vim sonar-project.properties
sonar.projectKey=test-project #指定唯一实例key
sonar.projectName=test-project #在web界面显示的项目名称
sonar.projectVersion=1.0 #版本
sonar.sources=src #扫描资源
sonar.java.binaries=target #指定编译的.class
sonar.sourceEncoding=UTF-8 #源代码的编码

项目结构图

执行扫描分析

[code][root@localhost ScanningTool]# sonar-scanner

等待程序执行完毕后打开SonarQube可查看扫描信息

到此整个内网部署已完成

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: