GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal SonarQube dengan Lets Encrypt di Ubuntu 20.04

Adalah impian setiap pengembang untuk memiliki kode yang bersih dan bebas masalah yang dapat dengan mudah digunakan ke dalam lingkungan pementasan dan produksi. Salah satu alat yang dapat membantu Anda mencapai ini adalah dalam pipa CI/CD Anda adalah SonarQube. SonarQube adalah alat lintas platform dan berbasis web yang digunakan untuk pemeriksaan kode sumber secara berkelanjutan. Itu ditulis dalam bahasa Jawa. SonarQube memungkinkan Anda untuk menulis kode yang lebih bersih dan aman dengan memeriksa kode dan mendeteksi bug dan inkonsistensi lainnya.

SonarQube dapat diintegrasikan ke dalam platform seperti GitHub, Gitlab, BitBucket, dan Azure DevOps untuk menyebutkan beberapa platform. Muncul dalam berbagai edisi termasuk edisi Komunitas, Pengembang, Perusahaan, dan Pusat Data.

Dalam tutorial ini, kita mempelajari cara menginstal SonarQube di Ubuntu 20.04 . Kami akan menginstal edisi Komunitas karena gratis untuk mengunduh dan mengaktifkan Sertifikat SSL (https) dengan Ayo Enkripsi dengan menyetel Nginx sebagai proxy terbalik.

Prasyarat

Sebelum memulai, pastikan Anda memenuhi persyaratan berikut:

  1. Ubuntu 20.04 LTS dengan pengguna sudo yang dikonfigurasi.
  2. Pastikan sistem Anda memiliki minimal 4 GB RAM dan 2vCPU core

Anda perlu menginstal beberapa alat

$ sudo apt update
$ sudo apt install net-tools unzip vim curl

Juga, Anda perlu meningkatkan kernel memori virtual

$ sudo sysctl -w vm.max_map_count=262144

dengan jumlah maksimum file yang terbuka

$ sudo sysctl -w fs.file-max=65536

dan batasan sumber daya

$ ulimit -n 65536
$ ulimit -u 4096

Anda dapat membuat perubahan tetap ada dengan memodifikasi parameter sistem di /etc/sysctl.conf file konfigurasi

$ sudo vim /etc/sysctl.conf

Tambahkan baris berikut.

vm.max_map_count=262144
fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

Simpan dan keluar. Setelah itu, buka limits.conf berkas

$ sudo vim /etc/security/limits.conf

Di bagian paling bawah, tambahkan baris berikut

sonarqube - nofile 65536
sonarqube - nproc 4096

Simpan dan keluar. Agar perubahan diterapkan, reboot server Anda.

Langkah 1:Instal OpenJDK

Karena ditulis dalam Java, SonarQube bergantung pada Java untuk berfungsi. Kami akan menginstal OpenJDK 11 yang menyediakan java.

$ sudo apt install openjdk-11-jdk

Setelah terinstal, Anda dapat memverifikasi versi Java.

$ java -version

Langkah 2:Instal database PostgreSQL

Mulai 2016, SonarQube menghentikan dukungan untuk MySQL dan sekarang hanya mendukung PostgreSQL. Karena itu, kita perlu menginstal database PostgreSQL.

Untuk memulai, unduh dan tambahkan kunci GPG PostgreSQL.

$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Setelah itu, tambahkan repositori PostgreSQL.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

Kemudian perbarui indeks paket untuk menyinkronkan repositori baru.

$ sudo apt update

Setelah Anda selesai memperbarui daftar paket, instal database PostgreSQL dan dependensinya.

$ sudo apt install postgresql postgresql-contrib

Secara default, layanan PostgreSQL dimulai setelah penginstalan, jika tidak dijalankan, jalankan perintah berikut.

$ sudo systemctl start postgresql

Hanya untuk mengonfirmasi bahwa semuanya berjalan seperti yang diharapkan, verifikasi status berjalannya.

$ sudo systemctl status postgresql

Anda juga dapat mengonfirmasi port yang sedang didengarkan:

$ sudo netstat -pnltu | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      7768/postgres       
tcp6       0      0 ::1:5432                :::*                    LISTEN      7768/postgres    

Aktifkan PostgreSQL untuk memulai secara otomatis saat booting:

$ sudo systemctl enable postgresql

Sejauh ini, PostgreSQL kami aktif dan berjalan tanpa hambatan.

Langkah 3:Konfigurasi PostgreSQL

Selanjutnya, kita akan mengatur kata sandi untuk pengguna Postgres yang biasanya datang secara default ketika PostgreSQL diinstal. Untuk melakukannya, jalankan perintah:

$ sudo passwd postgres

Ketik kata sandi dan konfirmasikan. Selanjutnya, beralih ke pengguna Postgres.

$ su - postgres

Selanjutnya, lanjutkan dan buat pengguna database baru.

$ createuser sonar

Setelah selesai, alihkan ke prompt PostgreSQL menggunakan perintah:

$ psql

Dengan akses ke shell PostgreSQL, buat kata sandi untuk pengguna yang baru saja Anda buat.

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

