SonarQube hay trước đây là Sonar là một nền tảng mã nguồn mở để phân tích mã tĩnh và bảo mật mã. Nó cho phép bạn thực hiện phân tích mã tĩnh và chất lượng mã để phát hiện lỗi và tăng cường bảo mật ứng dụng. Nó cũng cung cấp các báo cáo như mã trùng lặp, tiêu chuẩn mã hóa, độ phức tạp của mã và khuyến nghị bảo mật.
Với sonarQube, bạn có thể tự động phân tích mã tĩnh cho 29 ngôn ngữ lập trình. Bạn có thể dễ dàng tích hợp SonarQube với các công cụ CI/CD hiện có của mình như Jenkins, Azure DevOps hoặc IDE như IntelliJ và Visual Code Studio.
Trong hướng dẫn này, bạn sẽ học cách cài đặt phân tích mã tĩnh SonarQube trên máy chủ Ubuntu 22.04. Bạn cũng sẽ học cách cài đặt PostgreSQL sẽ được sử dụng làm cơ sở dữ liệu cho SonarQube và máy chủ web Nginx sẽ được sử dụng làm proxy ngược.
Điều kiện tiên quyết
Trước khi bắt đầu hướng dẫn này, bạn cần có những điều sau:
- Máy chủ Ubuntu 22.04 có bật tường lửa UFW.
- Người dùng không phải root có quyền sudo/administrator.
- Tên miền trỏ tới địa chỉ IP của máy chủ Ubuntu.
Cài đặt Java OpenJDK
Bước đầu tiên của bạn ở đây là cài đặt Java OpenJDK trên hệ thống Ubuntu của bạn. Máy chủ SonarQube yêu cầu Java OpenJDK v11 phải được cài đặt trên máy Linux của bạn.
Trước khi bắt đầu cài đặt các gói, hãy chạy lệnh apt sau để cập nhật và làm mới kho lưu trữ chỉ mục gói Ubuntu của bạn.
sudo apt updateSau đó, cài đặt Java OpenJDK v11 bằng lệnh apt sau. Phiên bản OpenJDK mặc định trên Ubuntu 22.04 mới nhất là Java OpenJDK v11.
Nhập Y khi được nhắc để xác nhận cài đặt và nhấn ENTER để tiếp tục.
sudo apt install default-jdk
Sau khi Java OpenJDK được cài đặt, hãy xác minh phiên bản Java bằng lệnh java sau. Bạn sẽ thấy đầu ra của phiên bản Java được cài đặt trên hệ thống của bạn.
java -version
Cài đặt hệ thống cơ sở dữ liệu PostgreSQL
SonarQube hỗ trợ nhiều hệ thống cơ sở dữ liệu như PostgreSQL, Microsoft SQL Server và cơ sở dữ liệu oracle. Đối với ví dụ này, bạn sẽ sử dụng PostgreSQL làm cơ sở dữ liệu cho cài đặt SonarQube của mình.
Tại thời điểm viết bài này, phiên bản mới nhất của SonarQube yêu cầu ít nhất là PostgreSQL v9.6. Trong hướng dẫn này, bạn sẽ cài đặt PostgreSQL v13 từ kho lưu trữ PostgreSQL chính thức.
Đầu tiên, hãy thêm khóa GPG của kho lưu trữ PostgreSQL bằng lệnh sau.
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -Bây giờ, hãy thêm kho lưu trữ PostgreSQL cho hệ thống Ubuntu bằng lệnh bên dưới.
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'Sau đó, hãy cập nhật và làm mới chỉ mục gói Ubuntu của bạn.
sudo apt update
Bây giờ, hãy cài đặt cơ sở dữ liệu PostgreSQL v13 thông qua lệnh apt bên dưới. Nhập Y khi được nhắc để xác nhận cài đặt, sau đó nhấn ENTER để tiếp tục.
sudo apt install postgresql-13
Sau khi PostgreSQL được cài đặt, hãy chạy lệnh sau để xác minh dịch vụ ‘postgresql’ và đảm bảo dịch vụ đang chạy.
sudo systemctl is-enabled postgresql
sudo systemctl status postgresqlBạn sẽ thấy đầu ra của dịch vụ ‘ postgresql ‘ được bật, nghĩa là sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ ‘postgresql’ đang chạy.

