Cara menginstal SonarQube dengan Let’s Encrypt di Ubuntu 20.04

Posted on

[ad_1] Cara menginstal SonarQube dengan Let’s Encrypt di Ubuntu 20.04

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

SonarQube dapat diintegrasikan ke dalam platform seperti GitHub, Gitlab, BitBucket, dan Azure DevOps. Versi ini tersedia dalam berbagai versi termasuk versi Komunitas, Pengembang, Perusahaan, dan Pusat Data.

Dalam tutorial ini kita akan belajar bagaimana Instal SonarQube Pada Ubuntu 20.04. Kami menginstal versi komunitas karena gratis untuk diunduh dan diaktifkan sertifikat SSL (https) dengan Mari mengenkripsi Dengan mengatur Nginx sebagai proxy terbalik.

prasyarat

Sebelum memulai, pastikan Anda memenuhi persyaratan berikut:

  1. Ubuntu 20.04 LTS dikonfigurasi dengan pengguna Sudo.
  2. Pastikan sistem Anda memiliki setidaknya 4GB RAM dan 2vCPU core

Anda perlu menginstal beberapa alat

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

Juga, Anda harus meningkatkan inti memori virtual

$ sudo sysctl -w vm.max_map_count=262144

dengan jumlah maksimum file yang terbuka

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

dan keterbatasan sumber daya

$ ulimit -n 65536
$ ulimit -u 4096

Anda dapat membuat perubahan stabil dengan mengubah parameter sistem dalam perubahan /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 mengajukan

$ sudo vim /etc/security/limits.conf

Di bagian bawah, tambahkan baris berikut

sonarqube - nofile 65536
sonarqube - nproc 4096

Simpan dan keluar. Mulai ulang server Anda agar perubahan diterapkan.

Langkah 1: Instal OpenJDK

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

$ sudo apt install openjdk-11-jdk

Setelah instalasi, Anda dapat memverifikasi versi Java.

$ java -version

Langkah 2: Instal database PostgreSQL

Pada 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 direktori paket untuk menyinkronkan repositori baru.

$ sudo apt update

Setelah memperbarui daftar paket, instal database PostgreSQL dan dependensinya.

$ sudo apt install postgresql postgresql-contrib

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

$ sudo systemctl start postgresql

Verifikasi status berjalannya hanya untuk mengonfirmasi bahwa semuanya berjalan seperti yang diharapkan.

$ sudo systemctl status postgresql

Anda juga dapat memverifikasi port yang 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 boot:

$ sudo systemctl enable postgresql

Sejauh ini, PostgreSQL kami aktif dan berjalan tanpa masalah.

Langkah 3: Konfigurasikan PostgreSQL

Selanjutnya, kita ingin mengatur kata sandi untuk pengguna Postgres, yang biasanya disediakan secara default saat Anda menginstal PostgreSQL. Untuk melakukan ini, jalankan perintah:

$ sudo passwd postgres

Ketikkan kata sandi dan konfirmasikan. Kemudian beralih ke pengguna Postgres.

$ su - postgres

Selanjutnya, lanjutkan dan buat pengguna database baru.

$ createuser sonar

Setelah selesai, buka prompt PostgreSQL menggunakan perintah:

$ psql

Buat kata sandi untuk pengguna dengan mengakses shell PostgreSQL.

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

Kemudian buat database SonarQube dengan pengguna yang Anda buat sebagai pemiliknya

CREATE DATABASE sonarqube OWNER sonar;

Kemudian, tetapkan atau berikan semua hak istimewa kepada pengguna basis data sehingga mereka memiliki semua hak istimewa yang diperlukan untuk memodifikasi basis data.

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Sekarang keluar dari database.

\q

Langkah 4: Unduh dan konfigurasikan SonarQube

Selanjutnya, kami ingin mengunduh file zip biner SonarQube terbaru. Saat ini versi terbaru Community Edition yang merupakan versi long-term service (LTS) adalah SonarQube versi 9.0.1. Anda dapat pergi ke halaman unduhan SonarQube untuk unduhan terbaru.

Untuk mengunduh file zip, jalankan perintah berikut:

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

Kemudian ekstrak file terkompresi.

$ 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 kita akan membuat user dan group baru yang akan menjalankan layanan SonarQube. Jadi, buat grup.

$ sudo groupadd sonar

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

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

Kemudian atur kepemilikan ke folder /opt/sonarqube.

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

Langkah 6: Konfigurasi SonarQube

Mari konfigurasikan SonarQube sekarang. Buka file konfigurasi SonarQube.

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

Temukan baris berikut dan batalkan komentarnya

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

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

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

Kemudian, 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 di bawah ini agar terlihat seperti ini.

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 menjalankan layanan SonarQube dengan mengedit file yang ditampilkan.

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

Gulir ke bawah dan pastikan garis 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. Jadi, kita perlu membuat layanan systemd. Untuk melakukan ini, 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 setelah boot

$ sudo systemctl enable sonarqube

dan mulai layanan SonarQube.

$ sudo systemctl start sonarqube

Untuk memastikan layanan SonarQube berjalan, jalankan perintah berikut:

$ sudo systemctl status sonarqube

Pastikan juga port 9000 terbuka

$ 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  

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

Halaman masuk SonarQube

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

Ubah kata sandi SonarQube

Langkah 8: Instal dan konfigurasikan 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 SonarQube sehingga pengembang dapat mengaksesnya dari nama domain yang aman.

Menginstal Nginx sederhana dan mudah dan dapat dilakukan hanya dengan 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

Untuk membuat server web mengetahui SonarQube, kami membuat file konfigurasi seperti yang ditunjukkan.

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

Kemudian paste 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 konfigurasinya 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 melakukan ini, jalankan perintah

$ sudo ufw allow 'Nginx Full'

Kemudian muat ulang firewall agar perubahan diterapkan.

$ sudo ufw --reload

Anda sekarang dapat mengakses SonarQube Anda melalui nama domainnya

Di sini, kami ingin menggunakan gratis Mari kita mengenkripsi sertifikat. Untuk mengkonfigurasi 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): alain@websitefortesting.com                                                    
 
 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 ke file blok server Nginx.

Anda harus memiliki sesuatu yang mirip dengan 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

Anda sekarang dapat mengakses SonarQube dengan aman dengan URL HTTPS yang dikonfigurasi dengan let’s encrypt.

https://domain-name
SonarQube mengaktifkan SSL

Setelah masuk, halaman arahan akan ditampilkan.

Hasil

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.

[ad_2]

Source link

Leave a Reply

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