Selanjutnya, buat database SonarQube dengan pengguna yang Anda buat sebagai pemiliknya

CREATE DATABASE sonarqube OWNER sonar;

Kemudian, tetapkan atau berikan semua hak istimewa ke penggunaan basis data sedemikian rupa sehingga mereka memiliki semua hak istimewa untuk memodifikasi basis data.

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Sekarang keluar dari database.

\q

Langkah 4:Unduh dan konfigurasikan SonarQube

Selanjutnya, kita akan mengunduh file zip biner SonarQube terbaru. Saat ini rilis Community Edition terbaru yang merupakan rilisan Long Term Service ( LTS ) adalah SonarQube versi 9.0.1. Anda dapat menuju ke halaman unduhan SonarQube untuk unduhan terbaru.

Untuk mengunduh file zip, jalankan perintah:

$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.0.1.46107.zip 

Selanjutnya, unzip file zip.

$ unzip sonarqube-9.0.1.46107.zip

Dan pindahkan ke jalur /opt/.

$ sudo mv sonarqube-9.0.1.46107 /opt/sonarqube

Langkah 5:Buat pengguna dan grup baru

Selanjutnya, kami akan membuat pengguna dan grup baru yang akan menjalankan layanan SonarQube. Jadi, buat grup.

$ sudo groupadd sonar

Selanjutnya, buat pengguna dengan direktori home yang disetel ke /opt/sonarqube saat Anda menambahkan pengguna ke grup yang baru dibuat.

$ sudo useradd -c "SonarQube - User" -d /opt/sonarqube/ -g sonar sonar

Kemudian atur kepemilikan ke direktori /opt/sonarqube.

$ sudo chown -R sonar:sonar /opt/sonarqube/

Langkah 6:Konfigurasi SonarQube

Sekarang mari kita mengkonfigurasi SonarQube. Buka file konfigurasi SonarQube.

$ sudo vim  /opt/sonarqube/conf/sonar.properties

Cari dan batalkan komentar pada baris berikut

sonar.jdbc.username=
sonar.jdbc.password=

Ini mewakili pengguna dan kata sandi basis data SonarQube yang kami buat di server basis data PostgreSQL. Oleh karena itu, isi nilainya sesuai dengan itu.

sonar.jdbc.username=sonar_user
sonar.jdbc.password=strong_password

Selanjutnya, ubah baris-baris ini agar terlihat seperti yang disediakan

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Setelah itu, ubah baris berikut agar terlihat seperti yang terlihat.

sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server
sonar.log.level=INFO
sonar.path.logs=logs

Selanjutnya, ubah pengguna yang akan menjalankan layanan SonarQube dengan mengedit file yang ditampilkan.

$ sudo vim /opt/sonarqube/bin/linux-x86-64/sonar.sh

Gulir ke bawah dan pastikan baris di bawah ini muncul seperti yang ditunjukkan.

RUN_AS_USER=sonar

Langkah 7:Buat file layanan Systemd untuk SonarQube

Saat ini, sistem kami tidak memiliki cara untuk memulai layanan SonarQube. Oleh karena itu, kita perlu membuat layanan systemd. Untuk melakukannya, jalankan perintah:

$ sudo vim  /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
User=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

Simpan perubahan dan keluar dari file.

Aktifkan layanan SonarQube untuk memulai saat boot

$ sudo systemctl enable sonarqube

Dan mulai layanan SonarQube.

$ sudo systemctl start sonarqube

Untuk memastikan bahwa layanan SonarQube berjalan, jalankan perintah:

$ sudo systemctl status sonarqube

Juga, pastikan port 9000 dibuka

$ sudo ufw allow '9000'
Rules updated
Rules updated (v6)

Periksa apakah layanan mendengarkan pada port 9000

$ sudo netstat -pnltu | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      65140/java  

Sekarang Anda dapat mencoba memeriksa apakah Anda dapat mengakses halaman login dengan memasukkan IP publik server Anda dan nomor port dari browser Anda yaitu http://<server-ip>:9000/ . Nama pengguna administrator default adalah 'admin' dan kata sandinya adalah 'admin'.

Sonarqube akan meminta Anda untuk memperbarui kata sandi untuk mengubah kata sandi default.

Langkah 8:Instal dan Konfigurasi Nginx dengan SSL (opsional)

Untuk mengakses Sonarqube Anda dengan nama domain berkemampuan SSL, Anda perlu menginstal proxy terbalik seperti Nginx. Server web akan mem-proxy koneksi ke SonarQube sehingga pengembang dapat mengaksesnya dari nama domain yang aman.

Menginstal Nginx sederhana dan mudah dan dapat dilakukan dalam satu perintah.

$ sudo apt install nginx

Setelah instalasi, aktifkan server web Nginx untuk memulai saat boot.

$ sudo systemctl enable nginx

Dan mulai layanan

$ sudo systemctl start nginx

Agar server web mengetahui SonarQube, kita akan membuat file konfigurasi yang ditampilkan.

$ sudo vim  /etc/nginx/sites-available/sonarqube.conf