Sau khi cài đặt PostgreSQL trên máy chủ, bạn đã sẵn sàng thiết lập cơ sở dữ liệu và người dùng mới cho SonarQube thông qua shell PostgreSQL.
Chạy lệnh sau để đăng nhập vào shell PostgreSQL.
sudo -u postgres psqlBây giờ, hãy chạy các truy vấn PostgreSQL sau để tạo cơ sở dữ liệu và người dùng mới cho SnonarQube. Trong ví dụ này, bạn sẽ tạo cơ sở dữ liệu PostgreSQL và người dùng ‘ sonarqube ‘. Và hãy nhớ thay đổi mật khẩu bằng mật khẩu mạnh.
CREATE USER sonarqube WITH PASSWORD 'Password';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
Tiếp theo, chạy các truy vấn sau để kiểm tra danh sách cơ sở dữ liệu và người dùng trên máy chủ PostgreSQL.
\l
\duNếu cơ sở dữ liệu và người dùng của bạn đã được tạo, bạn sẽ thấy cơ sở dữ liệu ‘sonarqube’ trong danh sách cơ sở dữ liệu và người dùng ‘sonarqube’ trong danh sách người dùng.

Cuối cùng, đăng xuất khỏi PostgreSQL bằng truy vấn bên dưới.
\qThiết lập hệ thống
Để cài đặt SonarQube trên hệ thống Linux, bạn phải có một người dùng chuyên dụng sẽ chạy SonarQube và một số cấu hình bổ sung như tham số ulimit và kernel.
Bây giờ, bạn sẽ tạo người dùng mới cho SonarQube, thiết lập các tham số kernel tùy chỉnh thông qua tệp sysctl.conf và thiết lập ulimit.
Chạy lệnh sau để tạo người dùng mới ‘ sonarqube ‘ trên hệ thống của bạn.
sudo useradd -b /opt/sonarqube -s /bin/bash sonarqubeTiếp theo, mở tệp /etc/sysctl.conf bằng trình soạn thảo nano.
sudo nano /etc/sysctl.confThêm cấu hình sau vào cuối dòng. SonarQube yêu cầu tham số hạt nhân vm.max_map_count phải lớn hơn ‘ 524288 ‘ và fx.file-max phải lớn hơn ‘ 131072 ‘.
vm.max_map_count=524288
fs.file-max=131072Lưu tệp và thoát khỏi trình soạn thảo khi bạn hoàn tất.
Bây giờ, hãy chạy lệnh sysctl bên dưới để áp dụng những thay đổi mới cho tệp ‘/etc/sysctl.conf’.
sudo sysctl --systemTrong kết quả đầu ra sau, bạn có thể thấy các tham số hạt nhân mới được áp dụng.

Next, run the following command to set up ulimit for the SonarQube. This will take temporary effects on your system, when the system is rebooted, the ulimits will revert to default.ulimit -n 131072
ulimit -u 8192Để cấu hình ulimit vĩnh viễn, hãy tạo tệp cấu hình mới ‘ /etc/security/limits.d/99-sonarqube.conf ‘ bằng lệnh sau.
sudo nano /etc/security/limits.d/99-sonarqube.confThêm cấu hình sau vào tệp.
sonarqube - nofile 131072
sonarqube - nproc 8192Lưu tệp và đóng trình soạn thảo khi bạn hoàn tất.
Bây giờ bạn đã hoàn tất cấu hình hệ thống Ubuntu của mình để cài đặt SnonarQube. Bạn sẽ tải xuống gói SonarQube và thiết lập cài đặt SonarQube ở bước tiếp theo.
Tải xuống gói SonarQube
SonarQube có thể được cài đặt theo hai cách khác nhau, thông qua tệp zip và hình ảnh Docker. Trong ví dụ này, bạn sẽ cài đặt SonarQube thông qua gói tệp zip mà bạn sẽ tải xuống từ trang tải xuống SonarQube chính thức.
Tại thời điểm viết bài này, SonarQube phiên bản mới nhất v9.6.1, bạn sẽ cài đặt theo các bước sau.
Trước khi tải xuống gói SonarQube, hãy chạy lệnh apt sau để cài đặt gói cơ bản như unzip và wget.
sudo apt install unzip software-properties-common wgetBây giờ, hãy tải xuống gói SonarQube thông qua lệnh wget bên dưới.
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.6.1.59531.zipSau khi SonarQube được tải xuống, bạn sẽ thấy tệp zip ‘ sonarqube-9.6.1.59531.zip ‘ trong thư mục làm việc của bạn.
Giải nén gói SonarQube bằng lệnh unzip bên dưới. Bạn sẽ nhận được một thư mục mới ‘ sonarqube-9.6.1.59531 ‘ nơi gói SonarQube được lưu trữ.
unzip sonarqube-9.6.1.59531.zipDi chuyển thư mục ‘ sonarqube-9.6.1.59531 ‘ đến ‘ /opt/sonarqube ‘ bằng lệnh bên dưới.
mv sonarqube-9.6.1.59531 /opt/sonarqubeCuối cùng, hãy thay đổi quyền sở hữu thư mục cài đặt SonarQube ‘/opt/sonarqube’ thành người dùng ‘sonarquba’ thông qua lệnh chown như bên dưới.
sudo chown -R sonarqube:sonarqube /opt/sonarqubeBây giờ bạn đã tải gói SonarQube xuống thư mục cài đặt ‘ /opt/sonarqube ‘. Tiếp theo, bạn sẽ cấu hình cài đặt SonarQube của mình, sau đó thiết lập tệp dịch vụ systemd cho SonarQube.

