Hướng Dẫn Cài Đặt SonarQube Trên Ubuntu 22.04 Từ A-Z

Bài viết hướng dẫn chi tiết từng bước cách cài đặt SonarQube trên Ubuntu 22.04, bao gồm cài đặt PostgreSQL 15, Java 17 và cấu hình hệ thống tối ưu nhất.

Hướng Dẫn Cài Đặt SonarQube Trên Ubuntu 22.04 Từ A-Z

SonarQube là một công cụ mã nguồn mở cực kỳ phổ biến giúp bạn tự động đánh giá và kiểm tra chất lượng mã nguồn (Code Quality) của dự án phần mềm. Nó giúp phát hiện lỗi, lỗ hổng bảo mật và các đoạn code viết chưa chuẩn (code smells).

Trong bài viết này, TechCoBan sẽ hướng dẫn bạn từng bước cách cài đặt SonarQube trên máy chủ Ubuntu 22.04. Bài viết được thiết kế chi tiết để ngay cả những bạn mới làm quen với hệ thống Linux cũng có thể tự cài đặt thành công!


Yêu cầu chuẩn bị (Prerequisites)

  • Một máy ảo (Virtual Machine) hoặc máy chủ (VPS) đang chạy hệ điều hành Ubuntu 22.04 (hoặc mới hơn).
  • Quyền truy cập root hoặc tài khoản có quyền sudo.
  • Máy chủ nên có tối thiểu 2GB RAM (Khuyến nghị 4GB) để SonarQube chạy mượt mà.

Bước 1: Cài đặt Cơ sở dữ liệu PostgreSQL 15

SonarQube cần một cơ sở dữ liệu để lưu trữ các báo cáo và thông tin phân tích. Chúng ta sẽ sử dụng PostgreSQL cho việc này.

Đầu tiên, cập nhật hệ thống:

sudo apt update
sudo apt upgrade -y

Thêm kho lưu trữ của PostgreSQL vào hệ thống:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null

Tiến hành cài đặt PostgreSQL:

sudo apt update
sudo apt-get -y install postgresql postgresql-contrib
sudo systemctl enable postgresql

Tạo Database và User cho SonarQube

Sau khi cài đặt, chúng ta cần tạo một cơ sở dữ liệu riêng dành cho SonarQube.

Chuyển sang tài khoản quản trị postgres:

sudo passwd postgres
su - postgres

Truy cập vào giao diện dòng lệnh của PostgreSQL:

createuser sonar
psql 

Tại đây, hãy chạy các lệnh SQL sau để tạo user, tạo database và cấp quyền (Nhớ thay thế 'sonar' ở dòng đầu tiên bằng mật khẩu an toàn hơn nếu bạn triển khai thực tế nhé):

ALTER USER sonar WITH ENCRYPTED password 'sonar';
CREATE DATABASE sonarqube OWNER sonar;
grant all privileges on DATABASE sonarqube to sonar;
\q

Gõ lệnh exit để thoát khỏi tài khoản postgres và quay lại tài khoản ban đầu của bạn.


Bước 2: Cài đặt Java 17

SonarQube được viết bằng ngôn ngữ Java, do đó nó yêu cầu phải có Java Runtime Environment (JRE) phiên bản 17 để hoạt động.

Hãy chạy các lệnh sau dưới quyền root để cài đặt Temurin JDK 17 (Một bản phân phối phổ biến của Java):

sudo bash

apt install -y wget apt-transport-https
mkdir -p /etc/apt/keyrings

wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc

echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list

apt update
apt install -y temurin-17-jdk

Sau khi cài xong, kiểm tra lại phiên bản Java xem đã nhận đúng bản 17 chưa:

update-alternatives --config java
/usr/bin/java --version

exit 

Bước 3: Tăng giới hạn hệ thống (Increase Limits)

Elasticsearch (được nhúng sẵn bên trong SonarQube) yêu cầu một số tài nguyên hệ thống cao hơn mức mặc định của Ubuntu. Chúng ta cần phải nới lỏng các giới hạn này.

