Dalam tutorial ini, Anda akan belajar cara menginstal SonarQube di Ubuntu 20.04. SonarQube ® adalah alat tinjauan kode otomatis untuk mendeteksi bug, kerentanan, dan bau kode dalam kode Anda. Itu dapat berintegrasi dengan alur kerja Anda yang ada untuk memungkinkan pemeriksaan kode berkelanjutan di seluruh cabang proyek Anda dan menarik permintaan.
Baca lebih lanjut tentang SonarQube di halaman SonarQube.
Instal SonarQube di Ubuntu 20.04
Prasyarat
Ada sejumlah prasyarat yang diperlukan untuk menginstal dan menjalankan SonarQube di Ubuntu 20.04 seperti yang disediakan di bawah ini;
Persyaratan Perangkat Keras Sistem
- Pastikan Anda menjalankan sistem 64-bit karena SonarQube tidak mendukung arsitektur sistem 32-bit.
uname -m
x86_64
- Setidaknya 2GB RAM (16GB + RAM untuk useran perusahaan) dan 2 inti vCPU (8+ inti vCPU untuk useran perusahaan) untuk useran skala kecil
- Disk dengan kinerja baca & tulis yang sangat baik.
- Ruang disk yang cukup tergantung pada seberapa banyak kode yang Anda analisis dengan SonarQube.
Instal Java 11 di Ubuntu 20.04
Java 11 dapat bekerja untuk server dan pemindai SonarQube. Oleh karena itu, jalankan perintah di bawah ini untuk menginstal Java 11 di Ubuntu 20.04 (Anda dapat memilih untuk menginstal JRE atau OpenJDK;
Perhatikan bahwa OpenJDK 11 atau JRE 11 adalah versi default pada repo utama Ubuntu 20.04 default;
apt update
Jika Anda ingin menggunakan JRE, jalankan perintah di bawah ini untuk menginstalnya di Ubuntu 20.04;
apt install default-jre
Jika Anda ingin menggunakan OpenJDK, jalankan perintah di bawah ini;
apt install default-jdk
Instal dan Siapkan Basis Data untuk SonarQube
SonarQube mendukung PostgreSQL (versi 9.3-9.6, 10-12), Oracle (ekstensi XE, 11G, 12C, 18C 19C) atau MSSQL untuk sistem Windows.
Dalam tutorial ini, kita akan menginstal dan mengatur SonarQube di Ubuntu 20.04.
Instal PostgreSQL 12 di Ubuntu 20.04
Instal PostgreSQL 12 di Ubuntu 20.04 dengan menjalankan perintah di bawah ini;
apt install postgresql postgresql-contrib
Login sebagai superuser PostgreSQL dan Buat SonarQube PostgreSQL Database dan Database User
sudo -Hiu postgres
createuser sonaradmin
createdb -O sonaradmin sonarqubedb
psql
ALTER USER sonaradmin WITH ENCRYPTED password 'changeme';
q
exit
Aktifkan Filter Komputasi Aman
seccomp filter, diperlukan oleh Elasticsearch, biasanya diaktifkan secara default di Ubuntu 20.04. Untuk memeriksa apakah seccomp tersedia di kernel Anda dengan:
grep SECCOMP /boot/config-$(uname -r)
Jika Anda melihat output seperti itu, maka seccomp filter diaktifkan;
CONFIG_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y
Font Laporan Eksekutif
Fontconfig dan font FreeType diperlukan untuk menghasilkan laporan eksekutif SonarQube. Instal mereka sebagai berikut;
apt install fontconfig-config libfreetype6
Instal dan Konfigurasi SonarQube di Ubuntu 20.04
Setelah semua prasyarat terpenuhi, lanjutkan untuk menginstal SonarQube di Ubuntu 20.04.
Download file Arsip SonarQube
Ada berbagai edisi SonarQube. Dalam pengaturan ini, kami akan menginstal versi komunitas. Dengan demikian, navigasikan ke halaman downloadan SonarQube dan ambil file zip SonarQube.
Anda juga bisa mendapatkan tautan downloadan dari halaman binari SonarQube dan menariknya menggunakan perintah wget atau curl
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.7.0.41497.zip
Instal SonarQube di Ubuntu 20.04
Ekstrak SonarQube ke beberapa direktori, misalnya /optdirektori.
apt install zip
unzip sonarqube-8.7.0.41497.zip -d /opt/
Ganti nama direktori SonarQube untuk menghapus nomor versi;
mv /opt/sonarqube{-8.7.0.41497,}
Buat Akun Pengguna Sistem SonarQube
SonarQube tidak boleh dijalankan sebagai root. Dengan demikian, Anda dapat membuat akun non admin untuk menjalankan SonarQube sebagai berikut;
useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube
Atur kepemilikan /opt/sonarqubeke user sonar yang dibuat di atas.
chown -R sonarqube: /opt/sonarqube
Konfigurasi SonarQube
Tetapkan detail koneksi database sesuai dengan pengaturan PostgreSQL Anda di atas.
vim /opt/sonarqube/conf/sonar.properties
# DATABASE... # User credentials.... sonar.jdbc.username=sonaradmin sonar.jdbc.password=changeme... #----- PostgreSQL 9.3 or greater # By default the schema named "public" is used. It can be overridden with the parameter "currentSchema". #sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema sonar.jdbc.url=jdbc:postgresql://localhost/sonarqubedb
Simpan dan keluar dari file.
Perubahan di atas sudah cukup untuk menjalankan SonarQube di Ubuntu 20.04 dalam pengaturan dasarnya.
Menjalankan SonarQube di Ubuntu 20.04
Sebanyak Anda dapat memulai SonarQube dalam mode mandiri menggunakan /opt/sonarqube/bin/linux-x86-64/sonar.shskrip dengan meneruskan startopsi seperti di /opt/sonarqube/bin/linux-x86-64/sonar.sh start, lebih baik menggunakan unit service systemd.
Buat file Unit Layanan SonarQube Systemd;
cat > /etc/systemd/system/sonarqube.service << 'EOL' [Unit] Description=SonarQube service After=syslog.target network.target [Service] Type=simple User=sonarqube Group=sonarqube PermissionsStartOnly=true ExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.7.0.41497.jar StandardOutput=syslog LimitNOFILE=131072 LimitNPROC=8192 TimeoutStartSec=5 Restart=always SuccessExitStatus=143 [Install] WantedBy=multi-user.target EOL
Pastikan untuk mengganti jalur, /opt/sonarqube/lib/sonar-application-8.7.0.41497.jar, sesuai.
Reload konfigurasi systemd;
systemctl daemon-reload
Tetapkan jumlah maksimum peta memori untuk elasticsearch;
echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
sysctl -p
Mulai dan aktifkan service SonarQube di Ubuntu 20.04;
systemctl enable --now sonarqube
Periksa statusnya;
systemctl status sonarqube.service
● sonarqube.service - SonarQube service Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-02-16 19:36:45 UTC; 2min 23s ago Main PID: 34811 (java) Tasks: 118 (limit: 2282) Memory: 1.4G CGroup: /system.slice/sonarqube.service ├─34811 java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.7.0.41497.jar ├─34834 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io> ├─34921 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt /sonarqube/temp -XX:-OmitStackTraceInF> └─34980 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -XX:-OmitStackTraceInF> Feb 16 19:36:47 ubuntu20 nohup[34811]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future rel> Feb 16 19:37:27 ubuntu20 nohup[34811]: 2021.02.16 19:37:27 INFO app[][o.s.a.SchedulerImpl] Process[es] is up Feb 16 19:37:27 ubuntu20 nohup[34811]: 2021.02.16 19:37:27 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/opt> Feb 16 19:37:47 ubuntu20 nohup[34811]: 2021.02.16 19:37:47 WARN app[][startup] ###########################################################################################> Feb 16 19:37:47 ubuntu20 nohup[34811]: 2021.02.16 19:37:47 WARN app[][startup] Default Administrator credentials are still being used. Make sure to change the password or> Feb 16 19:37:47 ubuntu20 nohup[34811]: 2021.02.16 19:37:47 WARN app[][startup] ###########################################################################################> Feb 16 19:37:48 ubuntu20 nohup[34811]: 2021.02.16 19:37:48 INFO app[][o.s.a.SchedulerImpl] Process[web] is up Feb 16 19:37:48 ubuntu20 nohup[34811]: 2021.02.16 19:37:48 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/opt/s> Feb 16 19:37:55 ubuntu20 nohup[34811]: 2021.02.16 19:37:55 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up Feb 16 19:37:55 ubuntu20 nohup[34811]: 2021.02.16 19:37:55 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
Anda dapat menemukan semua log di bawah, /opt/sonarqube/logsdirektori.
ls /opt/sonarqube/logs
access.log ce.log es.log README.txt sonar.log web.log
Mengakses Interface Web SonarQube
Untuk mengakses interface Web SonarQube, Anda perlu menginstal dan menyiapkan server web untuk mem-proksi permintaan ke SonarQube yang berjalan secara lokal.
Anda dapat menggunakan server web Apache atau Nginx. Kami menggunakan nanti dalam panduan ini.
apt install nginx -y
Buat konfigurasi situs SonarQube Nginx dengan pengaturan proxy.
cat > /etc/nginx/sites-available/sonarqube << 'EOL' server{ listen 80; server_name sonarqube.kifarunix-demo.com; access_log /var/log/nginx/sonarqube.access.log; error_log /var/log/nginx/sonarqube.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; } } EOL
Periksa error sintaks Nginx;
nginx -t
Jika Anda mendapatkan hasil seperti itu, Anda siap melakukannya;
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Aktifkan situs SonarQube Nginx;
ln -s /etc/nginx/sites-available/sonarqube /etc/nginx/sites-enabled/
Restart Nginx;
systemctl restart nginx
Buka port 80/tcp pada firewall atau port 443/tcp tergantung pada pengaturan Anda;
ufw allow "Nginx Full"
Akses SonarQube menggunakan alamat http://sonarqube-server-host-IP-or-hostname.
Anda akan diminta untuk memasukkan detail login.
Kredensial otentikasi default adalah Username: admin Password: admin
Saat diminta, setel ulang password dan lanjutkan ke interface web SonarQube.
Dan di sana Anda pergi. Anda telah mempelajari cara menginstal SonarQube di Ubuntu 20.04.
Referensi
Menginstal SonarQube
Bacaan lebih lanjut
Dokumentasi SonarQube
Tutorial lainnya
Instal Nexus Repository Manager di Ubuntu 20.04
Instal dan atur GVM 20.08 di Debian 10
Instal Signal Messenger di Ubuntu 20.04
Instal NoMachine di Ubuntu 20.04
Instal dan Setup GVM 20.08 di Ubuntu 20.04