Hướng Dẫn Cài Đặt SonarQube Trên Ubuntu 24.04
Trong quy trình CI/CD và DevSecOps hiện đại, việc kiểm soát chất lượng mã nguồn (Code Quality) là ưu tiên hàng đầu. SonarQube chính là công cụ phổ biến nhất giúp tự động quét lỗi, phát hiện lỗ hổng bảo mật và "code smells" trước khi ứng dụng được triển khai.
Bài viết này sẽ hướng dẫn bạn cách cài đặt SonarQube (phiên bản Community) thủ công trên máy chủ Ubuntu 24.04 một cách chuẩn xác và tối ưu nhất.
1. Điều Kiện Tiên Quyết (Prerequisites)
Trước khi bắt tay vào cài đặt, hãy đảm bảo máy chủ VPS Ubuntu của bạn đáp ứng các tiêu chuẩn sau:
-
Hệ điều hành: Ubuntu 22.04 LTS hoặc 24.04 LTS.
-
Tài nguyên phần cứng: Tối thiểu 2GB RAM (Khuyến nghị 4GB RAM trở lên). SonarQube tích hợp Elasticsearch nên cực kỳ ngốn bộ nhớ, nếu RAM quá thấp, hệ thống sẽ bị lỗi
OutOfMemoryngay khi khởi động. -
Quyền truy cập: User có quyền
sudo(Tuyệt đối không chạy SonarQube bằng quyềnroot).
2. Bước 1: Tối Ưu Hóa Kernel Cho Elasticsearch
Elasticsearch là "trái tim" tìm kiếm ngầm của SonarQube. Nó yêu cầu hệ điều hành phải tăng giới hạn file mở và bộ nhớ ảo.
Mở file cấu hình hệ thống:
sudo nano /etc/sysctl.conf
Thêm hai dòng sau vào cuối file:
vm.max_map_count=262144
fs.file-max=65536
Lưu file và chạy lệnh sau để áp dụng ngay thay đổi:
sudo sysctl -p
3. Bước 2: Cài Đặt Database PostgreSQL
Kể từ phiên bản 7.9, SonarQube đã ngừng hỗ trợ MySQL. Do đó, chúng ta sẽ sử dụng PostgreSQL.
Cài đặt PostgreSQL:
sudo apt update
sudo apt install postgresql postgresql-contrib -y
Truy cập vào shell của PostgreSQL để tạo cơ sở dữ liệu:
sudo -i -u postgres psql
Chạy các lệnh SQL sau để tạo User và Database (Bạn có thể thay đổi mật khẩu 'sonar' thành mật khẩu bảo mật hơn):
CREATE USER sonar WITH ENCRYPTED PASSWORD 'sonar';
CREATE DATABASE sonarqube OWNER sonar;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;
\q
4. Bước 3: Cài Đặt Java 17
Các phiên bản SonarQube mới nhất yêu cầu môi trường thực thi là Java 17.
sudo apt install openjdk-17-jre -y
Kiểm tra lại phiên bản Java để chắc chắn: java -version.
5. Bước 4: Tải Và Cấu Hình SonarQube
Đầu tiên, tạo một User hệ thống riêng biệt có tên là sonar để chạy ứng dụng:
sudo useradd -b /opt/sonarqube -s /bin/bash sonar
Tải bản phát hành SonarQube mới nhất và giải nén vào thư mục /opt:
sudo apt install unzip -y
cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.4.1.88267.zip
sudo unzip sonarqube-10.4.1.88267.zip
sudo mv sonarqube-10.4.1.88267 sonarqube
sudo rm sonarqube-10.4.1.88267.zip
Phân quyền sở hữu thư mục cho user sonar:
sudo chown -R sonar:sonar /opt/sonarqube
Mở file cấu hình của SonarQube để kết nối với PostgreSQL:
sudo nano /opt/sonarqube/conf/sonar.properties
Thêm đoạn sau vào cuối file là được :
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
sonar.web.javaAdditionalOpts=-server
sonar.web.host=0.0.0.0
6. Bước 5: Chạy SonarQube Dưới Dạng Systemd Service
Để SonarQube tự động chạy mỗi khi máy chủ khởi động lại (reboot), chúng ta cần tạo một Systemd service.
Tạo file service mới:
sudo nano /etc/systemd/system/sonarqube.service
Dán cấu hình sau vào file:
[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=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target

Kích hoạt và khởi động dịch vụ:
sudo systemctl daemon-reload
sudo systemctl enable sonarqube.service
sudo systemctl start sonarqube.service
Kiểm tra trạng thái xem SonarQube đã chạy thành công chưa:
sudo systemctl status sonarqube.service

7. Truy Cập Giao Diện SonarQube
Quá trình khởi động SonarQube (đặc biệt là khởi chạy Elasticsearch) có thể mất từ 1 đến 2 phút. Sau đó, hãy mở trình duyệt web và truy cập:
-
URL:
http://<IP-VPS-CỦA-BẠN>:9000 -
Username mặc định:
admin -
Password mặc định:
admin

Ngay trong lần đăng nhập đầu tiên, hệ thống sẽ yêu cầu bạn đổi mật khẩu mới để đảm bảo an toàn.

Lời Kết
Việc cài đặt SonarQube trên Ubuntu đôi khi gặp khó khăn do thiếu hụt cấu hình tài nguyên RAM hoặc Kernel. Bằng cách làm theo từng bước cấu hình chuyên sâu ở trên, máy chủ SonarQube của bạn sẽ hoạt động cực kỳ ổn định, sẵn sàng tích hợp với Jenkins hoặc GitHub Actions để thực hiện quét mã nguồn liên tục.
Mẹo nhỏ: Để dự án trông chuyên nghiệp hơn, bạn nên cài đặt thêm Nginx làm Reverse Proxy và trỏ một sub-domain (ví dụ: sonar.com.quyenlt) kèm theo chứng chỉ SSL/HTTPS.
Nếu gặp lỗi ở bất kỳ bước nào, đừng ngần ngại để lại bình luận bên dưới nhé!