【SonarQube】CentOS7安装SonarQube单机版本并执行代码扫描

sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。

安装环境

  • HOST:10.129.4.43
  • CentOS7.3
  • Java-11
  • PostgreSQL-13.3
  • SonarQube - Community EditionVersion 8.9.1

 

1. 安装前准备

1.1 JDK

最新的SonarQube-8.9版本运行需要Java11+,CentOS7自带的Java8版本不够时,需要先升级。

# 先升级yum源
$ yum -y update

# 查看是不是有可以在线安装的java11
$ [root@ac3-node03 ~]# yum list | grep java-11-openjdk

# 查看并卸载旧版本的java
$ rpm -qa | grep java
$ rpm -qa | grep jdk
$ rpm -e --nodeps jdk1.8-1.8.0_201-fcs.x86_64
$ rpm -e --nodeps ...

# 安装Java11
$ yum -y install java-11-openjdk
$ java -version
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing)
$

1.2 数据库

SonarQube的安装包里自带有H2数据库,SonarQube安装完成后,网页会提示"Embedded database should be used for evaluation purposes only",我们生产中,须使用SonarQube支持的其他数据库类型:Oracle, PostgreSQL and Microsoft SQLServer。这里我们选择使用PostgreSQL数据库。

1.2.1 数据库安装

安装数据库

# 安装RPM仓库
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装PostgreSQL
$ sudo yum install -y postgresql13-server

# 初始化数据库
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb

# 设置开机自启动
$ sudo systemctl enable postgresql-13

# 启动数据库
$ sudo systemctl start postgresql-13

修改PostgreSQL数据库文件存放路径

$ sudo find / -name postgresql-13.service
/usr/lib/systemd/system/postgresql-13.service
...
$ sudo vi /usr/lib/systemd/system/postgresql-13.service
# 修改下面的路径
[Service]
Environment=PGDATA=/data/pgsql/13/data/
# 保存退出

# 把当前的数据库文件移到要修改的目录下
$ mv /var/lib/pgsql/ /data/
$ cd /data/
$ ls -ltr
drwx------ 3 postgres  postgres     37 Jun 21 14:49 pgsql

# 重启数据库
$ sudo systemctl stop postgresql-13.service
$ sudo systemctl start postgresql-13.service

# 检查
# su - postgres
-bash-4.2$ psql
psql (13.3)
Type "help" for help.

postgres=# show data_directory;
   data_directory
---------------------
 /data/pgsql/13/data
(1 row)

postgres=# \q
-bash-4.2$ exit
logout

修改超级管理员账号初始密码

#修改登录PostgreSQL的密码
$ sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'Pg18sql2021##';
postgres=# \q


#修改linux系统postgres用户的密码
PostgreSQL数据库安装时系统会创建一个默认的linux用户postgres,修改密码步骤如下
$ sudo passwd -d postgres
Removing password for user postgres.
passwd: Success
$ sudo -u postgres passwd
Changing password for user postgres.
New password: Pg18sql2021##
Retype new password: Pg18sql2021##
passwd: all authentication tokens updated successfully.

1.2.2 创建数据库和账号

数据库安装完成以后会自动创建linux用户postgres,用su - postgres切换进去,再用psql进入命令行模式,为SonarQube创建数据库和用户

$ su - postgres
Password: Pg18sql2021##
-bash-4.2$ psql

# 创建sonar数据库
postgres=# create database sonar;
CREATE DATABASE

# 创建sonar用户
postgres=# create user sonar;
CREATE ROLE

# 设置密码
postgres=# alter user sonar with password 'postgres';
ALTER ROLE

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

# 更改sonar数据库属主
postgres=# alter database sonar owner to sonar;
ALTER DATABASE
postgres=#

查看数据库\l

查看用户\du

至此,数据库准备完毕。


2. 安装SonarQube服务

单机版SonarQube服务安装(下载.zip压缩包解压安装)。

2.1 下载解压SonarQube

# 下载
$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.1.44547.zip

# 解压到指定路径下
$ unzip -d /home/developer/apps/ sonarqube-8.9.1.44547.zip
$ cd apps
$ ls -ltr
drwxr-xr-x 11 developer developer 4096 Jun  8 09:18 sonarqube-8.9.1.44547
$

2.2 配置数据库

配置SonarQube使用PostgreSQL数据库

$ vi /home/developer/apps/sonarqube-8.9.1.44547/conf/sonar.properties

# 修改如下的配置
# DATABASE
...
# User credentials.
sonar.jdbc.username=sonar
sonar.jdbc.password=postgres

#----- PostgreSQL 9.3 or greater
sonar.jdbc.url=jdbc:postgresql://localhost/sonar

2.3 配置Elasticsearch存储路径

Elasticsearch的默认存储路径在 $SONARQUBE-HOME/data,修改的话配置在这里

$ vi sonarqube-8.9.1.44547/conf/sonar.properties

修改下面的配置
sonar.path.data=/data/sonarqubedata/data
sonar.path.temp=/data/sonarqubedata/temp

