一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
登錄后,可以點擊自己賬戶修改密碼。