Cấu hình SonarQube
Sau khi tải xuống gói SonarQube, bạn sẽ thiết lập cài đặt SonarQUbe bằng cách chỉnh sửa tệp cấu hình mặc định ‘/opt/sonarqube/conf/sonar.properties’.
Bạn sẽ thêm thông tin chi tiết về cơ sở dữ liệu PostgreSQL, thiết lập heap bộ nhớ tối đa cho quy trình Elasticsearch và thiết lập máy chủ web và cổng cho dịch vụ SonarQube thông qua tệp ‘/opt/sonarqube/conf/sonar.properties’. Và cuối cùng, bạn sẽ thiết lập SonarQube dưới dạng dịch vụ systemd.
Bây giờ, hãy mở tệp cấu hình SonarQube ‘/opt/sonarqube/conf/sonar.properties’ bằng trình soạn thảo nano.
nano /opt/sonarqube/conf/sonar.propertiesĐối với cấu hình cơ sở dữ liệu, hãy bỏ chú thích một số tùy chọn sau và thay đổi giá trị mặc định bằng cách sử dụng thông tin chi tiết về cơ sở dữ liệu của bạn.
sonar.jdbc.username=sonarqube
sonar.jdbc.password=Password
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqubeBây giờ, hãy bỏ chú thích cấu hình sau để thiết lập kích thước bộ nhớ heap tối đa cho quy trình elasticsearch. Trong ví dụ này, heap tối đa sẽ là 512 MB.
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryErrorCuối cùng, bỏ chú thích và thay đổi các cấu hình sau để thiết lập địa chỉ IP và cổng của SonarQube sẽ chạy. Ngoài ra, mức nhật ký sẽ là ‘INFO” và được lưu trữ trong thư mục ‘logs’ của thư mục cài đặt SonarQube.
sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server
sonar.log.level=INFO
sonar.path.logs=logsLưu tệp và thoát khỏi trình soạn thảo khi bạn hoàn tất.
Sau khi bạn hoàn tất cấu hình SonarQube. Bây giờ, bạn sẽ thiết lập tệp dịch vụ systemd cho SonarQube. Điều này cho phép bạn dễ dàng kiểm soát quy trình SonarQube bằng cách sử dụng lệnh systemctl.
Chạy lệnh sau để tạo tệp dịch vụ systemd mới ‘ /etc/systemd/system/sonarqube.service ‘.
sudo nano /etc/systemd/system/sonarqube.serviceThêm cấu hình sau vào tệp.
[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.targetLưu tệp và thoát khỏi trình soạn thảo khi bạn hoàn tất.
Bây giờ, hãy tải lại trình quản lý systemd bằng cách sử dụng lệnh sau.
sudo systemctl daemon-reloadSau đó, khởi động và kích hoạt ‘sonarqube.service’ thông qua lệnh systemctl bên dưới.
sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service
Cuối cùng, hãy xác minh trạng thái ‘sonarqube.service’ bằng lệnh sau và đảm bảo trạng thái của lệnh này đang chạy.
sudo systemctl status sonarqube.serviceBạn sẽ thấy đầu ra trong ảnh chụp màn hình sau. Trạng thái ‘sonarqube.service’ đang chạy và cũng được bật, nghĩa là nó sẽ tự động chạy khi khởi động hệ thống.

Bây giờ SonarQube đang chạy như một dịch vụ systemd, bạn sẽ cài đặt và thiết lập proxy ngược cho SonarQube chạy trên máy chủ cục bộ với cổng mặc định là TCP ‘ 9000 ‘.
Chạy SonarQube với Reverse Proxy
Quá trình cài đặt SonarQube của bạn hiện đang chạy, bạn có thể cài đặt máy chủ web Nginx và thiết lập các khối máy chủ sẽ được sử dụng làm proxy ngược cho SonarQube.
Chạy lệnh apt sau để cài đặt máy chủ web Nginx vào hệ thống Ubuntu của bạn. Nhập Y khi được nhắc để xác nhận cài đặt và nhấn ENTER để tiếp tục.
sudo apt install nginx
Sau khi nginx được cài đặt, hãy xác minh dịch vụ nginx và đảm bảo trạng thái dịch vụ đang chạy thông qua lệnh systemctl như bên dưới.
sudo systemctl is-enabled nginx
sudo systemctl status nginxBạn sẽ thấy đầu ra của dịch vụ nginx được bật, nghĩa là nó sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ nginx đang chạy.

Sau khi máy chủ web Nginx chạy, bạn sẽ tạo cấu hình khối máy chủ mới sẽ được sử dụng làm proxy ngược cho SonarQube.
Tạo cấu hình khối máy chủ mới ‘/etc/nginx/sites-available/sonarqube.conf’ bằng lệnh sau.
sudo nano /etc/nginx/sites-available/sonarqube.confThêm cấu hình sau vào tệp của bạn và nhớ thay đổi tên miền.
server {
listen 80;
server_name sonar.howtoforge.local;
access_log /var/log/nginx/sonar.access.log;
error_log /var/log/nginx/sonar.error.log;
proxy_buffers 16 64k;
proxy_buffer_size 128k;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}Lưu tệp và thoát khỏi trình soạn thảo khi bạn hoàn tất.
Tiếp theo, kích hoạt cấu hình khối máy chủ ‘sonarqube.conf’ bằng cách tạo liên kết tượng trưng của tệp đó đến thư mục ‘ /etc/nginx/sites-enabled ‘. Sau đó, xác minh các tệp cấu hình Nginx của bạn.
sudo ln -s /etc/nginx/sites-available/sonarqube.conf /etc/nginx/sites-enabled/
sudo nginx -tNếu bạn có các tệp cấu hình Nginx phù hợp và chính xác, bạn sẽ thấy thông báo đầu ra như “ kiểm tra thành công” .
Cuối cùng, hãy chạy lệnh systemctl bên dưới để khởi động lại dịch vụ nginx và áp dụng cấu hình khối máy chủ mới.
sudo systemctl restart nginxCài đặt SonarQube
Sau khi hoàn tất cấu hình proxy ngược cho SonarQube, bây giờ bạn có thể truy cập cài đặt SonarQube thông qua tên miền của mình và thiết lập một số cấu hình cơ bản cho SonarQube.
Mở trình duyệt web và truy cập tên miền cài đặt SonarQube của bạn (ví dụ: http://sonar.howtoforge.local).
Bây giờ bạn sẽ nhận được trang đăng nhập SonarQube. Nhập tên người dùng và mật khẩu mặc định là admin/admin và nhấp vào Đăng nhập .

Sau khi đăng nhập, bạn sẽ được yêu cầu thiết lập mật khẩu mới cho SnonarQube. Nhập mật khẩu cũ là admin, sau đó nhập mật khẩu mạnh mới và lặp lại, sau đó nhấp vào Cập nhật.

Bây giờ bạn sẽ thấy bảng điều khiển người dùng SonarQube trong ảnh chụp màn hình sau.

Phần kết luận
Trong hướng dẫn này, bạn đã cài đặt SonarQube trên máy chủ Ubuntu 22.04 mới nhất. Ngoài ra, bạn đã hoàn tất cài đặt cơ bản cơ sở dữ liệu PostgreSQL thông qua kho lưu trữ PostgreSQL chính thức và cài đặt máy chủ web Nginx. Sau đó, bạn cũng đã cấu hình proxy ngược cho SOnarQube với các khối máy chủ Nginx.
SonarQube hiện đã được cài đặt trên máy chủ Ubuntu của bạn. Bây giờ bạn có thể thêm dự án mà bạn sẽ phân tích vào SonarQube thông qua kho lưu trữ git.
Đọc thêm:
- https://congdonglinux.com/argocd-la-gi-tang-toc-qua-trinh-phat-trien-phan-mem-cua-ban-ngay-hom-nay/
- https://forum.congdonglinux.com/










Add Comment