Instalasi SonarQube 7.9.1 di CentOS 7 Server

SonarQube merupakan sebuah aplikasi open-source berbasis JAVA yang berfungsi untuk memeriksa kualitas kodingan yang kalian buat secara berkelanjutan. Jadi untuk kalian yang ingin tahu apakah kodingan kalian memiliki bugs atau vulnerabilities dan di-review secara otomatis, maka aplikasi SonarQube ini adalah jawaban yang tepat. Dan Kerennya lagi, SonarQube ini mendukung pemeriksaan hingga 20 bahasa pemrograman.

Sebelum melakukan instalasinya, ada beberapa hal yang perlu disiapkan, yaitu:

1 – Persyaratan

Software

  • Java (OpenJDK 11)
  • PostgreSQL 10 atau 9.3-9.6

Hardware

  • Server dengan RAM >=2GB
  • System setting untuk Linux (vm.max_map_count >=262144 dan fs.file-max >= 65536)

2 – Lakukan Update System

Caranya dengan menjalankan perintah:

sudo yum update

3 – Menonaktifkan Selinux

Caranya dengan menjalankan perintah:

sudo vi /etc/selinux/config

Ubah “selinux=enforcing” menjadi “selinux=disabled”

selinux=disabled

Untuk menonaktifkan selinux secara tidak permanen, jalankan perintah:

sudo setenforce 0

Untuk melihat status dari selinux, jalankan perintah:

sestatus

4 – Menambahkan System Settings

Seperti yang sudah dijelaskan di atas bahwa nilai vm.max_map_count >=262144 dan fs.file-max >= 65536. Untuk mengubahnya, jalankan perintah:

sudo vi /etc/sysctl.conf

dan tambahkan

vm.max_map_count=262144
fs.file-max=65536
tambahkan kedua baris berikut

5 – Installing JAVA

Karena aplikasi ini berbasis JAVA, maka kalian harus melakukan instalasi openJDK. versi yang kalian butuhkan adalah versi 11. Untuk melakukannya, jalankan perintah:

sudo yum update
sudo yum install java-11-openjdk-devel
Instalasi openJDK11

apabila kalian memiliki lebih dari 1 versi openJDK dan sedang menggunakan versi sebelum versi 11, maka kalian harus mengubahnya dan menjadikan openJDK versi 11 sebagai yang default. Cara melakukannya adalah dengan menjalankan perintah:

sudo update alternatives --config java

Pilih yang versi 11

Memilih versi openJDK kalau memang lebih dari 1

Untuk benar memastikan apakah openJDK11 yang menjadi versi default, jalankan perintah:

java -version
memeriksa versi java

6 – Instalasi PostgreSQL 10

PostgreSQL merupakan database yang akan digunakan oleh aplikasi SonarQube. Sebelum melakukan instalasinya, terlbeih dahulu kalian harus menambahkan repositorinya. Caranya dengan memasukkan perintah berikut:

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Jika sudah ditambahkan, baru instalasi paketnya dengan menjalankan perintah:

yum install postgresql10-server postgresql10-contrib
Instalasi PostgreSQL

Berikutnya adalah inisialisasi database. Caranya dengan menjalankan perintah:

/usr/pgsql-10/bin/postgresql-10-setup initdb
init db

Ubah file pg_hba.conf; Ganti kata “peer” menjadi “trust” dan “ident” menjadi “md5”

vi /var/lib/pgsql/10/data/pg_hba.conf

Sebelum

Sebelum diubah

Sesudah

Sesudah diubah

Untuk membuat service PostgreSQL otomatis berjalan ketika server di-restart, jalankan perintah:

sudo systemctl enable postgresql-10
enable PostgreSQL

Sekarang jalankan service-nya dan periksa statusnya dengan perintah:

systemctl start postgresql-10
systemctl status postgresql-10
start dan memeriksa statusnya

Ganti default password dari Postgres user dengan perintah:

passwd postgres
Mengganti password default dari user postgres

Usai mengganti password, sekarang waktunya login dengan user postgres. Caranya:

su - postgres

Buat user baru untuk SonarQube dengan perintah:

createuser <nama_user>

Sekarang masuk ke dalam PostgreSQL shell. Caranya dengan mengetikkan perintah:

pgsql

Sekarang waktunya untuk membuat password baru untuk user yang baru saja kalian buat (untuk database SonarQube). Jalankan perintah:

alter user <nama_user> with encrypted password <password_barunya>;

Sesudah itu, kalian bisa membuat database baru dengan owner user yang baru saja kalian buat. Caranya:

create database <nama_daatabase> owner <nama_user>;
Create password untuk user dan database

Keluar dari pgsql shell dan kemudian keluar dari user postgres. Ketik:

\q
exit

7 – Unduh dan Konfigur SonarQube

OpenJDK sudah terpasang, PostgreSQL juga sudah berjalan, kini saatnya mengunduh paaket SonarQube. Kali ini paket tersebut akan diunduh di folder /opt. Untuk mengunduhnya, silakan jalankan perintah berikut:

cd /opt

versi yang akan digunakan pada postingan ini aadalah SonarQube versi 7.9.x LTS. Untuk versi lengkapnya bisa dilihat DI SINI

wget -c https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip
Proses unduh paket

Setelah paket terunduh sempurna, waktunya untuk mengekstraknya. Caranya:

unzip sonarqube-7.9.1.zip

Kemudian ubah nama direktorinya dari ‘sonarqube-7.9.1’ menjadi ‘sonarqube’ dengan perintah:

mv sonarqube-7.9.1 sonarqube

Sekarang waktunya untuk memodifikasi file sonar.properties. Ada beberapa perubahan yang perlu dilakukan pada file tersebut. Diantaranya username, password, dan URL dari PostgreSQL. Perubahan yang perlu kalian lakukan adalah:

Temukan baris berikut, uncomment dan modifikasi nilainya

sonar.jdbc.username=<user_postgre>
sonar.jdbc.password=<password_user_postgre>
sonar.jdbc.url=jdbc:postgresql://<ip_postgre>/<db_postgre>
Perubahan properties yang pertama
sonar.web.host=<ip_akses>
sonar.web.port=<default_port>
sonar.web.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
Perubahan konfigurasi yang kedua
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp
perubahan properties yang ketiga

Jika sudah semua, simpan dan kemudian keluar dari editor yang kalian gunakan.

Untuk menjalankan service SonarQube ini, kalian akan membuat user di OS terlebih dahulu. Caranya:

useradd <nama_user>

buat password untuk user tersebut.

passwd <nama_user>
Penambahan user dan pembuatan password untuk user tersebut

Ubah folder permission SonarQube yang ada di direktori /opt menjadi milik user yang baru saja kalian buat. Caranya:

sudo chown -R <user>:<group> /opt/sonarqube

Berikutnya adalah membuat direktori untuk elasticsearch yang sudah kalian tambahkan di sonar.properties tadi. Setelah itu, ubah kepemilikan direktori tersebut menjadi milik user sonar. Caranya:

mkdir -p /var/sonarqube/data
mkdir -p /var/sonarqube/temp
chown -R sonar:sonar /var/sonarqube
perubahan kepemilikan dan pembuatan folder

Tahap berikutnya adalah membuat SonarQube ini menjadi sebuah service. Untuk mewujudkannya, buat sebuah file bernama sonarqube.service pada direktori systemd dan isi file tersebut dengan perintah:

vi /etc/systemd/system/sonarqube.service

Tambahkan baris berikut:

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure

[Install]
WantedBy=multi-user.target
Isian untuk membuat sonar menjadi sebuah service

reload “systemctl” daemon dan aktifkan sonar ketika booting dengan perintah:

systemctl daemon-reload
systemctl enable sonarqube.service
Cara mengaktifkan service SonarQube saat booting

