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.
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
Hướng Dẫn Cài Đặt Và Cấu Hình Fail2Ban Trên Ubuntu
Hướng dẫn chi tiết cách cài đặt và cấu hình Fail2Ban trên hệ điều hành Ubuntu giúp bảo vệ máy chủ Linux khỏi các cuộc tấn công Brute-force nguy hiểm.
So Sánh Caddy, Nginx và Apache: Đâu Là Lựa Chọn Tốt Nhất Cho Web Server?
Phân tích và so sánh chi tiết ưu, nhược điểm của Caddy, Nginx và Apache. Giúp bạn dễ dàng lựa chọn web server phù hợp nhất cho dự án của mình.
Hướng Dẫn Chuyển Đổi Từ Ingress NGINX Sang HAProxy Ingress Controller
Hướng dẫn chi tiết cách migration (chuyển đổi) từ Ingress NGINX sang HAProxy Kubernetes Ingress Controller cho hệ thống production. So sánh ưu nhược điểm và best practices.