在建立現代化 CI/CD 流程時,程式碼品質的自動化檢測是維持系統穩定性的核心門禁。SonarQube 作為企業級的靜態代碼分析工具,其運行穩定性高度依賴於底層基礎設施與資料庫的效能。本篇將導引你完成 Linux 核心參數調優、Docker 環境建置,以及專為 SonarQube 優化的 PostgreSQL 17 資料庫配置。
在我們的架構中,SonarQube 與 Jenkins 將統一配置在 <REVERSE_PROXY_IP> 的 IIS Reverse Proxy 之後,確保外部存取的安全性與網址的一致性。
SonarQube 內建的 Elasticsearch 對虛擬記憶體與檔案描述符有嚴格要求。若未進行微調,系統在高負載下極易崩潰。
編輯 /etc/sysctl.conf 並加入以下配置:
# 提升最大虛擬記憶體區域數量,確保 Elasticsearch 正常運作
vm.max_map_count=524288
# 提升系統級別的最大開啟檔案數
fs.file-max=131072
執行 sudo sysctl -p 立即生效。
編輯 /etc/security/limits.conf:
* soft nofile 131072
* hard nofile 131072
* soft nproc 8192
* hard nproc 8192
我們採用 Docker 部署 SonarQube 以確保環境一致性:
# 安裝 Docker Engine
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
SonarQube 需要穩定且高效的關聯式資料庫來儲存掃描結果與趨勢數據。
sudo apt install postgresql-17
sudo systemctl enable postgresql --now
編輯 /etc/postgresql/17/main/postgresql.conf,設定 listen_addresses = '*' 以接收容器連線。
接著編輯 /etc/postgresql/17/main/pg_hba.conf,將驗證方式改為密碼驗證:
host all all 0.0.0.0/0 md5
進入 PostgreSQL 執行以下初始化指令:
-- 建立服務帳號與資料庫
CREATE USER sonarqube WITH PASSWORD 'YourStrongPassword';
CREATE DATABASE sonarqubedb WITH OWNER sonarqube ENCODING 'UTF8';
-- 權限隔離設計
\c sonarqubedb
CREATE SCHEMA sonarqube_schema AUTHORIZATION sonarqube;
ALTER USER sonarqube SET search_path TO sonarqube_schema;
GRANT ALL PRIVILEGES ON DATABASE sonarqubedb TO sonarqube;
GRANT ALL ON SCHEMA sonarqube_schema TO sonarqube;
透過對系統核心參數的精確調優與資料庫的規範化建置,我們為 SonarQube 打造了一個穩固的運行平台。這確保了未來在面對大規模專案掃描時,系統能維持高性能與高可用性。
明天的文章,我們將正式啟動 SonarQube Server 容器,並配置關鍵的品質門禁(Quality Gate)。