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.
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:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Sau khi Java được cài đặt, hãy xác minh phiên bản Java bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trước tiên, hãy thêm kho lưu trữ PostgreSQL bằng lệnh sau:
Tiếp theo, hãy thêm khóa GPG bằng lệnh sau:
Tiếp theo, cập nhật kho lưu trữ và cài đặt máy chủ PostgreSQL bằng lệnh sau:
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:
Tiếp theo, đặt mật khẩu PostgreSQL bằng lệnh sau:
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:
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:
Tiếp theo, lgin đến PostgreSQL shell bằng lệnh sau:
Sau khi đăng nhập, bạn sẽ nhận được kết quả sau:
Tiếp theo, tạo người dùng và cơ sở dữ liệu bằng lệnh sau:
Tiếp theo, cấp tất cả các quyền cho cơ sở dữ liệu Sonar bằng lệnh sau:
Tiếp theo, thoát khỏi postgres shell và người dùng bằng lệnh lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
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:
Tiếp theo, di chuyển thư mục đã giải nén đến /opt bằng lệnh sau:
Tiếp theo, tạo một người dùng riêng cho SonarQube bằng lệnh sau:
Tiếp theo, thay đổi quyền sở hữu thư mục /opt/sonarqube thành sonar bằng lệnh sau:
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.
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:
Tiếp theo, chỉnh sửa tập lệnh sonar.sh và xác định người dùng RUN_AS:
Thay đổi dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Thêm các dòng sau:
Lưu và đóng tệp, sau đó tải lại daemon systemd để áp dụng cấu hình thay đổi:
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:
Tiếp theo, xác minh trạng thái của dịch vụ SonarQube bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
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:
Bạn sẽ nhận được kết quả đầu ra sau:
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:
Bạn sẽ nhận được kết quả đầu ra sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
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:
Thêm các dòng sau:
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:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, hãy kiểm tra trạng thái của dịch vụ Nginx bằng lệnh sau:
Bạn sẽ thấy kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
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:
Đ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
Mã:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096
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
Mã:
java --version
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ẻ)
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'
Mã:
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add -
Mã:
apt-get update -y
apt-get -y install postgresql postgresql-contrib
Mã:
systemctl start postgresql
systemctl enable postgresql
Mã:
passwd postgres
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
Mã:
su - postgres
createuser sonar
Mã:
postgres@sonar:~$ psql
Mã:
psql (13.1 (Ubuntu 13.1-1.pgdg20.04+1))Nhập "help" để được trợ giúp.
Mã:
postgres=# ALTER USER sonar WITH ENCRYPTED password 'sonar';
postgres=# CREATE DATABASE sonarqube OWNER sonar;
Mã:
postgres=# cấp tất cả các quyền trên DATABASE sonarqube cho sonar;
Mã:
postgres=# \q
postgres@sonar:~$ exit
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
Mã:
unzip sonarqube-7.9.3.zip
Mã:
mv sonarqube-7.9.3 /opt/sonarqube
Mã:
adduser sonar
Mã:
chown -R sonar:sonar /opt/sonarqube
Mã:
nano /opt/sonarqube/conf/sonar.properties
Mã:
sonar.jdbc.username=sonarsonar.jdbc.password=sonarsonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqubesonar.web.host=0.0.0.0
Mã:
nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Mã:
RUN_AS_USER=sonar
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
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
Mã:
systemctl daemon-reload
Mã:
systemctl start sonar
systemctl enable sonar
Mã:
systemctl status sonar
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.
Mã:
ss -antpl | grep 9000
Mã:
LISTEN 0 25 *:9000 *:* users:(("java",pid=139294,fd=121))
Mã:
tail -f /opt/sonarqube/logs/sonar.log
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
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
Mã:
nano /etc/nginx/conf.d/sonar.conf
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; }}
Mã:
nginx -t
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
Mã:
systemctl status nginx
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.
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: