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

theanh

Administrator
Nhân viên
SonarQube là một nền tảng mã nguồn mở để liên tục kiểm tra chất lượng mã của các ứng dụng. Nó được viết bằng ngôn ngữ Java và hỗ trợ nhiều cơ sở dữ liệu. Bạn có thể kiểm tra mã và kiểm tra tình trạng của ứng dụng cho hơn 20 ngôn ngữ lập trình bao gồm Java, C, C++, C#, PHP và các ngôn ngữ web như JavaScript, HTML và CSS. SonarQube có thể phân tích mã nguồn, tìm lỗ hổng bảo mật, phát hiện lỗi và hiển thị kết quả trên bảng điều khiển dựa trên web. Bạn có thể dễ dàng tích hợp SonarQube với Maven, Ant, Gradle, MSBuild, LDAP, Active Directory và GitHub.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt SonarQube trên máy chủ Ubuntu 18.04 LTS (Bionic Beaver).

Yêu cầu​

  • Một máy chủ chạy Ubuntu 18.04.
  • Một người dùng không phải root có quyền sudo.

Bắt đầu​

Trước khi bắt đầu, bạn sẽ cần cập nhật hệ thống của mình lên phiên bản mới nhất. Bạn có thể thực hiện điều này bằng cách chạy lệnh sau:
Mã:
sudo apt-get update -y
sudo apt-get upgrade -y
Sau khi hệ thống của bạn được cập nhật, hãy khởi động lại hệ thống để áp dụng các thay đổi.

Cài đặt Java​

SonarQube được viết bằng ngôn ngữ Java, vì vậy bạn sẽ cần cài đặt Java vào hệ thống của mình. Trước tiên, hãy thêm kho lưu trữ Java bằng lệnh sau:
Mã:
sudo add-apt-repository ppa:webupd8team/java
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt Java bằng lệnh sau:
Mã:
sudo apt-get update -y
sudo apt-get install oracle-java8-installer -y
Sau khi Java được cài đặt, hãy kiểm tra phiên bản Java bằng lệnh sau:
Mã:
java -version
Đầu ra:
Mã:
openjdk phiên bản "10.0.2" 2018-07-17Môi trường chạy thời gian OpenJDK (bản dựng 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, chế độ hỗn hợp)

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

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 18.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.

