Cách cài đặt SonarQube trên Ubuntu 20.04

theanh

Administrator
Nhân viên
SonarQube là một nền tảng miễn phí, mã nguồn mở và dựa trên web được sử dụng để phân tích chất lượng mã nguồn. Nó được viết bằng java và có thể phân tích và quản lý mã của hơn 20 ngôn ngữ lập trình, bao gồm c/c++, PL/SQL, Cobol, v.v. thông qua các plugin. Nó có thể được tích hợp với các máy chủ cơ sở dữ liệu khác như MSSQL, PostgreSQL, Oracle và MySQL. Nó liên tục kiểm tra và hiển thị tình trạng của một ứng dụng. Nó có rất nhiều plugin giúp bạn mở rộng chức năng của nó. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt phần mềm SonarQube trên Ubuntu 20.04.

Điều kiện tiên quyết​

  • Máy chủ chạy Ubuntu 20.04.
  • Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Mật khẩu gốc được cấu hình cho máy chủ.

Bắt đầu​

Đầu tiên, bạn sẽ cần cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật tất cả các gói này bằng lệnh sau:
Mã:
apt-get update -y
Sau khi cập nhật tất cả các gói, bạn sẽ cần tăng vm.max_map_count kernal, file discriptor và ulimit trong hệ thống của mình. Bạn có thể thực hiện bằng các lệnh sau:
Mã:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt Java​

SonarQube là ứng dụng dựa trên Java. Vì vậy, Java phải được cài đặt trong hệ thống của bạn. Nếu chưa cài đặt, bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install default-jdk unzip gnupg2 -y
Sau khi Java được cài đặt, hãy xác minh phiên bản Java bằng lệnh sau:
Mã:
java --version
Bạn sẽ nhận được kết quả sau:
Mã:
openjdk 11.0.9.1 2020-11-04Môi trường chạy thời gian OpenJDK (bản dựng 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, chế độ hỗn hợp, chia sẻ)
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình PostgreSQL Máy chủ​

SonarQube sử dụng PostgreSQL làm cơ sở dữ liệu phụ trợ. Vì vậy, bạn sẽ cần cài đặt nó trong máy chủ của mình. Theo mặc định, phiên bản mới nhất của PostgreSQL không có trong kho lưu trữ mặc định của Ubuntu 20.04. Vì vậy, bạn sẽ cần thêm kho lưu trữ PostgreSQL vào hệ thống của mình.

Trước tiên, hãy thêm kho lưu trữ PostgreSQL bằng lệnh sau:
Mã:
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
Tiếp theo, hãy thêm khóa GPG bằng lệnh sau:
Mã:
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add -
Tiếp theo, cập nhật kho lưu trữ và cài đặt máy chủ PostgreSQL bằng lệnh sau:
Mã:
apt-get update -y
apt-get -y install postgresql postgresql-contrib
Sau khi cài đặt, hãy khởi động dịch vụ PostgreSQL và cho phép dịch vụ này khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start postgresql
systemctl enable postgresql
Tiếp theo, đặt mật khẩu PostgreSQL bằng lệnh sau:
Mã:
passwd postgres
Bạn sẽ cần yêu cầu nhập mật khẩu mới như hiển thị bên dưới:
Mã:
Mật khẩu mới:Nhập lại mật khẩu mới:passwd: mật khẩu đã cập nhật thành công
Tiếp theo, chuyển người dùng sang postgres và tạo người dùng mới cho sonar bằng lệnh sau:
Mã:
su - postgres
createuser sonar
Tiếp theo, lgin đến PostgreSQL shell bằng lệnh sau:
Mã:
postgres@sonar:~$ psql
Sau khi đăng nhập, bạn sẽ nhận được kết quả sau:
Mã:
psql (13.1 (Ubuntu 13.1-1.pgdg20.04+1))Nhập "help" để được trợ giúp.
Tiếp theo, tạo người dùng và cơ sở dữ liệu bằng lệnh sau:
Mã:
postgres=# ALTER USER sonar WITH ENCRYPTED password 'sonar';
postgres=# CREATE DATABASE sonarqube OWNER sonar;
Tiếp theo, cấp tất cả các quyền cho cơ sở dữ liệu Sonar bằng lệnh sau:
Mã:
postgres=# cấp tất cả các quyền trên DATABASE sonarqube cho sonar;
Tiếp theo, thoát khỏi postgres shell và người dùng bằng lệnh lệnh sau:
Mã:
postgres=# \q
postgres@sonar:~$ exit
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình SonarQube​

Trước tiên, hãy tải xuống phiên bản mới nhất của SonarQube từ trang web chính thức của nó bằng lệnh sau:
Mã:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.3.zip
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Mã:
unzip sonarqube-7.9.3.zip
Tiếp theo, di chuyển thư mục đã giải nén đến /opt bằng lệnh sau:
Mã:
mv sonarqube-7.9.3 /opt/sonarqube
Tiếp theo, tạo một người dùng riêng cho SonarQube bằng lệnh sau:
Mã:
adduser sonar
Tiếp theo, thay đổi quyền sở hữu thư mục /opt/sonarqube thành sonar bằng lệnh sau:
Mã:
chown -R sonar:sonar /opt/sonarqube
Tiếp theo, bạn sẽ cần chỉnh sửa tệp cấu hình SonarQube và xác định tên người dùng, mật khẩu, máy chủ web và url PostgreSQL của sonar.
Mã:
nano /opt/sonarqube/conf/sonar.properties
Thay đổi các dòng sau bằng tên người dùng, mật khẩu sonar và URL PostgreSQL của bạn:
Mã:
sonar.jdbc.username=sonarsonar.jdbc.password=sonarsonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqubesonar.web.host=0.0.0.0
Tiếp theo, chỉnh sửa tập lệnh sonar.sh và xác định người dùng RUN_AS:
Mã:
nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Thay đổi dòng sau:
Mã:
RUN_AS_USER=sonar
Lưu và đóng tệp khi bạn hoàn tất.

