SonarQube 程式碼檢測平台社群版 - Debian
BUBU 因為資安的問題想要結合 Drone CI/CD 的服務先把程式碼先分析過後再上線,再尋找這個方案時候剛好看到 節省哥 有分享過這一篇文章
運行環境
環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境: Debian 11
- 資料庫服務: PostgreSQL 14.4
安裝過程
1.安裝 Java11
- 更新系統
sudo apt update
- 安裝必要套件
sudo apt install wget unzip curl gnupg2 ca-certificates lsb-release socat -y
- 安裝 Java11
sudo apt-get install openjdk-11-jre -y
2.安裝 PostgreSQL
- 新增加 PostgreSQL 來源庫
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
- 新增加 PostgreSQL 金鑰
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
- 更新系統
sudo apt update
- 安裝 PostgreSQL
sudo apt-get install postgresql postgresql-contrib -y
- 啟動服務
systemctl enable postgresql && systemctl start postgresql
- 查看服務狀態
systemctl status postgresql
3.設定SonarQube Database
- 修改 postgres 密碼
sudo passwd postgres
- 切換到 postgres 帳號
su - postgres
- 建立 sonarqube 使用者
createuser sonarqube
- 連線到 PostgreSQL 服務
psql
- 建立帳號密碼,密碼再修改成您記的住密碼
ALTER USER sonarqube WITH ENCRYPTED password 'SecurePassword';
- 建立資料表
sonarqube
CREATE DATABASE sonarqube OWNER sonarqube;
- 設定該資料表權限
GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonarqube;
- 離開資料庫
\q
- 離開此帳號
exit
4.安裝 SonarQube
- 下載新版 SonarQube 下載頁面 BUBU 當下所下載版本是 9.5 社群版
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.5.0.56709.zip
- 解壓 SonarQube
sudo unzip sonarqube-9.5.0.56709.zip
- 建立目錄
sudo mkdir /opt/sonarqube
- 將解壓後目錄移到剛剛建立檔案
sudo mv sonarqube-*/* /opt/sonarqube
- 建立 SonarQube 系統帳號
sudo useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube
- 修改目錄權限
sudo chown -R sonarqube:sonarqube -R /opt/sonarqube
- 設定 SonarQube 與資料庫連線
sonar.jdbc.username=sonarqube
sonar.jdbc.password=SecurePassword
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
sonar.web.host=0.0.0.0
5.設定 systemd 服務
- 建立 SonarQube 專用服務設定檔
vim /etc/systemd/system/sonarqube.service
- 將以下的設定值貼上
[Unit]
Description=SonarQube Service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
- 修改 SonarQube 腳本
vim /opt/sonarqube/bin/linux-x86-64/sonar.sh
- 尋找
RUN_AS_USER
在下一行增加參數,原本是有註解是要取消註解
RUN_AS_USER=sonarqube
- 重新載入系統服務
sudo systemctl daemon-reload
- 啟動服務
systemctl enable sonarqube && systemctl start sonarqube
- 檢查服務狀態
systemctl status sonarqube
- 如有設定防火牆,要開通 9000 port
sudo ufw allow 9000/tcp
- 開啟瀏灠器輸入
http://SonarQube站台位置:9000
,登入帳號:admin、密碼:admin
- 登入之後系統會強制您修改預設密碼
- 看到此畫面就表示您已經成功登入到 SonarQube 服務
補充說明
BUBU 在做測試時候發現站台會有異常,因 BUBU 公司的專案是屬於大型的,所以建議該站台的 RAM 盡量在 8G 以上會比較好一點,因該套件是 JAVA 架構,所以會比較吃資源那另外附上修改系統參數
- 修改
vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
ulimit -n 65536
ulimit -u 4096
- 修改好重啟系統
init 6