Bạn có thể thực hiện việc này bằng lệnh sau:
Mã:
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 -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
Tiếp theo, cập nhật kho lưu trữ và cài đặt PostgreSQL bằng lệnh sau:
Mã:
sudo apt-get update -y
sudo apt-get install postgresql postgresql-contrib
Sau khi cài đặt hoàn tất, hãy kiểm tra trạng thái của PostgreSQL bằng lệnh sau:
Mã:
sudo systemctl status postgresql
Đầu ra:
Mã:
? postgresql.service - PostgreSQL RDBMS Đã tải: đã tải (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Đang hoạt động: đang hoạt động (đã thoát) kể từ CN 2018-12-02 08:49:29 UTC; 4 giờ 30 phút trước Tiến trình: 1295 ExecStart=/bin/true (code=exited, status=0/SUCCESS) PID chính: 1295 (code=exited, status=0/SUCCESS)02/12 08:49:29 ubuntu1804 systemd[1]: Đang khởi động PostgreSQL RDBMS...02/12 08:49:29 ubuntu1804 systemd[1]: Đã khởi động PostgreSQL RDBMS.
Tiếp theo, chuyển sang người dùng postgres bằng lệnh sau:
Mã:
su - postgres
Tiếp theo, tạo người dùng sonar bằng lệnh sau:
Mã:
createuser sonar
Tiếp theo, chuyển sang shell PostgreSQL bằng lệnh sau:
Mã:
psql
Tiếp theo, đặt mật khẩu cho người dùng sonar và tạo cơ sở dữ liệu sonar với lệnh sau:
Mã:
ALTER USER sonar WITH ENCRYPTED password 'password';
CREATE DATABASE sonar OWNER sonar;
Tiếp theo, thoát khỏi shell PostgreSQL:
Mã:
\q

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

Trước tiên, tạo người dùng cho SonarQube bằng lệnh sau:
Mã:
sudo adduser sonar
Tiếp theo, tải xuống phiên bản SonarQube mới nhất bằng lệnh sau:
Mã:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.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-6.7.6.zip
Tiếp theo, sao chép thư mục đã giải nén vào /opt bằng lệnh sau:
Mã:
sudo cp -r sonarqube-6.7.6 /opt/sonarqube
Tiếp theo, cấp quyền sở hữu cho người dùng sonar bằng lệnh sau:
Mã:
sudo chown -R sonar:sonar /opt/sonarqube
Tiếp theo, bạn sẽ cần cấu hình SonarQube để chạy như một người dùng sonar. Bạn có thể thực hiện việc này bằng lệnh sau:
Mã:
sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Thực hiện các thay đổi sau:
Mã:
RUN_AS_USER=sonar
Lưu và đóng tệp. Sau đó, mở tệp cấu hình mặc định của SonarQube và sửa đổi thông tin xác thực cơ sở dữ liệu bằng thông tin mà chúng ta đã tạo trước đó:
Mã:
sudo nano /opt/sonarqube/conf/sonar.properties
Thực hiện các thay đổi sau:
Mã:
sonar.jdbc.username=sonarsonar.jdbc.password=passwordsonar.jdbc.url=jdbc:postgresql://localhost/sonarsonar.web.host=127.0.0.1sonar.search.javaOpts=-Xms512m -Xmx512m
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 tệp dịch vụ systemd để quản lý dịch vụ SonarQube. Bạn có thể thực hiện việc này bằng lệnh sau:
Mã:
sudo nano /etc/systemd/system/sonar.service
Thêm các dòng sau:
Mã:
[Unit]Description=SonarQube serviceAfter=syslog.target network.target[Service]Type=forkingExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh startExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stopUser=sonarGroup=sonarRestart=always[Install]WantedBy=multi-user.target
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động dịch vụ SonarQube và cho phép dịch vụ này khởi động khi khởi động bằng lệnh sau:
Mã:
sudo systemctl start sonar
sudo systemctl enable sonar
Bạn có thể kiểm tra trạng thái của dịch vụ SonarQube bằng lệnh sau:
Mã:
sudo systemctl status sonar
Đầu ra:
Mã:
? sonar.service - Dịch vụ SonarQube Đã tải: đã tải (/etc/systemd/system/sonar.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2018-12-02 13:55:34 UTC; 2 phút 52 giây trước Tiến trình: 2339 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS) PID chính: 2396 (wrapper) Nhiệm vụ: 133 (giới hạn: 2323) CGroup: /system.slice/sonar.service ??2396 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=SonarQ ??2399 java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../../lib/jsw/wrapper- ??2445 /usr/lib/jvm/java-8-oracle/jre/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOc ??2545 /usr/lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp - ??2622 /usr/lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -02/12 13:55:33 ubuntu1804 systemd[1]: Đang khởi động SonarQube dịch vụ...02/12 13:55:33 ubuntu1804 sonar.sh[2339]: Đang khởi động SonarQube...02/12 13:55:34 ubuntu1804 sonar.sh[2339]: Đã khởi động SonarQube.02/12 13:55:34 ubuntu1804 systemd[1]: Đã bắt đầu dịch vụ SonarQube.

Cấu hình Apache cho SonarQube​

Theo mặc định, SonarQube lắng nghe trên cổng 9000. Vì vậy, bạn sẽ cần cài đặt và cấu hình Apache làm proxy ngược để truy cập SonarQube bằng cổng 80.

Để thực hiện, hãy cài đặt Apache bằng lệnh sau:
Mã:
sudo apt-get install apache2 -y
Tiếp theo, bật mô-đun mod_proxy bằng lệnh sau:
Mã:
sudo a2enmod proxy
sudo a2enmod proxy_http
Tiếp theo, tạo tệp máy chủ ảo Apache cho SonarQube bằng lệnh sau:
Mã:
sudo nano /etc/apache2/sites-available/sonar.conf
Thêm các dòng sau:
Mã:
 ServerName example.com ServerAdmin [emailprotected] ProxyPreserveHost On ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ TransferLog /var/log/apache2/sonarm_access.log ErrorLog /var/log/apache2/sonar_error.log
Thay example.com bằng tên miền của riêng bạn. Lưu và đóng tệp. Sau đó, bật tệp máy chủ ảo SonarQube bằng lệnh sau:
Mã:
sudo a2ensite sonar
Cuối cùng, khởi động lại dịch vụ Apache và SonarQube để áp dụng tất cả các thay đổi bằng lệnh sau:
Mã:
sudo systemctl restart apache2
sudo systemctl restart sonar
Theo mặc định, SonarQube lưu trữ nhật ký của họ trên thư mục /opt/sonarqube/logs. Bạn có thể kiểm tra nhật ký SonarQube bằng lệnh sau:
Mã:
sudo tail -f /opt/sonarqube/logs/sonar.log
Đầu ra:
Mã:
Khởi chạy JVM...Wrapper (Phiên bản 3.2.3) http://wrapper.tanukisoftware.org Bản quyền 1999-2006 Tanuki Software, Inc. Bảo lưu mọi quyền.2018.12.02 13:55:43 INFO app[][o.s.a.AppFileSystem] Đang dọn dẹp hoặc tạo thư mục tạm thời /opt/sonarqube/temp2018.12.02 13:55:44 INFO app[][o.s.a.es.EsSettings] Elasticsearch đang lắng nghe trên /127.0.0.1:90012018.12.02 13:55:45 INFO app[][o.s.a.p.ProcessLauncherImpl] Khởi chạy quy trình[[key='es', ipcIndex=1, logFilenamePrefix=es]] từ [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch -Epath.conf=/opt/sonarqube/temp/conf/es2018.12.02 13:55:45 INFO app[][o.s.a.SchedulerImpl] Đang chờ Elasticsearch hoạt động2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] không có mô-đun nào được tải2018.12.02 13:55:48 INFO app[][o.e.p.PluginsService] đã tải plugin [org.elasticsearch.transport.Netty4Plugin]2018.12.02 13:56:34 INFO app[][o.s.a.SchedulerImpl] Process[es] đã hoạt động2018.12.02 13:56:34 INFO app[][o.s.a.P.ProcessLauncherImpl] Khởi chạy process[[key='web', ipcIndex=2, logFilenamePrefix=web]] từ [/opt/sonarqube]: /usr/lib/jvm/java-8-oracle/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.2.1.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process420500314195865484properties
Bạn cũng có thể kiểm tra nhật ký web SonarQube bằng lệnh sau:
Mã:
sudo tail -f /opt/sonarqube/logs/web.log
Đầu ra:
Mã:
2018.12.02 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarJava / 4.15.0.12310 / 572454b93016ec73a53fe0e07b2ffdc356d21ba92018.12.02 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarPHP / 2.11.0.2485 / 741861a29e5f9a26c6c99c06268facb6c4f4a8822018.12.02 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarPython / 1.8.0.1496 / 3fe3bc4d0273a5721ea2fb368dc45b1bb82fede32018.12.02 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarQube :: Plugin :: SCM :: Git / 1.3.0.869 / 4da53e3f9e55f4f2e5796625cb0c5768ed1520792018.12.02 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarQube :: Plugin :: SCM :: SVN / 1.6.0.860 / 2111fdbd1dddda4ad6d4ed6486fd0b18c1010d3b02/02/2018 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarTS / 1.1.0.1079 / 042c9e65239a47d92d305f9767f730b3cc1e5ed302/02/2018 13:57:03 THÔNG TIN web[][o.s.s.p.ServerPluginRepository] Triển khai plugin SonarXML / 1.4.3.1027 / 39588245cecf538bb27be4e496ff303b0143d20b2018.12.02 13:57:07 THÔNG TIN web[][o.s.s.p.d.m.c.PostgresCharsetHandler] Xác minh rằng bộ ký tự cơ sở dữ liệu hỗ trợ UTF82018.12.02 13:57:09 THÔNG TIN web[][o.s.s.p.w.MasterServletFilter] Đang khởi tạo bộ lọc servlet org.sonar.server.ws.WebServiceFilter@792e6771 [pattern=UrlPattern{inclusions=[/api/system/migrate_db/*, ...], exclusions=[/api/properties*, ...]}]2018.12.02 13:57:09 THÔNG TIN web[][o.s.s.a.EmbeddedTomcat] Kết nối HTTP được bật trên cổng 90002018.12.02 13:57:16 THÔNG TIN web[][o.s.s.p.UpdateCenterClient] Trung tâm cập nhật: https://update.sonarsource.org/update-center.properties (không có proxy)

Truy cập SonarQube​

SonarQube hiện đã được cài đặt và định cấu hình. Đã đến lúc truy cập thông qua trình duyệt web.

Mở trình duyệt web của bạn và nhập URL http://example.com. Bạn sẽ được chuyển hướng đến trang sau:



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



Cung cấp tên người dùng và mật khẩu tài khoản quản trị viên mặc định là admin / admin và nhấp vào nút Đăng nhập vào. Bạn sẽ thấy bảng điều khiển mặc định của SonarQube ở trang sau:



Xin chúc mừng! bạn đã cài đặt thành công SonarQube trên máy chủ Ubuntu 18.04. Bây giờ bạn có thể dễ dàng thực hiện đánh giá tự động và kiểm tra tình trạng của ứng dụng bằng SonarQube.
 
Back
Bên trên