Sekarang jalankan service-nya dan pantau hasilnya dengan perintah:

systemctl start sonarqube.service
systemctl status sonarqube.service
menjalankan service dan memeriksa statusnya

Sekaarang service-nya sudah berjalan.

8 – Modifikasi Aturan Firewall

Secara default, SonarQube akan berjalan di port 9000. Apabila kalian memang menggunakan port tersebut dan ingin mengaksesnya dari luar, maka kalian harus membuat CentOS mengizinkan port tersebut. Caranya:

firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
iptables-save
Mengizinkan port 9000 untuk diakses dari luar

9 – Konfigurasi Reverse Proxy

Untuk ‘mempermudah’ pengaksesan SonarQube ini, lebih baik bila ditambahkan Nginx di depan aplikasi sebagai reverse proxy. Cara melakukan instalasi Nginx menjadi reverse proxy adalah seperti berikut:

Install Nginx. Jalankan service-nya dan aktifkan secara otomatis saat booting dengan perintah:

sudo yum install -y nginx
instalasi nginx
sudo systemctl start nginx
sudo systemctl enaable nginx
start dan enable nginx

Tahap berikutnya, setelah melakukan instalasi nginx, adalah dengan memasang SSL.  Untuk instalasi SSL menggunakan Certbot, silakan lihat caranya DI SINI

Jika sudah memiliki sertifikat untuk dipasang di Nginx, sekarang adalah waktunya untuk melakukan konfigurasinya. Buat sebuah konfigurasi di folder conf.d

sudo vi /etc/nginx/conf.d/sonar.conf

Masukkan konfigurasi berikut sebagai isinya:

upstream <nama_upstream> {
server 127.0.0.1:9000 fail_timeout=0;
}

server {
listen 80;
server_name <nama_server>;
return 301 https://<nama_server>$request_uri;
}


server {
listen 443 ssl;
server_name <nama_server>;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";

add_header Strict-Transport-Security "max-age=31536000";

ssl_certificate <lokasi_public_key>;
ssl_certificate_key <lokasi_private_key>;

gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_vary on;

location / {
proxy_set_header Host $host:$server_port;
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 $scheme;
proxy_redirect http:// https://;
proxy_pass http://<nama_upstream>;
# Required for new HTTP-based CLI
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off; # Required for HTTP-based CLI to work over SSL
add_header 'X-SSH-Endpoint' '<nama_server>:50022' always;
}
}

Jika sudah, simpan dan kemudian keluar dari editor tersebut. Selanjutnya adalah memeriksa syntax-nya apakah sudah benar atau belum dengan menjalankan perintah:

sudo nginx -t
memeriksa syntax

Jika sudah oke, tidak ada masalaha sama sekali, restart service nginx dengan perintah:

sudo systemctl restart nginx

10 – Modifikasi Aturan Firewall

Jika firewall kalian diaktifkan, jalankan perintah berikut untuk mengizinkan traffic https:

firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
konfigur firewall

11 – Akses SonarQube

Semua sudah kalian lakukan. Sekarang waktunya mengakses SonarQube melalui browser. Caranya:

https://<nama_server>
Halaman depan

Tekan login dan kalian akan dihadapkan dengan dengan login page

Halaman Login

*****

Itu tadi cara melakukan instalasi SonarQube di Centos7 Server. Semoga informasinya bisa berguna ya 🙂

Tambahan

Untuk memantau proses dari SonarQube, ada beberapa file log yang bisa kalian periksa:

  • Service Logs
    tail -100f /opt/sonarqube/logs/sonar.log
  • Web Server Logs
    tail -100f /opt/sonarqube/logs/web.log
  • ElasticSearch Logs
    tail -100f /opt/sonarqube/logs/es.log
  • Compute Engine Logs
    tail -100f /opt/sonarqube/logs/ce.log
    

Leave a Reply

Your email address will not be published. Required fields are marked *