linux 上sonar的安裝和使用總結(包含報錯處理)


我們都知道,sonar是用來做代碼的質量檢測的,並且支持多種語言,之前看到很多地方寫搭建sonar,就覺的應該很好搭建,然后昨天自己試着搭建了一下,發現自己真的是想的太簡單了,有些坑,還是寫出來讓大家看看,不要再掉進去了。

准備工作:下載sonar:   https://www.sonarqube.org/downloads/  我下載了一個6.7.7的版本,剛開始我下了最新的8.0的版本,但是一直報錯:mysql.driver的報錯,然后我還是用了一個穩定版本。

我的環境:ubuntu  (本來想找centos的,但是先生買了阿里雲的機器,還是ubuntu,所以我也就將就用了,如果你的是centos的,記得修改下安裝命令就可以了)

 

1.安裝mysql ,安裝好以后,用mysql -V (V大寫)查一下版本,如下:

 

安裝好mysql以后,在數據庫中創建sonar用戶:操作如下:

       MySQL> CREATE USER 'sonar'@'%' IDENTIFIED BY 'sonar123';
       MySQL> CREATE DATABASE sonar CHARACTER SET UTF8;
       MySQL> GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'%';
 上面主要做的事情就是:為sonar 創建一個數據庫和使用這個數據庫的用戶,並進行授權

 

 mysql版本要等於5.6或者5.6以上,否則sonar無法啟動

 2.在opt目錄下創建一個softs文件夾,將下載的sonar zip包解壓到該目錄下。

          unzip  sonarqube-6.7.7.zip

      然后修改/opt/softs/sonarqube-6.7.7/conf/sonar.properties  文件,目前我只配置了一下幾項:

           sonar.jdbc.username=sonar
           sonar.jdbc.password=sonar123

           sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

           sonar.web.host=0.0.0.0

           sonar.web.context=

           sonar.web.context=

3.使用sonar用戶啟動sonar,否則會報es的錯(重點:因為安全問題elasticsearch 不讓用root用戶直接運行)

            adduser sonartest  #創建sonar用戶

           passwd 123456 #創建sonar用戶的密碼

         【 原來我寫的是:chown -R sonartest:123456 sonarqube-6.7.7  #給sonar目錄賦權限 (這里范了一個大錯,用戶組寫成了密碼,難怪一直報es的錯,害我調試了好久)】

            chown -R sonartest:sonartest sonarqube-6.7.7  #給sonar目錄賦權限 【這里很重要】

           su sonartest  #切換到sonar用戶

          進入到/opt/softs/sonarqube-6.7.7/bin/linux-x86-64目錄下,

                       執行./sonar.sh restart 來啟動sonar

(1)es報錯:參考https://blog.csdn.net/zdyueguanyun/article/details/79447260

(2)這里我還遇到一個問題,./sonar.sh restart的時候報錯了,說temp下的一個yml文件禁止訪問,然后我進入/opt/softs/sonarqube-6.7.7/temp,執行ls -all 發現有寫文件還是root權限的,我懷疑可能是我沒切換用戶的時候執行restart生成的,這時只需要再執行一次 “chown -R sonartest:sonartest sonarqube-6.7.7”就可以了。(這里已經不需要了,因為我上面把賦權限寫錯了,所以如果有問題,多考慮下是不是權限的問題)

(3)還有一個問題,restart的時候報錯JVM失敗的問題,是因為我切換用戶后沒有執行source /etc/profile使jdk環境變量生效,這很簡單,再執行一次 “ source /etc/profile就可以了”

          這里我查了資料,(切換用戶,/etc/profile中的環境變量不生效了)解決辦法有如下:

                           (3.1)辦法1:用su命令切換用戶的時候,/etc/profile會失效,應該使用su - 用戶名。

                                                   (原理:https://www.cnblogs.com/liujiangyi/p/9455960.html)

                          (3.2)辦法2:/etc/profile.d/ 目錄下建一個文件如:java.sh,配置對環境變量。

                                            

                         (3.3)辦法3:在 ~/.bashrc 加上如下的代碼,(建立在profile已配環境變量,如果沒有配,也可以直接把環境變量的配置配到~/.bashrc上)

                                                     

                                         (https://blog.csdn.net/u011553945/article/details/101516559)

4.成功否

在瀏覽器輸入http://ip:9000,如果看到如下頁面,表示安裝成功(默認登陸賬號是 admin  密碼是admin):

 

 

 5.漢化:用admin  admin登陸成功后,按照下圖操作:

 

 

等待安裝完成以后,重啟:

 

 

再次登陸,就變成中文的了:

 

 6.安裝掃描器sonar-scanner

下載:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/      (含簡單的使用說明)

我下載了sonar-scanner-cli-4.2.0.1873-linux.zip

(6.1)解壓到/opt/softs目錄下(任意目錄都可以,這里只是為了方便管理),得到如下文件夾:

 

 (6.2)切換到root用戶,修改/etc/profile,添加sonnar環境變量,如下:

 

 保存退出后,執行source /etc/profile 使環境變量生效

(6.3)輸入sonar-scanner -v 顯示如下,則表示安裝成功了:

 

(6.4)關聯sonarqube 和sonnar scanner

               在/opt/softs/sonar-scanner-4.2.0/conf/sonar-scanner.properties中添加如下內容:

 sonar.host.url=http://sonnar_ip:9000
 sonar.login=admin
 sonar.password=admin
 sonar.jdbc.username=sonar
 sonar.jdbc.password=sonar123
 sonar.jdbc.url=jdbc:mysql://sonnar_ip:3306/sonar?useUnicode=true&characterEncoding=utf8

 7.使用sonarqube + sonar-scanner做代碼檢測:

(7.1)打開要進行代碼分析的項目根目錄,新建sonar-project.properties文件

(7.2)輸入以下信息:

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=apiautocore
sonar.projectVersion=1.0
 
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file.
sonar.sources=src
 
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

其中:projectName是項目名字,sources是源文件所在的目錄

 (7.3)設置成功后,啟動sonarqube服務

(7.4)進入項目所在的根目錄,輸入命令:sonar-runner,分析成功后會有success信息

(7.5)瀏覽器輸入http://sonar_ip:9000登陸sonnarqube,就能看到你剛才掃描的工程信息

 

sonar 啟動失敗,es報錯(查看logs目錄下的es.log即可):

es[][o.e.b.BootstrapChecks] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

            解決:

                     在   /etc/sysctl.conf文件最后添加一行

                    vm.max_map_count=262144

參考:

https://blog.csdn.net/zdyueguanyun/article/details/79447701

https://www.cnblogs.com/reblue520/p/7131260.html?utm_source=itdadao&utm_medium=referral   (含在jenkins上的配置)

以下是基於postgresql安裝的sonarqube8以上的版本的參考文檔:

https://blog.csdn.net/africanviolet/article/details/108224618


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM