General Topics Software Security
Azure Linux Ubuntu 18.04 LTS üzerine Sonarqube Latest (8.x.x) Kurulumu
Ön Hazırlık
- Kurulumda Azure Ubuntu LTS 10.84 Linux VM kullanılmıştır.
- Sonarqube Latest (8.7.0.41497) Kullanılmıştır
- Veritabanı Ms SQL 2017 CU Kullanılmıştır (Collation CA ve AS olmak zorunda – SQL_Latin1_General_CP1_CS_AS )
- İşlemler öncesinde mutlaka BT Sistem ve Network ekibinden internet çıkışı için izin verilmesi istenmelidir. Bu izin gerekli dosyaların yüklenmesi ve sistem güncellemesi için gereklidir.
- Gerekli çıkış izinlerinden sonra aşağıdaki komutlar sırası ile çalıştırılmalıdır. Herhangi bir hata olmaması durumunda kurulum aşamalarına devam edilmelidir. Aksi halde kurulum sırasında sorun yaşanabilir.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y curl gnupg2 unzip
sudo apt install default-jre
İlk Olarak Aşağıdaki Komutlar Çalıştırılır.
Sonar Kurulum Adımları
Sonar’ı Çalıştırmak İçin Gerekli Olan Kullanıcı ve Grup Yaratılır
sudo groupadd -r sonarqube
sudo useradd -r -g sonarqube sonarqube
Sonar Kurulum Dosyaları Resmî Sitesinden İndirilir ve Kurulur
Resmi adres harici başka bir adresten hazır veya farklı bir dosya indirilmemelidir.
cd /opt
curl -o sonarqube.zip -fSL https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.7.0.41497.zip
curl -o sonarqube.zip.asc -fSL https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.7.0.41497.zip.asc
gpg –batch –verify sonarqube.zip.asc sonarqube.zip
unzip -q sonarqube.zip
mv sonarqube-8.7.0.41497 sonarqube
İlgili Kurulum Dizinlerine (Recursive -R) ile grup ve kullanıcı ataması yapılır
chown -R sonarqube:sonarqube sonarqube
Aşağıdaki komut (Runser) ile test çalıştırması yapılır.
Sonar “root" olarak çalıştırlmaz!
sudo runuser -u sonarqube /opt/sonarqube/bin/sonar.sh start
Aşağıdaki Komut ile Test Çalıştırılmasının Durumu Kontrol Edilir
Runuser başka bir kullanıcı yetkisi ile çalıştırmayı ifade eder
sudo runuser -u sonarqube /opt/sonarqube/bin/sonar.sh status
Olası Hata Durumunda Bakılabilecek Log Dosyaları
cat /opt/sonarqube/logs/sonar.[tarih_bilgisi].log
cat /opt/sonarqube/logs/web.log
cat /opt/sonarqube/logs/access.log
Nginx Sunucu Kurulum Adımları ve Reverse Proxy Olarak Ayarlanması:
Gerekli Uygulamalar Kurulur ve Default Tanım Silinir
sudo apt-get install nginx
sudo unlink /etc/nginx/sites-enabled/default
HTTPS/TLS SSL için Sertifikalar Sistem Ekibinden Temin Edilir ve Kullanıcı Dizinine Kopyalanır
/home/sonaruser/certs/sonarqube-site.crt
/home/sonaruser/certs/sonarqube-site.key
vi Komutu ile Nginx için Reverse Proxy Ayarları Oluşturulur
cd /etc/nginx/sites-available/
sudo vi reverse-proxy.conf
Dosya İçeriği Aşağıdaki Şekilde Oluşturulur ve “:!qw” Komut Dizisi ile Kayıt Edildikten Sonra Kapatılır.
#nginx reverse proxy settings – mksecurity
server {
listen 80;
server_name sonar.site.com;
return 301 https://sonar.site.com$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name sonar.site.com;
ssl_certificate /home/sonaruser/certs/sonarqube-site.crt;
ssl_certificate_key /home/sonaruser/certs/sonarqube-site.key;
location / {
proxy_pass http://sonar.site.com:9000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Scheme $scheme;
}
}
Performans Hataları İçin Güncelleme (413 Request Entity Too Large)
Yedek almayı unutmayın ( cp nginx.conf ngnix.conf.old )
vi /etc/nginx/nginx.conf
http { } etiketi içerisine,
client_max_body_size 128M;
parametresini ekleyin
Nginx için Sembolik Link Oluşturulur ve Çalıştırma Testleri Yapılır
Artık sistem Reverse Proxy olarak hizmet verecek durumu gelmiştir. Running ve Yeşil (OK)
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
service nginx configtest
sudo /etc/init.d/nginx restart
systemctl status nginx.service
“nginx.service – A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-03-13 05:19:16 UTC; 2 days ago”
Açılışta Otomatik Başlatma (Init.d)
Sistem her yeniden başladığında bu servis ile Sonar’ı da yeniden başlatacaktır.
“vi” komutu ile /etc/init.d/ Klasöründe “sonar” Adında Bir Script Dosyası Oluşturulur
sudo vi /etc/init.d/sonar
Dosya içeriği aşağıdaki gibi oluşturulur ve “:!qw” komut dizisi ile kayıt edilip kapatılır.
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*
/usr/bin/sonar için Sembolik Link Oluşturulur ve Başlatılır (Windows’taki shortcurt benzeri)
sudo ln -s /opt/sonarqube/bin/linux-x86-64/sonar.sh /usr/bin/sonar
sudo chmod 755 /etc/init.d/sonar
sudo update-rc.d sonar defaults
sudo systemctl enable sonar.service
sudo systemctl status sonar.service
Veritabanı Ayarları
Buraya kadar işlemler tamamlandı ise sorunsuz şekilde sonarqube çalışıyor olmalı. Bu aşamadan sonra sonar için farklı bir veritabanı bağlantısı ayarlanabilir.
Bu ayalar sadece MsSQL için gösterilmiştir, farklı ayarlar için sonar.properties dosyasındaki açıklamalara göre değişiklik yapılması gereklidir. Örneğimizde SQL Server 2017 ve veritabanı adı ise “sonarqube”.
Sonar Ayarlar Dosyası Açılır
sudo vi /opt/sonarqube/conf/sonar.properties
Aşağıdaki DB Parameterleri Uygun Değerleri ile Güncellenir
sonar.jdbc.username=[VERI_TABANI_KULLANICISI]
sonar.jdbc.password=[VERI_TABANI_SIFRESI]
sonar.jdbc.url=jdbc:sqlserver://[SQL_SERVER_ADRESI]:1433;databaseName=sonarqube
Performans Değişiklikleri
Performans İyileştirmesi için Aşağıdaki Parametreler Girilir
Dikkat buradaki ayarlar sunucunun kapasitesine göre ayarlanır.
Örnekte sistem 8Gb Ram’e sahiptir.
Hiçbir zaman kapasite üstü değer girilmemelidir.
sonar.web.javaOpts=-Xmx2g -Xms1g -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx6g -Xms4g -XX:+HeapDumpOnOutOfMemoryError
ElasticSearch VM.MAP Count Arttırımı
sudo sysctl -w vm.max_map_count=262144
POST YOUR COMMENTS
You must be logged in to post a comment.