安裝SonarQube
1.環境準備
- SonarQube服務器需要JDK 17 , Sonar-Scanner需要JDK 11 或 JDK 17
- PostgreSQL 11到15版本
1.1.安裝JDK 17(SonarQube主機)
# 1.下載安裝包
[sonar@sonar ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-aarch64_bin.rpm
# 2.安裝jdk17
[sonar@sonar ~]# sudo yum -y install jdk-17_linux-x64_bin.rpm
# 3.檢查java是否安裝成功
[sonar@sonar ~]# java -version
1.2.安裝PostgreSQL 15 (DB主機)
1.2.1.下載PostgreSQL
# 1.安裝依賴
[root@postgres ~]# curl -# -O https://ftp.postgresql.org/pub/source/v15.7/postgresql-15.7.tar.bz2
1.2.2.編譯安裝 PostgreSQL
# 1.解決預編譯依賴
[root@postgres ~]# yum -y install gcc make libicu-devel readline-devel zlib-devel openssl-devel libxml2-devel bzip2
# 2.安裝PostgreSQL
[root@postgres ~]# tar jxvf postgresql-15.7.tar.bz2 -C /usr/local/src && /usr/local/src/postgresql-15.7/configure && make && make install && echo "安裝PostgreSQL成功"
1.2.3.初始化數據庫
# 1.創建登錄用戶
[root@postgres ~]# useradd postgres
[root@postgres ~]# echo "123456" | passwd --stdin postgres
# 2.創建存儲目錄 并 修改所屬權限
[root@postgres ~]# mkdir -p /data/postgresql/{data,log}
[root@postgres ~]# chown -R postgres.postgres /data/postgresql
# 3.配置軟連接
[root@postgres ~]# ln -s /usr/local/pgsql/bin/* /usr/local/bin
# 4.切換用戶
[root@postgres ~]# su - postgres
# 5.初始化數據庫
[postgres@postgres ~]$ initdb -D /data/postgresql/data
1.2.4.啟動數據庫
# 1.編輯配置文件
[postgres@postgres ~]$ vim /data/postgresql/data/postgresql.conf # 文件詳情在下方
[postgres@postgres ~]$ vim /data/postgresql/data/pg_hba.conf # 文件詳情在下方
[postgres@postgres ~]$ exit
# 2.添加環境變量
[root@postgres ~]# vim /etc/profile # 文件詳情在下方
[root@postgres ~]# source /etc/profile
# 3.執行.service腳本,通過systemd進行控制
[root@postgres ~]# vim postgresql_service.sh # 文件詳情在下方
[root@postgres ~]# sh postgresql_service.sh
# 4.啟動postgresql 并設置開機自啟
[root@postgres ~]# systemctl enable --now postgresql
[root@postgres ~]# psql
# 1.postgresql.conf 配置文件
listen_addresses = '*' # 監聽所有網段 , 默認監聽本機
port = 5432 # 監聽的TCP端口號 , 默認值5432
max_connections = 100 # 最大連接數 , 默認值100
log_directory = '/data/postgresql/log' # log日志存放路徑
# pg_hba.conf 配置文件
# 僅允許192.168.1.0網段連接
# TYPE : 訪問控制條目 local用于本地連接;host用于遠程連接
# DATABASE : 允許訪問的數據庫
# USER : 允許訪問數據庫的用戶
# ADDRESS : 允許訪問數據庫的IP
# METHOD : 連接數據庫認證方式,trust免密認證;md5 , password表示需要密碼認證;peer需要操作系統的用戶身份認證
# TYPE DATABASE USER ADDRESS METHOD
host all all 10.39.84.0/24 trust
# 2.環境變量
export PGDATA=/data/postgresql/data
export PGHOME=/usr/local/pgsql
export PGPORT=5432
export PGUSER=postgres
export PATH=$PATH:/usr/local/pgsql/bin
# 3.postgresql_service.sh 腳本
#!/bin/bash
service(){
cat > /usr/lib/systemd/system/postgresql.service <<EOF
[Unit]
Description=postgresql
After=network.target
[Service]
User=$PGUSER
Group=$PGUSER
Type=forking
ExecStart=/usr/local/pgsql/bin/pg_ctl -D $PGDATA start
Restart=always
ExecStop=/usr/local/pgsql/bin/pg_ctl -D $PGDATA stop -m fast
[Install]
WantedBy=multi-user.target
EOF
}
service
systemctl daemon-reload
1.2.5.準備數據庫及用戶
# 1.創建新用戶
postgres=# CREATE ROLE sonar WITH LOGIN PASSWORD '123456';
# 2.創建 sonar 數據庫
postgres=# CREATE DATABASE sonar OWNER sonar;
# 3.授予數據庫訪問權限
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
postgres=# \q
1.2.6.sonar服務器登錄數據庫
# 1.需要注意 一定要先創建 Linux 用戶 sonar , 不然無法操作 PostgreSQL
[root@sonar ~]# useradd sonar
[root@sonar ~]# echo "123456" | passwd --stdin sonar
# 2.給予sonar用戶權限
[root@sonar ~]# vim /etc/sudoers
sonar ALL=(ALL) ALL
# 3.本地需要安裝postgresql才可以連接到遠端DB , 但是直接yum安裝可能遇到DB版本沖突問題
[root@sonar ~]# yum -y install postgresql
[root@sonar ~]# su sonar
[sonar@sonar root]$ psql -h 10.39.84.100 -p 5432 -U sonar -d sonar
2.部署 SonarQube
2.1.環境準備
# 1.安裝必要軟件
[root@sonar ~]# yum install -y wget zip unzip
# 2.調整系統參數
[root@sonar ~]# vim /etc/sysctl.conf # 文件詳情在下方
[root@sonar ~]# vim /etc/security/limits.conf # 文件詳情在下方
[root@sonar ~]# sysctl -p /etc/sysctl.conf
# 1./etc/sysctl.conf 配置文件
vm.max_map_count = 262144
fs.file-max = 65536
# 2./etc/security/limits.conf 配置文件
sonarqube soft nproc 4096
sonarqube hard nproc 4096
sonarqube soft nofile 65536
sonarqube hard nofile 65536
2.2.準備軟件 及 數據目錄
# 1.準備數據目錄
[root@sonar ~]# mkdir -p /data/sonar/{data,temp}
# 2.下載 SonarQube 9.9LTA (9.9.6.92038版本)
[root@sonar ~]# curl -O -# https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.6.92038.zip
[root@sonar ~]# unzip sonarqube-9.9.6.92038.zip -d /usr/local
[root@sonar ~]# mv /usr/local/sonarqube-9.9.6.92038 /usr/local/sonar
# 3.授予權限
[root@sonar ~]# chown -R sonar:sonar /usr/local/sonar
[root@sonar ~]# chown -R sonar:sonar /data/sonar
2.3.修改配置文件
# 1.配置環境變量
[root@sonar ~]# vim /etc/profile
export SONAR_HOME=/usr/local/sonar
[root@sonar ~]# source /etc/profile
# 2.準備好Postgres驅動程序
wget https://jdbc.postgresql.org/download/postgresql-42.7.3.jar -O $SONAR_HOME/lib/postgresql.jar
# 3.配置 SonarQube
[root@sonar ~]# vim $SONAR_HOME/conf/sonar.properties # 文件詳情在下方
#在配置文件開頭增加以下配置
#數據庫配置
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:postgresql://10.39.84.100:5432/sonar
#文件配置
sonar.path.data=/data/sonar/data
sonar.path.temp=/data/sonar/temp
#Web配置
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/
2.4.開放端口
[root@sonar ~]# firewall-cmd --add-port=9000/tcp --permanent
[root@sonar ~]# firewall-cmd --reload
2.5.啟動 SonarQube
# 設置開機自啟
[root@sonar root]$ vim /usr/lib/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/sonar/bin/linux-x86-64/sonar.sh start
ExecStop=/usr/local/sonar/bin/linux-x86-64/sonar.sh stop
User=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=10240
[Install]
WantedBy=multi-user.target
[root@sonar ~]# systemctl daemon-reload
[root@sonar ~]# systemctl enable --now sonarqube
[root@sonar ~]# systemctl status sonarqube
2.6.登錄 SonarQube
http://10.39.84.100:9000/
默認用戶名密碼 :
用戶名 : admin
密碼 : admin
新的密碼 :
密碼 : 123456
3.配置SonarQube
3.1.安裝中文插件
-
方法一
[截圖]
-
方法二
-
手動下載插件 https://github.com/xuhuisheng/sonar-l10n-zh/tree/master
-
存放到/usr/local/sonar/extensions/plugins/路徑下
-
3.2.配置Sonar-Scanner
-
下載sonar-scanner
[sonar@sonar ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip [sonar@sonar ~]# unzip sonar-scanner-cli-5.0.1.3006-linux.zip -d /usr/local [sonar@sonar ~]# mv /usr/local/sonar-scanner-5.0.1.3006-linux /usr/local/sonar-scanner -
配置環境變量
[sonar@sonar ~]# vim /etc/profile export SONAR_SCANNER_HOME=/usr/local/sonar-scanner export PATH=$SONAR_SCANNER_HOME/bin:$PATH [sonar@sonar ~]# source /etc/profile -
校驗sonar-scanner配置結果
[sonar@sonar ~]# sonar-scanner -v -
修改sonar-scanner的jdk為本機jdk(默認自帶)
[sonar@sonar ~]# vim /usr/local/sonar-scanner/bin/sonar-scanner use_embedded_jre=false
3.3.使用Sonar-Scanner(這個自己研究吧,以下僅供參考)
-
在代碼下載到工作目錄下 , 在該目錄下創建掃描文件(fileName.properties)
sonar.projectKey指定項目的關鍵字,sonar.host.url指定服務器地址(可以直接在配置文件中寫死),projectName指定項目的名稱,projectVersion指定項目的版本(可以用構建時間和構建ID定義),login指定登錄用戶名,password指定登錄用戶密碼,projectDescription指定項目的描述信息,links.homepage指定項目的主頁(超鏈接),sources指定掃描的目錄,sourceEncoding指定掃描時的編碼,**java.binaries**指定編譯后的類文件目錄(必填),**java.test.binaries**指定編譯后的測試類目錄,**java.surefire.report**指定測試報告目錄。[sonar@sonar ~]# sonar-scanner -Dsonar.host.url=http://10.39.84.100:9000 \ -Dsonar.projectKey=devops-maven-service \ -Dsonar.projectName=devops-maven-service \ -Dsonar.projectVersion=1.1 \ -Dsonar.login=admin \ -Dsonar.password=wg1q2w3e \ -Dsonar.ws.timeout=30 \ -Dsonar.projectDescription="my first project!" \ -Dsonar.links.homepage=http://10.39.84.100/devops/devops-maven-service \ -Dsonar.links.ci=http://10.39.84.100:8080/job/demo-pipeline-service/ \ -Dsonar.sources=src \ -Dsonar.sourceEncoding=UTF-8 \ -Dsonar.java.binaries=target/classes \ -Dsonar.java.test.binaries=target/test-classes \ -Dsonar.java.surefire.report=target/surefire-reports

浙公網安備 33010602011771號