SonarQube系列一、Linux安裝與部署

7tiny發表於2019-08-12

【前言】

隨著專案團隊規模日益壯大,專案程式碼量也越來越多。且不說團隊成員編碼水平層次不齊,即便是老手,也難免因為程式碼量的增加和任務的繁重而忽略程式碼的質量,最終的問題便是bug的增多和程式碼債務的堆積。因此,程式碼review便日益提上了日程。當然人工review的效率還是相當低下的,於是我們採用了自動化程式碼review的工具,便是今天的主角:SonarQube。

【SonarQube簡介】

SonarQube® 是一種自動程式碼審查工具,用於檢測程式碼中的錯誤,漏洞和多餘的程式碼。它可以與您現有的工作流程整合,以便在專案分支和拉取請求之間進行連續的程式碼檢查。比如:

  1. SonarQube整合 gitlab,在分支推送的時候自動進行程式碼檢查分析,生成程式碼報告。
  2. SonarQube整合 jenkins,在程式碼構建的時候自動進行程式碼分析,生成程式碼報告。

總之,SonarQube是可以配合一切好用的CI/CD工具進行自動化分析程式碼並生成程式碼報告,通過報告我們可以看到程式碼中可能存在的bug和程式碼債務。

官方網站:https://www.sonarqube.org/

【SonarQube安裝】

開啟官網(上述官網地址),便可以很容易看到官方文件的選單,安裝步驟在官網很清楚了,我們參考文件進行安裝,這裡記錄整個安裝的過程以便幫助一些看文件迷惑的學者。

官方文件地址:https://docs.sonarqube.org/latest/

1.首先別忙著下載

左側有下拉框可以選擇sonarqube的各個版本,我們可以選擇切換不同的版本以檢視不同時期的文件

我們首先開啟 Requirements ,檢視當前版本的軟硬體支援。

  • SonarQube 依賴於Java 環境,也就是需要安裝Jre,在這裡寫了支援的版本:

  • SonarQube 支援的資料庫有:PostgreSQLMicrosoft SQL ServerOracle,注意7.9版本已經不對MySql進行官方的支援了,如果執意要用 Mysql 可能會遇到很多坑(我就被坑的不輕)。當然有的朋友想用Mysql資料庫,那麼可以選擇安裝 7.7 以下版本(包括7.7)。
  • SonarQube 執行需要ES(ElasticSearch),當然這個不用我們安裝,下載的安裝包已經包含了ES。

因為我用到了Mysql資料庫,綜合軟硬體說明我選擇了7.6版本的SonarQube進行下載安裝。

2.下載 SonarQube

同樣在左側選單找到 Setup and Upgrade 選項,開啟以後按步驟找到 Download 連結,下載對應版本的安裝包。

SonarQube 的安裝包是不分平臺的,預設把所有平臺的執行命令都下載下來,使用者根據不同環境執行不同的執行指令碼。

下載完成後,我們把安裝包 sonarqube-7.6.zip 放在linux伺服器的安裝目錄(喜歡的任意位置),然後用解壓命令解壓

unzip sonarqube-7.6.zip

進入資料夾,我們瞭解幾個重要的目錄

  • bin目錄存放了各個環境的啟動指令碼
  • conf目錄存放著sonarqube的配置檔案
  • logs目錄存放著啟動和執行時的日誌檔案

3.配置 SonarQube

關於jdk的安裝這裡就不多說了,我們直接進入sonarqube 的配置。

我們首先需要通過配置檔案修改 sonarqube 的 mysql 連線字串等資訊,開啟 conf 目錄的 sonar.properties

我們只需要修改mysql部分就ok了,其他不用過多設定

#----- DEPRECATED 
#----- MySQL >=5.6 && <8.0
# Support of MySQL is dropped in Data Center Editions and deprecated in all other editions
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:39901/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&maxAllowedPacket = 16777216&useSSL=false
sonar.jdbc.username=sonarqube
sonar.jdbc.password=xxxxx

這裡的配置是按照官方文件的介紹,在mysql新增了一個 sonarqube 的使用者,並且建立了一個資料庫叫 sonarqube ,且將資料庫的讀寫執行許可權賦給 sonarqube使用者,用於在站點初始化以及後續儲存設定資料時對資料庫進行修改。

sonarqube web 預設埠號為 9000 如果想修改成其他埠可以通過下面這個設定修改其他埠號。

wrapper.conf 這個配置檔案裡配置了java命令地址,sonarqube 的日誌檔案目錄等,可以關注下自己的 java 命令路徑,其他不用太過關注。

4.SonarQube 啟動

開啟 sonarqube  的下載目錄的bin目錄,裡面列舉了各個平臺的啟動指令碼

啟動之前先使用 chown 命令將sonarqube-7.6及其子目錄授權給一個非root的使用者,sonarqube及其es等軟體禁止 root賬戶啟動,因此需要切換一個非root賬戶,授權的使用者需要有bin目錄及其子目錄的讀取和可執行的許可權。

然後我們找到對應平臺的指令碼,我的系統是64位的linux,進入 linux-x86-64 目錄

啟動sonar,執行 sonar.sh 指令碼,並新增 start  引數

./sonar.sh  start

如果不新增引數,會出現如下提示,是因為該指令碼有必要的引數,包含了sonar服務的啟動/停止/重啟/dump等操作,可以根據使用場景提供不同的引數。

啟動之後,我們瀏覽器訪問對應伺服器ip地址的9000埠(防火牆要提前放行9000埠)

如果沒有成功,那麼就在logs目錄檢視啟動日誌。一般有幾種:

  • es.log es或mysql等資料庫連線報錯,一般是mysql的連線字串賬號密碼錯誤或者sonar賬號許可權不夠;
  • es.log 資料庫初始化失敗 MySQL sonar 賬戶許可權不足
  • sonar.log sonar服務的啟動日誌
  • web.log sonarqube web的啟動日誌

如果一切順利的話,就會進入登陸頁面,賬號密碼都是 admin。

【SonarQube外掛】

關於外掛我本身使用不多,如果看不慣英文介面,那麼就先裝箇中文外掛吧。

在頂部的選單欄,配置裡面,按下圖步驟,在下面外掛搜尋欄輸入chinese,即可搜到中文外掛,然後點安裝。

等待安裝完畢,提示重啟sonar後,便自動切換到了中文介面。

 

 【系統展望】

 那麼到此,sonar的安裝與配置便告一段落了,如果有任何問題歡迎留言區討論~

相關文章