一、SonarQubeServer
1、前提
安裝好mysql5.7和jdk1.8。
(1)安裝Mysql
create user 'sonar'@'localhost' identified by 'sonar';
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on sonar.* to 'sonar'@'localhost';
mysql -uroot -p123456
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar123';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar123';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar123';
FLUSH PRIVILEGES;
#mysql設置:一旦所有的SonarQube表都使用了InnoDB引擎,首先要做的就是使用innodb_buffer_pool_size參數為你的MySQL實例分配最大數量的RAM,並給參數至少15Mb query_cache_size
#檢查mysql引擎,確保為InnoDB
show engines;
#查看緩存開啟狀況
SHOW STATUS LIKE 'qcache%';
show variables like '%query_cache%';
#設置緩存
vi /etc/my.cnf
[mysqld]
character_set_server=utf8
query_cache_type=1
query_cache_size=32M
#重啟
service mysqld restart
(2)安裝JDK8
2 進入到目錄 /usr/local/ 中:
cd /usr/local/
3 創建目錄 tools:
mkdir -p tools
4 進入到目錄 /usr/local/tools 中:
cd tools/
5 下載 jdk-8u91-linux-x64.tar.gz
wget http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz?AuthParam=1521514537_5997ca9bc07655e6b192a38bc9d18532
6 解壓縮 jdk-8u161-linux-x64.tar.gz 文件:
tar -zxvf jdk-8u161-linux-x64.tar.gz
7 返回到上一級並創建 /usr/local/jdk 目錄:
cd ..
mkdir -p jdk
8 進入到 tools 目錄后將 jdk1.8.0_91 移動到 jdk 目錄中: cd tools mv jdk1.8.0_161/ ../jdk/
9 打開 /etc/ 目錄下的 profile 文件:
vim /etc/profile
將如下代碼追加到 profile 文件末尾:
# idea - jdk8 settings start 2016-05-01
JAVA_HOME=/usr/local/jdk/jdk1.8.0_161
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
# idea - jdk8 settings end - 2016-05-01
按 Esc 鍵、輸入 wq! 回車,保持並退出。
10 即可啟用新的配置: source /etc/profile
11 輸入 java -version 查看 JDK 的版本:
[root@iZ94hws2fzlZ jdk1.8.0_91]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
2、下載與准備
(1)環境准備
系統參數需要滿足下述要求
- 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)下載
[root@node3 ~]# wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.2.zip
(3)解壓
[root@node3 ~]# unzip sonarqube-6.7.2.zip -d /opt/
(4)增加用戶sonar
[root@node3 ~]# useradd sonar
[root@node3 ~]# chown -R sonar /opt/sonarqube-6.7.2/
3、編輯sonarqube配置文件
sonarqube-6.7]# vim conf/sonar.properties
保存,退出;
4、運行腳本啟動服務
sonarqube-6.7]# su sonar ./bin/linux-x86-64/sonar.sh start //以普通用戶起服務,不然es啟動會報錯,用法:console、start、status、stop...
sonarqube-6.7]# su sonar ./bin/linux-x86-64/sonar.sh status
注意:這里立即查看狀態,短時間內意義不大,因為一開始顯示running,並不代表會一定在后面的時間內running!
也就是說,在啟動徹底完成前不可信!什么叫啟動"徹底完成"? 見下面:
再次確認:
至此,SonarQube啟動成功!
排錯說明:可以先跟着sonar.log日志,如果報了es錯誤,可以去查看es.log;如果報了web錯誤,那么就是查看web.log。
都可以在日志里有跡可尋。(es.log,web.log跟sonar.log在同一個目錄下)
5、登錄web端
在瀏覽器輸入:http:// IP:PORT
初始用戶:admin
初始密碼:admin
登錄后,可以點擊自己賬戶修改密碼。
6、漢化
#添加漢化插件
#從https://docs.sonarqube.org/display/PLUG/Plugin+Library下載漢化插件移動至指定目錄即可
sonar-l10n-zh-plugin-1.19.jar
放在/sonarqube-6.7.2/extensions/plugins 目錄中
#重啟sonar
cd /opt/sonarqube-6.7.2/bin/linux-x86-64/
./sonar.sh restart
二、SonarQubeScanner
1、下載
sonar-scanner-3.0.3.778-linux.zip
2、解壓
沒有unzip的話,先安裝unzip
yum install -y unzip
unzip sonar-scanner-3.0.3.778-linux.zip
3、修改配置文件
sonar-scanner-3.0.3.778-linux/conf/sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
4、設置環境變量
/etc/profile文件末尾加入下面三句:
SONARSCANNER_HOME=/home/sonar-scanner-3.0.3.778-linux/bin PATH=$PATH:$SONARSCANNER_HOME
export SONARSCANNER_HOME PATH
啟用新的配置:
source /etc/profile
5、檢查sonar-scanner安裝是否成功
檢查sonarscanner是否配置成功:
sonar-scanner -h
出現如下信息表示安裝配置成功:
sh-4.2# sonar-scanner -h
INFO:
INFO: usage: sonar-scanner [options]
INFO:
INFO: Options:
INFO: -D,--define <arg> Define property
INFO: -h,--help Display help information
INFO: -v,--version Display version information
INFO: -X,--debug Produce execution debug output
6、項目配置文件sonar-project.properties
sonar-project.properties放在項目根目錄中:
sonar.projectKey=icloud3.12
sonar.projectName=icloud3.12
sonar.projectVersion=3.12
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.scm.disabled=true
sonar.modules=dispatch-service,dispatch-client
dispatch-service.sonar.modules=dispatch-cfgmanager,dispatch-taskmanager,dispatch-usermanager
dispatch-service.dispatch-cfgmanager.sonar.projectName=icloudcfgserver
dispatch-service.dispatch-cfgmanager.sonar.sources=.
dispatch-service.dispatch-cfgmanager.sonar.java.binaries=target/classes
dispatch-service.dispatch-taskmanager.sonar.projectName=icloudtaskserver
dispatch-service.dispatch-taskmanager.sonar.sources=.
dispatch-service.dispatch-taskmanager.sonar.java.binaries=target/classes
dispatch-service.dispatch-usermanager.sonar.projectName=iclouduserserver
dispatch-service.dispatch-usermanager.sonar.sources=.
dispatch-service.dispatch-usermanager.sonar.java.binaries=target/classes
dispatch-client.sonar.projectName=icloudwebserver
dispatch-client.sonar.sources=.
dispatch-client.sonar.language=js
7、執行sonar-scanner
在項目根目錄中執行
sonar-scanner