2.4 修改web服务配置

Web服务默认的端口号是9000,我们服务器上9000端口被占用,通过配置文件修改成其他的端口。

$ vi sonarqube-8.9.1.44547/conf/sonar.properties

# 修改下面的配置
sonar.web.port=9003
sonar.web.context=/data/sonarqubedata/context

2.5 Linux服务器配置修改

使用root用户,修改下面的配置

vi /etc/sysctl.conf
# 在末尾添加两行
vm.max_map_count=262144
fs.file-max=65536
```

修改/etc/profile文件
```bash
vi /etc/profile
# 在末尾添加一行保存
ulimit -n 65536

# 使配置生效
source /etc/profile

2.6 启动SonarQube服务

# 进到SonarQube家目录下,启动服务
$ pwd
/home/developer/apps/sonarqube-8.9.1.44547
$ bin/linux-x86-64/sonar.sh start
Starting SonarQube...
Started SonarQube.
$

服务成功启动,通过浏览器可以直接访问SonarQube了,初始账号:admin/admin

2.7 汉化(可选)

汉化包下载:https://github.com/xuhuisheng/sonar-l10n-zh,选择自己SonarQube版本匹配的汉化包下载。

将下载下来的jar包拷贝到 $SONARQUBE-HOME/extensions/plugins/ 下

$ pwd
../apps/sonarqube-8.9.1.44547/extensions/plugins
$ ls -ltr
total 68
-rw-r--r-- 1 developer developer   737 Jun  8 09:01 README.txt
-rw-r--r-- 1 developer developer 61903 Jun 22 16:10 sonar-l10n-zh-plugin-8.9.jar

重启SonarQube

$ pwd
../apps/sonarqube-8.9.1.44547
$ bin/linux-x86-64/sonar.sh stop
Gracefully stopping SonarQube...
Stopped SonarQube.
$ bin/linux-x86-64/sonar.sh start
Starting SonarQube...
Started SonarQube.

汉化完成

3. 安装Sonar-scanner客户端

sonar-scanner提供本地的代码扫描,客户端可以安装在与服务端相同的服务器,也可以装在不同的服务器(也可以安装在开发人员本地电脑)。这里我们安装在与web服务端相同的服务器。扫描时,需要将项目代码上传到服务器上完成扫描。

3.1 下载解压

使用浏览器打开刚刚安装好的SonarQube Web UI,新建project时根据指引,可以找到对应OS的sonar-scanner客户端下载地址以及使用命令。

下载解压

# 下载
$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip

# 解压
$ unzip -d /data/ sonar-scanner-cli-4.6.2.2472-linux.zip

3.2 修改配置文件

# 修改配置
$ vi /data/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties

# 打开下面两项配置
sonar.host.url=http://localhost:9003 # 因为是在本地,不用修改了
sonar.sourceEncoding=UTF-8

# 并添加两行,写上登录SonarQube Web UI的账号密码
sonar.login=youraccount
sonar.password=yourpassword

3.3 配置环境变量

使用root账号,修改操作系统环境变量

# 修改环境变量(下面的步骤使用root账号操作)
# vi /etc/profile

# 在最下面添加一行并保存
export PATH="$PATH:/data/sonar-scanner-4.6.2.2472-linux/bin"

# 使配置生效
# source /etc/profile

# 环境变量设置成功,可以在服务器的任何地方执行sonar-scanner命令了
# sonar-scanner -v
INFO: Scanner configuration file: /data/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.6.2.2472
INFO: Java 11.0.11 AdoptOpenJDK (64-bit)
INFO: Linux 3.10.0-693.2.2.el7.x86_64 amd64
#

4. 代码扫描

4.1 拉取项目代码

从gitlab仓库拉取代码到服务器(实际使用中,按测试要求拉取对应tag的代码)

# 使用root账号操作
# cd /data/sonar_projects/
# git clone http://xxx.xxx.xxx.xxx/test/test.git

4.2 添加扫描配置文件sonar-project.properties

进入项目代码的工程目录,在根目录下面新建一个配置文件sonar-project.properties

# cd test/
# touch sonar-project.properties

# 写入如下的内容
# must be unique in a given SonarQube instance
sonar.projectKey=test

# --- optional properties ---
# defaults to project key
sonar.projectName=test      # 修改成实际项目名称

# defaults to 'not provided'
sonar.projectVersion=1.0    # 修改成代码实际的版本号

# Path is relative to the sonar-project.properties file. Defaults to .
sonar.sources=.

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

4.3 执行扫描

在当前目录执行sonnar-scanner

# sonar-scanner
INFO: Scanner configuration file: /data/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: /data/sonar_projects/boss3/sonar-project.properties
......
......
http://localhost:9003/dashboard?id=boss3
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://localhost:9003/api/ce/task?id=AXoyfOjArSHJczayS5bx
INFO: Analysis total time: 39.385 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 41.029s
INFO: Final Memory: 8M/30M
INFO: ------------------------------------------------------------------------

扫描结束后,就可以去网页上查看扫描结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值