Kemudian tempel konten yang disediakan.

server {

listen 80;
server_name example.com or SERVER-IP;
access_log /var/log/nginx/sonar.access.log;
error_log /var/log/nginx/sonar.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;
}
}

Simpan dan keluar. Kemudian aktifkan situs Sonarqube:

$ sudo ln -s /etc/nginx/sites-available/sonarqube.conf  /etc/nginx/sites-enabled/sonarqube.conf

Periksa apakah konfigurasi sudah benar

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Kemudian restart server web Nginx agar perubahan diterapkan.

$ sudo systemctl restart nginx

Sekarang kita perlu mengkonfigurasi firewall UFW untuk mengizinkan nginx. Untuk melakukannya, jalankan perintah

$ sudo ufw allow 'Nginx Full'

Kemudian muat ulang firewall untuk melakukan perubahan.

$ sudo ufw --reload

Anda sekarang dapat mengakses SonarQube Anda dengan melalui nama domainnya

Di sini, kita akan menggunakan sertifikat ayo mengenkripsi gratis. Untuk mengonfigurasinya, kita perlu menjalankan cerbot untuk Nginx:

$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Enter email address (used for urgent renewal and security notices) (Enter 'c' to
 cancel): [email protected]                                                    
 
 Please read the Terms of Service at
 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
 agree in order to register with the ACME server at
 https://acme-v02.api.letsencrypt.org/directory
 
 (A)gree/(C)ancel: A
 
 Would you be willing to share your email address with the Electronic Frontier
 Foundation, a founding partner of the Let's Encrypt project and the non-profit
 organization that develops Certbot? We'd like to send you email about our work
 encrypting the web, EFF news, campaigns, and ways to support digital freedom.
 
 (Y)es/(N)o: N
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Which names would you like to activate HTTPS for?
 
 1: websitefortesting.com
 
 Select the appropriate numbers separated by commas and/or spaces, or leave input
 blank to select all options shown (Enter 'c' to cancel): 1
 Obtaining a new certificate
 Performing the following challenges:
 http-01 challenge for websitefortesting.com
 Waiting for verification…
 Cleaning up challenges
 Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/sonarqube.conf
 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
 Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/sonarqube.conf
 
 Congratulations! You have successfully enabled https://websitefortesting.com
 You should test your configuration at:
 https://www.ssllabs.com/ssltest/analyze.html?d=websitefortesting.com
 
 IMPORTANT NOTES:
 Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/websitefortesting.com/fullchain.pem
 Your key file has been saved at:
 /etc/letsencrypt/live/websitefortesting.com/privkey.pem
 Your cert will expire on 2021-11-27. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot again
 with the "certonly" option. To non-interactively renew all of
 your certificates, run "certbot renew"
 If you like Certbot, please consider supporting our work by:
 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le 

Secara default, mari mengenkripsi akan menambahkan beberapa baris di file blok server Nginx.

Anda harus memiliki sesuatu seperti ini

server {
         server_name websitefortesting.com;
         add_header Strict-Transport-Security max-age=2592000;
         #rewrite ^ https://$server_name$request_uri? permanent;
         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_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;     
           } 
          listen 443 ssl; # managed by Certbot 
          ssl_certificate /etc/letsencrypt/live/websitefortesting.com/fullchain.pem; # managed by Certbot 
           ssl_certificate_key /etc/letsencrypt/live/websitefortesting.com/privkey.pem; # managed by Certbot 
          include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 
          ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
 }
 server {
     if ($host = websitefortesting.com) {
         return 301 https://$host$request_uri;
     } # managed by Certbot
     
            listen 80;     
            server_name websitefortesting.com; return 404; # managed by Certbot

 }

Langkah 10:Akses SonarQube dengan HTTPS

Sekarang Anda dapat mengakses SonarQube secara aman dengan URL HTTPS yang dikonfigurasi dengan let's encrypt.

https://domain-name

Setelah login, Anda akan melihat halaman arahan yang ditampilkan.

Kesimpulan

Dalam tutorial ini, kita belajar cara menginstal SonarQube di Ubuntu 20.04. Kami telah mengaktifkan Sonarqube dengan SSL menggunakan sertifikat Let's Encrypt menggunakan Nginx sebagai proxy terbalik.


Ubuntu
  1. Cara Menginstal Server FTP Di Ubuntu dengan vsftpd

  2. Cara Mengamankan Nginx dengan Lets Encrypt Di Ubuntu 20.04 / 18.04

  3. Cara Menginstal Let's Encrypt di Ubuntu 20.04 dengan Apache

  1. Cara Menginstal Joomla dengan Apache di Ubuntu 18.04

  2. Cara Menginstal Nextcloud dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  3. Cara Instal Joomla dengan Apache2 dan Lets Encrypt di Ubuntu 20.04

  1. Cara menginstal Webmin dan mengamankannya dengan Lets Encrypt SSL di Ubuntu 20.04 LTS

  2. Cara menginstal Forum NodeBB dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  3. Cara Menginstal CMS TYPO3 dengan Lets Encrypt SSL di Ubuntu 20.04