Tạo Tệp Dịch vụ Systemd cho SonarQube​

Tiếp theo, bạn sẽ cần tạo một tệp dịch vụ systemd để quản lý dịch vụ SonarQube. Bạn có thể tạo nó bằng lệnh sau:
Mã:
nano /etc/systemd/system/sonar.service
Thêm các dòng sau:
Mã:
[Unit]Description=SonarQube serviceAfter=syslog.target network.target[Service]LimitNOFILE=65536LimitNPROC=4096Type=forkingExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh startExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stopUser=sonarGroup=sonarRestart=alwaysLimitNOFILE=65536LimitNPROC=4096[Install]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd để áp dụng cấu hình thay đổi:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ SonarQube và cho phép dịch vụ này khởi động khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start sonar
systemctl enable sonar
Tiếp theo, xác minh trạng thái của dịch vụ SonarQube bằng lệnh sau:
Mã:
systemctl status sonar
Bạn sẽ nhận được kết quả sau:
Mã:
? sonar.service - Dịch vụ SonarQube Đã tải: đã tải (/etc/systemd/system/sonar.service; đã tắt; đã bật cài đặt trước của nhà cung cấp) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2020-11-16 16:28:41 UTC; 5 giây trước Tiến trình: 79015 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS) PID chính: 79081 (wrapper) Nhiệm vụ: 46 (giới hạn: 4691) Bộ nhớ: 725,8M CGroup: /system.slice/sonar.service ??79081 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=So> ??79085 java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../../lib/jsw/wrap> ??79125 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInit>Nov 16 16:28:40 sonar.example.com systemd[1]: Đang khởi động dịch vụ SonarQube...Nov 16 16:28:40 sonar.example.com sonar.sh[79015]: Đang khởi động SonarQube...Nov 16 16:28:41 sonar.example.com sonar.sh[79015]: Đã khởi động SonarQube.Nov 16 16:28:41 sonar.example.com systemd[1]: Đã khởi động dịch vụ SonarQube.
Lúc này, SonarQube đã khởi động và đang lắng nghe trên cổng 9000. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
ss -antpl | grep 9000
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
LISTEN 0 25 *:9000 *:* users:(("java",pid=139294,fd=121))
Nếu bạn gặp bất kỳ sự cố nào với SonarQube, bạn có thể kiểm tra nhật ký SonarQube bằng lệnh sau:
Mã:
tail -f /opt/sonarqube/logs/sonar.log
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
2020.11.16 17:04:24 INFO app[][o.s.a.ProcessLauncherImpl] Khởi chạy quy trình[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] từ [/opt/sonarqube]: /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp --add-opens=java.base/java.util=ALL-UNNAMED -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/common/*:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.2.5.jar org.sonar.ce.app.CeServer /opt/sonarqube/temp/sq-process10447466834580828864properties2020.11.16 17:04:30 INFO app[][o.s.a.SchedulerImpl] Process[ce] đã hoạt động2020.11.16 17:04:30 INFO app[][o.s.a.SchedulerImpl] SonarQube đã hoạt động
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình Nginx​

Tiếp theo, bạn sẽ cần cài đặt và cấu hình Nginx làm proxy ngược cho SonarQube. Trước tiên, cài đặt máy chủ Nginx bằng lệnh sau:
Mã:
apt-get install nginx -y
Sau khi Nginx được cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx mới cho SonarQube:
Mã:
nano /etc/nginx/conf.d/sonar.conf
Thêm các dòng sau:
Mã:
upstream sonar_backend { server 127.0.0.1:9000;}server { listen 80; server_name sonar.example.com; location / { proxy_pass http://sonar_backend/; proxy_http_version 1.1; proxy_set_header Nâng cấp $http_upgrade; proxy_set_header Kết nối "nâng cấp"; proxy_set_header Máy chủ $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; }}
Lưu và đóng tệp, sau đó xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: thử nghiệm tệp cấu hình /etc/nginx/nginx.conf thành công
Tiếp theo, hãy kiểm tra trạng thái của dịch vụ Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ thấy kết quả sau:
Mã:
? nginx.service - Máy chủ web hiệu suất cao và máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: hoạt động (đang chạy) từ Thứ Hai 2020-11-16 17:04:16 UTC; 4 phút 3 giây trước Tài liệu: man:nginx(8) Quy trình: 140017 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Quy trình: 140028 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 140035 (nginx) Nhiệm vụ: 3 (giới hạn: 4691) Bộ nhớ: 4,6M CGroup: /system.slice/nginx.service ??140035 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??140037 nginx: tiến trình công nhân ??140038 nginx: tiến trình công nhân16/11 17:04:16 kolab.example.com systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...16/11 17:04:16 kolab.example.com systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập Giao diện người dùng web SonarQube​

Bây giờ, hãy mở trình duyệt web của bạn và truy cập SonarQube bằng URL . Bạn sẽ được chuyển hướng đến trang sau:



Bây giờ, hãy nhấp vào nút Đăng nhập. Bạn sẽ thấy trang sau:



Cung cấp tên người dùng mặc định là admin và mật khẩu là admin, sau đó nhấp vào nút Đăng nhập. Bạn sẽ thấy bảng điều khiển mặc định của SonarQube trong màn hình sau:


Kết luận​

Xin chúc mừng! Bạn đã cài đặt và cấu hình thành công SonarQube với Nginx làm proxy ngược trên Ubuntu 20.04. Tôi hy vọng bây giờ bạn có thể triển khai dễ dàng trong môi trường phát triển. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên