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).
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.
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt Java bằng lệnh sau:
Sau khi Java được cài đặt, hãy kiểm tra phiên bản Java bằng lệnh sau:
Đầu ra:
Bạn có thể thực hiện việc này bằng lệnh sau:
Tiếp theo, cập nhật kho lưu trữ và cài đặt PostgreSQL bằng lệnh sau:
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:
Đầu ra:
Tiếp theo, chuyển sang người dùng postgres bằng lệnh sau:
Tiếp theo, tạo người dùng sonar bằng lệnh sau:
Tiếp theo, chuyển sang shell PostgreSQL bằng lệnh sau:
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:
Tiếp theo, thoát khỏi shell PostgreSQL:
Tiếp theo, tải xuống phiên bản SonarQube mới nhất bằng lệnh sau:
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, sao chép thư mục đã giải nén vào /opt bằng lệnh sau:
Tiếp theo, cấp quyền sở hữu cho người dùng sonar bằng lệnh sau:
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:
Thực hiện các thay đổi sau:
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 đó:
Thực hiện các thay đổi 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 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:
Bạn có thể kiểm tra trạng thái của dịch vụ SonarQube bằng lệnh sau:
Đầu ra:
Để thực hiện, hãy cài đặt Apache bằng lệnh sau:
Tiếp theo, bật mô-đun mod_proxy bằng lệnh sau:
Tiếp theo, tạo tệp máy chủ ảo Apache cho SonarQube bằng lệnh sau:
Thêm các dòng sau:
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:
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:
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:
Đầu ra:
Bạn cũng có thể kiểm tra nhật ký web SonarQube bằng lệnh sau:
Đầu ra:
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.
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
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
Mã:
sudo apt-get update -y
sudo apt-get install oracle-java8-installer -y
Mã:
java -version
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 -
Mã:
sudo apt-get update -y
sudo apt-get install postgresql postgresql-contrib
Mã:
sudo systemctl status postgresql
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.
Mã:
su - postgres
Mã:
createuser sonar
Mã:
psql
Mã:
ALTER USER sonar WITH ENCRYPTED password 'password';
CREATE DATABASE sonar OWNER sonar;
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
Mã:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
Mã:
unzip sonarqube-6.7.6.zip
Mã:
sudo cp -r sonarqube-6.7.6 /opt/sonarqube
Mã:
sudo chown -R sonar:sonar /opt/sonarqube
Mã:
sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Mã:
RUN_AS_USER=sonar
Mã:
sudo nano /opt/sonarqube/conf/sonar.properties
Mã:
sonar.jdbc.username=sonarsonar.jdbc.password=passwordsonar.jdbc.url=jdbc:postgresql://localhost/sonarsonar.web.host=127.0.0.1sonar.search.javaOpts=-Xms512m -Xmx512m
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
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
Mã:
sudo systemctl start sonar
sudo systemctl enable sonar
Mã:
sudo systemctl status sonar
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
Mã:
sudo a2enmod proxy
sudo a2enmod proxy_http
Mã:
sudo nano /etc/apache2/sites-available/sonar.conf
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
Mã:
sudo a2ensite sonar
Mã:
sudo systemctl restart apache2
sudo systemctl restart sonar
Mã:
sudo tail -f /opt/sonarqube/logs/sonar.log
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
Mã:
sudo tail -f /opt/sonarqube/logs/web.log
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.