Chỉnh sửa file limits.conf:

sudo nano /etc/security/limits.conf

Dán hai dòng này vào phần cuối cùng của file rồi lưu lại:

sonarqube   -   nofile   65536
sonarqube   -   nproc    4096

Tiếp tục chỉnh sửa file cấu hình kernel:

sudo nano /etc/sysctl.conf

Dán dòng này vào cuối file và lưu lại:

vm.max_map_count = 262144

Cuối cùng, hãy khởi động lại máy chủ để hệ thống nhận cấu hình mới:

sudo reboot

Bước 4: Cài đặt và cấu hình SonarQube

Sau khi máy chủ khởi động lại, chúng ta sẽ tải bộ cài đặt SonarQube về máy.

Tải SonarQube (Trong ví dụ này là phiên bản 9.9 LTS) và giải nén nó vào thư mục /opt:

sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
sudo apt install unzip -y
sudo unzip sonarqube-9.9.0.65466.zip -d /opt
sudo mv /opt/sonarqube-9.9.0.65466 /opt/sonarqube

Vì lý do bảo mật, SonarQube không được phép chạy bằng quyền root. Chúng ta sẽ tạo một user hệ thống có tên là sonar và cấp quyền quản lý thư mục cho user này:

sudo groupadd sonar
sudo useradd -c "user to run SonarQube" -d /opt/sonarqube -g sonar sonar
sudo chown sonar:sonar /opt/sonarqube -R

Kết nối SonarQube với Database

Mở file cấu hình của SonarQube:

sudo nano /opt/sonarqube/conf/sonar.properties

Tìm và sửa (hoặc xóa dấu # ở đầu dòng) các thông số cấu hình Database sao cho giống như sau (nếu bạn đã đổi mật khẩu ở Bước 1 thì hãy thay đổi sonar.jdbc.password tương ứng):

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

Lưu lại file và thoát.


Bước 5: Chạy SonarQube như một Systemd Service

Thay vì phải chạy thủ công mỗi lần bật máy, chúng ta sẽ cấu hình để SonarQube tự động chạy ngầm như một Service của Linux.

Tạo file service mới:

sudo nano /etc/systemd/system/sonar.service

Dán toàn bộ đoạn cấu hình dưới đây 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

Khởi động dịch vụ SonarQube và cài đặt cho nó chạy tự động cùng hệ thống:

sudo systemctl daemon-reload
sudo systemctl start sonar
sudo systemctl enable sonar

Kiểm tra trạng thái xem SonarQube đã hoạt động tốt chưa:

sudo systemctl status sonar

Bạn cũng có thể theo dõi tiến trình khởi động của SonarQube (quá trình này mất khoảng 1-2 phút) qua file log:

sudo tail -f /opt/sonarqube/logs/sonar.log

Khi bạn thấy dòng chữ SonarQube is operational, nghĩa là quá trình khởi động đã hoàn tất! Bấm Ctrl + C để thoát theo dõi log.


Truy cập Giao diện Web SonarQube

Bây giờ, hãy mở trình duyệt web của bạn và truy cập vào địa chỉ IP của máy chủ kèm theo cổng 9000:

http://<ĐỊA_CHỈ_IP_CỦA_BẠN>:9000
  • Tên đăng nhập mặc định: admin
  • Mật khẩu mặc định: admin

(Hệ thống sẽ yêu cầu bạn đổi mật khẩu ngay trong lần đăng nhập đầu tiên).

Chúc mừng! Bạn đã cài đặt thành công SonarQube trên Ubuntu 22.04. Giờ đây, bạn có thể tích hợp nó vào các hệ thống CI/CD như GitLab CI hay Jenkins để quét mã nguồn dự án của bạn! Nếu có khó khăn trong quá trình cài đặt, hãy để lại bình luận để TechCoBan hỗ trợ nhé!

Bình luận

Bài viết liên quan