一脓魏、安裝簡(jiǎn)要
- 通過(guò)外網(wǎng)安裝 sonarqube 并安裝所需插件
- 打包相關(guān)鏡像刽酱、sonarqube 工具插件
- 傳輸鏡像勇边、插件到內(nèi)網(wǎng)
- 內(nèi)網(wǎng)利用鏡像安裝 sonarqube
- 后臺(tái)將插件放置到 sonarqube 的extensions/plugins目錄并重啟服務(wù)使插件生效
- 請(qǐng)你愉快使用C小5谖碱茁!
問(wèn)題: 為什么要外網(wǎng)要安裝一遍 sonarqube 裸卫,我又用不著?
回答: 因?yàn)閮?nèi)網(wǎng)環(huán)境是無(wú)法通過(guò) sonarqube 市場(chǎng)直接安裝插件早芭,只能從外網(wǎng)離線下載傳輸?shù)絻?nèi)網(wǎng)使用彼城,而且沒(méi)找到能直接下載與sonarqube各版本的插件網(wǎng)址入口,雖然常見插件可以通過(guò)插件各自更新地址去獲韧烁觥(如:gitlab)募壕,但是依舊麻煩;如果你本身就有當(dāng)前待安裝sonarqube版本的插件包语盈,也無(wú)需再更新插件舱馅,那你可以選擇不裝,直接進(jìn)行內(nèi)網(wǎng)操作刀荒。
1.1 版本信息
軟件名稱 | 版本 | 備注 |
---|---|---|
docker | 24.0.5 | 2023.08.26 當(dāng)前最新版代嗤,Winodws和Ubuntu均是該版本 |
sonarqube | 9.9 | 一般首選community社區(qū)版,個(gè)人或小型團(tuán)隊(duì)不考慮付費(fèi)的開發(fā)者版缠借、企業(yè)版干毅、數(shù)據(jù)中心版 |
postgres | 15.4 | 2023.08.26 當(dāng)前最新版 |
sonarqube 9.9 官方文檔 (附環(huán)境依賴截圖)
1.2 教程環(huán)境
網(wǎng)絡(luò)類型 | 系統(tǒng) | 已安裝軟件 | 描述 |
---|---|---|---|
外網(wǎng) | Windows11 | docker | 請(qǐng)確保已安裝對(duì)應(yīng)Windows版,并已啟用服務(wù)且服務(wù)正常 |
內(nèi)網(wǎng) | Ubuntu 22.04.2 AMD64 | docker | 請(qǐng)確保已安裝對(duì)應(yīng)Linux版泼返,并已啟用服務(wù)且服務(wù)正常 |
- 查看docker服務(wù)狀態(tài):
service docker status
- 重啟docker服務(wù): ???????
service docker restart
1.3 sonarqube 常用插件整合
文件名稱 | 描述 | 下載地址 |
---|---|---|
sonar-pdf-plugin | 生成PDF格式的 sonarqube 報(bào)告 | https://gitee.com/zzulj/sonar-pdf-plugin |
sonar-l10n-zh | 漢化sonarqube頁(yè)面 | https://github.com/xuhuisheng/sonar-l10n-zh |
為方便各位硝逢,整理的插件包見:sonarqube_extensions.tar.gz
1.4 其他
分類 | 文件名稱 | 描述 | 下載地址 |
---|---|---|---|
docker 鏡像 | postgres | 用于 sonarqube 的Database,可以選擇其他數(shù)據(jù)庫(kù)(如:Oracle等) | |
開發(fā)插件 | SonarLint | 訪問(wèn) SonarLint所有版本,根據(jù)自己jetbrains產(chǎn)品版本選擇對(duì)應(yīng)版本進(jìn)行下載 | |
開發(fā)軟件 | NodeJS | SonarLint 運(yùn)行環(huán)境的依賴 | Windows7??:node-v13.14.0-x64.msi Windows8+:node-v18.17.1-x64.msi 備注:Windows7最高支持版本node 13.14.0 |
- sonarqube 在默認(rèn)情況下使用的是嵌入式數(shù)據(jù)庫(kù)(H2數(shù)據(jù)庫(kù))渠鸽,而 H2 數(shù)據(jù)庫(kù)適合用于評(píng)估和測(cè)試叫乌,不適合生產(chǎn)環(huán)境,如果直接使用H2徽缚,頁(yè)面會(huì)提示:"Embedded database should be used for evaluation purposes only" 憨奸,為了解決這個(gè)問(wèn)題,需要配置 SonarQube 使用一個(gè)持久性數(shù)據(jù)庫(kù)凿试,比如 PostgreSQL 排宰、MySQL、Oracle或者M(jìn)icrosoft SQL Server等红省,以確保數(shù)據(jù)的持久存儲(chǔ)和可靠性
- sonarqube 7.9+不再支持Mysql额各,歷史版本要求 Mysql版本滿足 [5.6,8.0)
- sonarqube頁(yè)面地址默認(rèn)為:localhost:9000(admin/admin)
二、外網(wǎng)步驟
PS:外網(wǎng)步驟的命令均在CMD窗口執(zhí)行
-
進(jìn)入指定目錄
mkdir sonarqube && cd sonarqube
-
下載相關(guān)鏡像
docker pull postgres:15.4 --platform linux/amd64
docker pull sonarqube:9.9-community --platform linux/amd64
- 啟動(dòng) sonarqube 鏡像
docker run --privileged=true -it --restart=always --name sonarqube ^
-w /opt/sonarqube ^
-p 9000:9000 ^
-e TZ=Asia/Shanghai ^
-e ALLOW_EMPTY_PASSWORD=yes ^
-d sonarqube:9.9-community
- 查看容器日志:
docker logs -f sonarqube
- 關(guān)閉容器方式:
docker stop {容器ID}
或ps aux | grep {容器ID} | awk '{print $2}' | xargs kill -9
- 進(jìn)入 sonarqube 并下載所需插件吧恃,重啟后界面為中文
考慮到不同 sonarqube 版本的插件名稱可能會(huì)不同虾啦,可以參考對(duì)應(yīng)的關(guān)鍵字
常用插件名稱 | 工具介紹 | 關(guān)鍵字 |
---|---|---|
Chinese Pack | 漢化界面 | Chinese |
ecoCode - Python language | Python 靜態(tài)代碼分析 | Python |
ecoCode - Java language | Java 靜態(tài)代碼分析 | Java |
ecoCode - PHP language | PHP 靜態(tài)代碼分析 | PHP |
-
打包插件
1)下載到本地
2)壓縮處理
tar -czvf sonarqube_extensions.tar.gz ./plugins
- 鏡像導(dǎo)出成tar包
docker save -o sonarqube_9.9_community.tar sonarqube:9.9-community
docker save -o postgres_15.4.tar postgres:15.4
- 壓縮成tar.gz包(主要為減少內(nèi)網(wǎng)文件傳輸大小)
tar -czvf sonarqube_9.9_community.tar.gz sonarqube_9.9_community.tar
tar -czvf postgres_15.4.tar.gz postgres_15.4.tar
del sonarqube_9.9_community.tar postgres_15.4.tar
dir
三痕寓、內(nèi)網(wǎng)步驟
-
上述3個(gè)tar.gz傳輸進(jìn)行內(nèi)網(wǎng)后放在指定Linux的指定目錄(如:/opt/docker_images)
解壓tar.gz包
tar -xzvf sonarqube_9.9_community.tar.gz
tar -xzvf postgres_15.4.tar.gz
tar -xzvf sonarqube_extensions.tar.gz
rm -rf sonarqube_9.9_community.tar.gz postgres_15.4.tar.gz sonarqube_extensions.tar.gz
- 使用內(nèi)網(wǎng)Linux安裝的docker加載鏡像
docker load -i sonarqube_9.9_community.tar
docker load -i postgres_15.4.tar
docker images
- 由于sonarqube安裝目錄是在容器中傲醉,便于方便與安全,故對(duì)重要目錄進(jìn)行掛載
1)將/opt/sonarqube下的logs呻率、conf硬毕、data、extensions目錄掛載到宿主機(jī)中(以/opt/sonarqube為例)
2)在宿主機(jī)創(chuàng)建/opt/sonarqube目錄并賦予權(quán)限
mkdir -p /opt/sonarqube/{logs,conf,data,extensions} && chmod -R 777 /opt/sonarqube
- Linux內(nèi)核參數(shù)調(diào)整(在修改任何內(nèi)核參數(shù)之前,最好了解參數(shù)的含義和影響,并在必要時(shí)備份系統(tǒng)或者記錄當(dāng)前的參數(shù)值秀又,以便需要時(shí)可以恢復(fù)到之前的狀態(tài))
1)調(diào)整單個(gè)進(jìn)程擁有的虛擬內(nèi)存區(qū)域數(shù)量(查看當(dāng)前參數(shù)值:sysctl vm.max_map_count
)
sysctl -w vm.max_map_count=262144
2)調(diào)整系統(tǒng)可以打開的最大文件句柄數(shù)(查看當(dāng)前參數(shù)值:sysctl fs.file-max
)
sysctl -w fs.file-max=131072
3)調(diào)整當(dāng)前用戶進(jìn)程可以打開的最大文件句柄數(shù)量(查看當(dāng)前參數(shù)值:ulimit -n
)
ulimit -n 131072
4)調(diào)整當(dāng)前用戶會(huì)話中允許的最大用戶進(jìn)程數(shù)(查看當(dāng)前參數(shù)值:ulimit -u
)
ulimit -u 8192
- 為了使參數(shù)永久生效珊皿,加配置添加到/etc/sysctl.conf中审轮,并使其立即生效
- 第3、4條語(yǔ)句默認(rèn)為sonarqube用戶,可視情況調(diào)整其他用戶名或*
sed -i '$a\vm.max_map_count=262144' /etc/sysctl.conf
sed -i '$a\fs.file-max=131072' /etc/sysctl.conf
sysctl -p
sed -i '$a\sonarqube - nofile 131072' /etc/security/limits.conf
sed -i '$a\sonarqube - nproc 8192' /etc/security/limits.conf
- 啟動(dòng) postgres 鏡像并查看啟動(dòng)日志
1)創(chuàng)建數(shù)據(jù)卷
docker volume create pgdata
2)啟動(dòng)容器
docker run --privileged=true -it --restart=always --name postgres \
-w /var/lib/postgresql/data \
-p 5432:5432 \
-e TZ=Asia/Shanghai \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-v pgdata:/var/lib/postgresql/data \
-d postgres:15.4
3)查看日志
docker logs -f postgres
(Ctrl+C結(jié)束命令)
4)創(chuàng)建sonar數(shù)據(jù)庫(kù)
export PGPASSWORD=postgres
docker exec -it postgres psql -U postgres -c "CREATE DATABASE sonar;"
unset PGPASSWORD
- 啟動(dòng) sonarqube 鏡像并查看啟動(dòng)日志
1)啟動(dòng)容器(注意:調(diào)整17.31.34.24為實(shí)際的主機(jī)IP)
docker run --privileged=true -it --restart=always --name sonarqube \
-w /opt/sonarqube \
-p 9000:9000 \
-e TZ=Asia/Shanghai \
-e ALLOW_EMPTY_PASSWORD=yes \
-e SONAR_JDBC_URL="jdbc:postgresql://17.31.34.24:5432/sonar" \
-e SONAR_JDBC_USERNAME=postgres \
-e SONAR_JDBC_PASSWORD=postgres \
-v /opt/sonarqube/logs:/opt/sonarqube/logs \
-v /opt/sonarqube/conf:/opt/sonarqube/conf \
-v /opt/sonarqube/data:/opt/sonarqube/data \
-v /opt/sonarqube/extensions:/opt/sonarqube/extensions \
-d sonarqube:9.9-community
2)查看日志
docker logs -f sonarqube
【FAQ】:
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決方案:執(zhí)行上述步驟4的第一步
- 訪問(wèn) sonarqube
默認(rèn):{主機(jī)IP}:9000 (admin/admin)
- 安裝插件:將插件(jar 文件)復(fù)制到$SONAR_INSTALL_DIR/extensions/plugins目錄下并重新啟動(dòng)
cp -rf /opt/docker_image/plugins /opt/sonarqube/extensions/
【后續(xù)文章】