sonar安装文档
sonar结构说明
sonar 是一款代码质量检测工具,包含了sonarqube Server,sonarqube Database,sonarqube Scanners三个部分。
sonarqube Server:包含了ComuteEngine,SearchServer,WebServer,SonarQube Plugins四个组件。其中,WebServer是给到浏览器访问的组件。
sonarqube Database:给到sonarqube Server用的库。可以是mysql,oracle,sqlserver等数据库。
sonarqube Scanners:代码检测部分,可以集成到Maven,Gradle等里面。也可以单独使用。
下图是sonar的流程说明:
- sonarqube Scanners对代码进行检测并把结果存入sonarqube Server。
- 用户在 sonarqube Server中登录web端查看检测结果。
sonar安装
软件版本说明
由前文可知,sonar包含了三个部分,我们都分别需要安装。为了和我们产品的应用一致,我们选择sonarqube-7.8这个版本。因为这个版本是最后一个支持jdk1.8的版本,也是最后一个支持mysql的版本。下表为我们选择的软件版本信息:
sonarqube Server版本 | sonarqube Database类型 | sonarqube Scanners版本 | Jdk版本 | 操作系统版本 |
---|---|---|---|---|
7.8 | mysql | 4.2 | 1.8 | centos 7.9 |
软件下载
sonarqube Server下载地址
binaries.sonarsource.com/Distributio…
sonarqube Scanners下载地址
binaries.sonarsource.com/Distributio…
下载sonarqube Database
我们已经安装好了mysql,所以不需要额外下载。
sonarqube Server安装
服务器列表
sonarqube | Scanners | 数据库 |
---|---|---|
10.10.0.218 | 10.10.0.218 | 10.10.0.222:3306 |
数据库设置
我们需要在数据库给sonarqube Server建一个专门的schame,和专门的用户。sonarqube Server自己会创建表,不需要我们创建。
登录现有数据库,执行如下操作:
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'passwd';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'127.0.0.1' IDENTIFIED BY 'passwd';
mysql> FLUSH PRIVILEGES;
sonarqube Server设置
备注:我们所有的安装默认都以linkcrm用户进行,特殊情况下需要用到root用户,会额外提示。
-
操作系统内核参数设置
本操作需要把用户切换为root。
sonarqube Server内部集成了elasticsearch,需要设置相关的内核参数
修改
/etc/security/limits.conf
,添加如下内容:linkcrm hard nofile 65536 linkcrm soft nofile 65536
修改
/etc/sysctl.conf
,添加如下内容vm.max_map_count = 262144
执行命令,让内核参数生效
sysctl -p
设置完成,把用户切换回linkcrm,下面所有步骤在linkcrm用户下完成。
-
sonarqube解压
登录到服务器:10.10.0.218,下载sonarqube-7.8.zip并解压到目标文件夹。
cd /app/software wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip mkdir -p /app/sonar/ unzip sonarqube-7.8.zip -d /app/sonar
-
设置wrapper.conf文件
打开wrapper.conf文件并添加如下的信息:
cd /app/sonar/sonarqube-7.8 vim conf/wrapper.conf
找到
#wrapper.java.command=/path/to/my/jdk/bin/java
这一行,在下面加入如下的信息:wrapper.java.command=/app/java/jdk1.8.0_151/bin/java
wrapper.java.command为jdk的java命令全路径
-
设置sonar.properties文件
打开sonar.properties文件并添加如下的信息:
cd /app/sonar/sonarqube-7.8 vim conf/sonar.properties
在文件的最后追加如下内容:
sonar.jdbc.username=sonar sonar.jdbc.password=passwd sonar.jdbc.url=jdbc:mysql://10.10.0.222:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.web.host=10.10.0.218 sonar.web.port=9000 sonar.login=admin sonar.password=admin
如上各参数说明:
sonar.jdbc.username:数据库用户 sonar.jdbc.password:数据库密码 sonar.jdbc.url:数据库连接 sonar.web.host:sonarqube所在服务器 sonar.web.port:sonarqube启动的端口 sonar.login:登录sonarqubewebser的用户 sonar.password:登录sonarqubewebser的用户密码
sonarqube Server启动
执行启动命令
cd /app/sonar/sonarqube-7.8
./bin/linux-x86-64/sonar.sh start
访问:http://10.10.0.218:9000/,显示如下页面,sonarqube Server安装完成。
sonarqube Scanners安装
sonarqube Server只是一个处理数据,看数据,和存数据的平台,但数据得由sonarqube Scanners分析得来。接下来我们就安装sonarqube Scanners。
下载解压sonarqube Scanners
cd /app/software
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
mkdir -p /app/sonar/
unzip sonar-scanner-cli-4.2.0.1873-linux.zip -d /app/sonar
配置sonarqube Scanners
编辑/app/sonar/sonar-scanner-4.2.0.1873-linux/conf/sonar-scanner.properties
文件,添加如下配置。
sonar.host.url=http://10.10.0.218:9000
sonar.sourceEncoding=UTF-8
sonar.language=java
设置启动脚本
创建文件/app/sonar/sonar-scanner-4.2.0.1873-linux/start-sonar-scanner.sh
添加如下内容。
#!/bin/bash
sonar-scanner -e -Dsonar.projectKey=$1 -Dsonar.projectName=$1 -Dsonar.java.binaries=/app/links/code/crm/$1/target/classes -Dsonar.projectBaseDir=/app/links/code/crm/$1/src
脚本中的$1表示代码文件夹名称。
设置start-sonar-scanner.sh为可执行文件
chmod 755 /app/sonar/sonar-scanner-4.2.0.1873-linux/start-sonar-scanner.sh
假设需要扫描link-auth的代码,
cd /app/sonar/sonar-scanner-4.2.0.1873-linux/
./start-sonar-scanner.sh link-auth
第一张图片是网上扒的,侵删。