跳到主內容

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

sq-install-01.png

  • 登入之後系統會強制您修改預設密碼

sq-install-02.png

  • 看到此畫面就表示您已經成功登入到 SonarQube 服務

sq-install-03.png


補充說明


  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

備註





參考相關網頁