一SonarQube介绍
SonarQube 是一个开源的代码分析平台,用来持续分析和评测代码的质量,支持检测 Java 、 JavaScript 、C#、C、C++ 等二十几种编程语言。通过 SonarQube 可以检测出项目中潜在的Bug、漏洞、代码规范、重复代码、缺乏单元测试的代码等问题,并提供了 UI 界面进行查看和管理。
架构
SonarQube 由4部分构成:
(1)SonarQube Server
SonarQube Server 会启动3个主要进程:Web Server:UI 管理界面、Search Server:基于 Elasticsearch 的搜索服务、Compute Engine Server:计算引擎服务,进行代码分析并保存到SonarQube Database。
(2)SonarQube Database
存储 SonarQube 实例的配置信息,项目、视图等的快照信息
(3)SonarQube Scanners
分析项目代码,可在构建/持续集成 服务器 上运行一个或多个
(4)SonarQube Plugins
SonarQube 插件管理

二搭建

2.1环境要求
主要是两个要求
(1)JDK 8
(2)MySQL (>=5.6 && <8.0) (也支持其他数据)
1安装java.jdk
服务器中存在openjdk   一般yum安装的jdk多为openjdk
rpm -qa | grep java
若有openjdk,会出现XXXX_openjdk_XXX的信息

rpm -e --nodeps `rpm -qa | grep java`
一次性删除成功

将jdk包上传到服务器
通过yum安装一款工具。
#yum install lrzsz -y

检查yum的安装包是否安装成功。
#rpm -qa |grep lrzsz

上图说明安装成功。
上传文件的执行命令:
#rz
就会打开本地选择文件对话框,选择文件,确定就可以上传到当前所在目录。
如果覆盖原文件,执行:
#rz -y

拷贝到当前目录下

解压缩 jdk-8u181-linux-x64.tar.gz 文件:
tar -zxvf jdk-8u181-linux-x64.tar.gz

 

返回到上一级并创建 /usr/local/jdk 目录:
cd ..
mkdir -p jdk

进入到 tools 目录后将 jdk-8u181-linux-x64 移动到 jdk 目录中:
[root@localhost tools]# mv jdk1.8.0_181 /usr/local/jdk/
[root@localhost tools]# cd /usr/local/jdk/

 

打开 /etc/ 目录下的 profile 文件:
vim /etc/profile
将如下代码追加到 profile 文件末尾:
JAVA_HOME=/usr/local/jdk/jdk1.8.0_181
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar
export JAVA_HOME JRE_HOME PATH CLASSPATH

source /etc/profile
输入 java -version 查看 JDK 的版本:
[root@localhost jdk]# source /etc/profile
[root@localhost jdk]# java -version

系统环境准备
系统参数需要满足下述要求
sonarqube一定不能在root帐户下运行
vm.max_map_count 大于或等于 262144
fs.file-max 大于或等于 65536
运行SonarQube的用户至少可以打开 65536个 文件描述符
运行SonarQube的用户可以打开至少2048个线程
seccomp已被编译 进内核

根据需要执行下述命令以使内核参数符合sonar安装需求
#可以使用以下命令查看这些值:
sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n

可以通过以root身份运行以下命令来为当前会话动态设置它们:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536

 

为了更永久设置这些值,则必须修改/etc/sysctl.d/99-sonarqube.conf(或/etc/sysctl.conf文件)#文件末尾添加下述两行
vi /etc/sysctl.conf

 

vm.max_map_count=262144
fs.file-max=65536

 

在/etc/profile文件末尾添加ulimit -n 65536
vi /etc/profile
ulimit -n 65536
#保存后运行#source /etc/profile 使其生效
source /etc/profile

2.2 开始安装

1、安装wget工具
[root@localhost ~]#yum -y install wget
wget 时提示 -bash:wget command not found,很明显没有安装wget软件包。一般linux最小化安装时,wget不会默认被安装。

下载
[root@localhost ~]#cd /opt
[root@localhost opt]#wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.7.zip
这里选择xshell rz将本地文件上传到服务器opt目录中

链接:https://pan.baidu.com/s/1GKjECv9QjGNZ8aAJYdlXNw 密码:ojfg

3、解压
[root@localhost opt]#unzip sonarqube-6.7.7
[root@localhost opt]#cd sonarqube-6.7.7

4、增加用户sonar
//创建sonar用户
//目录组和用户都是sonar
//sonarqube文件设置777
//编写配置文件
[root@localhost ~]# useradd sonar
[root@localhost ~]# chown -R sonar.sonar /opt/sonarqube-6.7.7/

5、编辑sonarqube配置文件
[root@localhost sonarqube-6.7.7]# vi conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://192.168.1.220:3305/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

sonar.web.host=192.168.1.x
sonar.web.port=x

 

保存退出。

 

6查看状态
[root@localhost ~]# cd /usr/local/src/sonarqube-6.7.7
[root@localhost sonarqube-6.7.7]# su sonar ./bin/linux-x86-64/sonar.sh status

 

说明:一直无法运行的时候删除sonarqube-6.7.7 下的temp文件
rm -f /opt/sonarqube-6.7.7/temp

 7运行脚本启动服务

[root@localhost sonarqube-6.7.7]# su sonar ./bin/linux-x86-64/sonar.sh start
//以普通用户起服务,不然es启动会报错,用法:console、start、status、stop...

 在启动彻底完成前不可信!什么叫启动"彻底完成"? 见下面:

 

至此,SonarQube启动成功!

排错说明:sonar.log  es.log  web.log

8、登录web端
在浏览器输入:http:// 192.168.1.217:9090
初始用户:admin
初始密码:admin
登录后,可以点击自己账户修改密码。