{"id":44347,"date":"2026-08-26T21:09:26","date_gmt":"2026-08-26T18:09:26","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/"},"modified":"2026-08-26T21:09:52","modified_gmt":"2026-08-26T18:09:52","slug":"ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/","title":{"rendered":"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131"},"content":{"rendered":"<h2>Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde kod kalitesi, projelerin ba\u015far\u0131s\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in kritik bir \u00f6neme sahiptir. G\u00fcvenlik a\u00e7\u0131klar\u0131, performans sorunlar\u0131 ve teknik bor\u00e7, zamanla projelerin y\u00f6netilemez hale gelmesine yol a\u00e7abilir. \u0130\u015fte tam bu noktada SonarQube devreye girerek, statik kod analizi (static code analysis) ile kodunuzdaki potansiyel sorunlar\u0131 proaktif bir \u015fekilde tespit etmenizi sa\u011flar. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerine SonarQube&#8217;u ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve kod kalitenizi nas\u0131l zirveye ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz.<\/p>\n<h2>SonarQube Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h2>\n<p>SonarQube, yaz\u0131l\u0131m projelerinizin kod kalitesini ve g\u00fcvenli\u011fini s\u00fcrekli olarak denetleyen a\u00e7\u0131k kaynakl\u0131 bir platformdur. Binlerce kural seti ve onlarca programlama dili deste\u011fi ile kodunuzdaki hatalar\u0131, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131, kod tekrar\u0131n\u0131 (code duplication), potansiyel performans sorunlar\u0131n\u0131 ve k\u00f6t\u00fc tasar\u0131m kal\u0131plar\u0131n\u0131 otomatik olarak analiz eder. Bu analizler sonucunda, geli\u015ftiricilere ve proje y\u00f6neticilerine teknik bor\u00e7 (technical debt) hakk\u0131nda de\u011ferli bilgiler sunar, b\u00f6ylece kod taban\u0131n\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 s\u00fcrekli olarak izleme ve iyile\u015ftirme imkan\u0131 tan\u0131r.<\/p>\n<p>Peki, SonarQube&#8217;u neden kullanmal\u0131y\u0131z? Bir\u00e7ok yaz\u0131l\u0131m ekibi, geli\u015ftirme s\u00fcrecinin h\u0131z\u0131na kap\u0131larak kod kalitesi kontrollerini g\u00f6z ard\u0131 edebiliyor. Ancak bu durum, uzun vadede ciddi maliyetlere ve s\u00fcrd\u00fcr\u00fclebilirlik sorunlar\u0131na yol a\u00e7ar. SonarQube, bu riskleri minimize etmenize yard\u0131mc\u0131 olur. \u00d6rne\u011fin, bir e-ticaret platformu geli\u015ftiren bir ekibi d\u00fc\u015f\u00fcnelim. G\u00fcvenlik a\u00e7\u0131klar\u0131, m\u00fc\u015fteri verilerinin \u00e7al\u0131nmas\u0131na neden olabilirken, performans sorunlar\u0131 sitenin yava\u015flamas\u0131na ve m\u00fc\u015fteri kayb\u0131na yol a\u00e7abilir. SonarQube, bu t\u00fcr sorunlar\u0131 kod daha \u00fcretim ortam\u0131na ge\u00e7meden \u00f6nce tespit ederek, hem zaman hem de maliyet a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck tasarruflar sa\u011flar. Geli\u015ftiriciler, SonarQube raporlar\u0131 sayesinde kodlar\u0131n\u0131 daha iyi anlar, en iyi pratikleri (best practices) \u00f6\u011frenir ve s\u00fcrekli olarak kendilerini geli\u015ftirirler. Bu, sadece bireysel geli\u015ftiricilerin de\u011fil, t\u00fcm ekibin kod kalitesi bilincini art\u0131r\u0131r.<\/p>\n<p>Ayr\u0131ca, SonarQube&#8217;un g\u00f6rsel panosu (dashboard) sayesinde, projenin genel sa\u011fl\u0131k durumu, g\u00fcvenlik derecesi, test kapsam\u0131 (test coverage) ve teknik bor\u00e7 seviyesi gibi kritik metrikleri kolayca takip edebilirsiniz. Bu sayede, hangi alanlara odaklanman\u0131z gerekti\u011fini h\u0131zl\u0131ca belirleyebilir ve stratejik kararlar alabilirsiniz. S\u00fcrekli entegrasyon (Continuous Integration &#8211; CI) ve s\u00fcrekli da\u011f\u0131t\u0131m (Continuous Deployment &#8211; CD) boru hatlar\u0131na (pipeline) entegre edildi\u011finde, her kod de\u011fi\u015fikli\u011finde otomatik analizler tetiklenir ve potansiyel sorunlar an\u0131nda geri bildirim olarak geli\u015ftiricilere iletilir. Bu, &#8220;h\u0131zl\u0131 geri bildirim&#8221; d\u00f6ng\u00fcs\u00fcn\u00fc g\u00fc\u00e7lendirerek, hatalar\u0131n erken a\u015famada yakalanmas\u0131n\u0131 ve d\u00fczeltilmesini sa\u011flar. Sonu\u00e7 olarak, SonarQube, sadece bir kod analiz arac\u0131 de\u011fil, ayn\u0131 zamanda daha kaliteli, g\u00fcvenli ve s\u00fcrd\u00fcr\u00fclebilir yaz\u0131l\u0131mlar geli\u015ftirmek i\u00e7in vazge\u00e7ilmez bir stratejik ortakt\u0131r.<\/p>\n<h2>Kuruluma Ba\u015flamadan \u00d6nce: \u00d6n Gereksinimler ve Sistem Haz\u0131rl\u0131\u011f\u0131<\/h2>\n<p>SonarQube kurulumuna ba\u015flamadan \u00f6nce, Ubuntu 24.04 sunucunuzun belirli gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan ve gerekli \u00f6n haz\u0131rl\u0131klar\u0131n yap\u0131ld\u0131\u011f\u0131ndan emin olmal\u0131y\u0131z. Bu ad\u0131mlar, kurulum s\u00fcrecinin sorunsuz ilerlemesi ve SonarQube&#8217;un en verimli \u015fekilde \u00e7al\u0131\u015fmas\u0131 i\u00e7in hayati \u00f6neme sahiptir. \u0130lk olarak, sistemimizin g\u00fcncel oldu\u011fundan emin olmal\u0131y\u0131z. Bu, olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r ve en yeni yaz\u0131l\u0131m paketlerine eri\u015fim sa\u011flar. Terminali a\u00e7arak a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z yeterlidir:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<\/p><\/div>\n<p>SonarQube, Java tabanl\u0131 bir uygulama oldu\u011fu i\u00e7in sunucunuzda uygun bir Java Development Kit (JDK) s\u00fcr\u00fcm\u00fcn\u00fcn kurulu olmas\u0131 gerekmektedir. Ubuntu 24.04 \u00fczerinde genellikle OpenJDK tercih edilir. SonarQube&#8217;un g\u00fcncel s\u00fcr\u00fcmleri genellikle Java 17 veya daha y\u00fcksek s\u00fcr\u00fcmleri gerektirir. Kurulum i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabiliriz:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install openjdk-17-jdk -y<\/code><\/pre>\n<\/p><\/div>\n<p>Kurulum tamamland\u0131ktan sonra, Java s\u00fcr\u00fcm\u00fcn\u00fc kontrol ederek do\u011fru kurulumu do\u011frulayabiliriz:<\/p>\n<div class=\"code-container\">\n<pre><code>java -version<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komut, kurulu Java s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6sterecektir. SonarQube, analiz sonu\u00e7lar\u0131n\u0131 ve yap\u0131land\u0131rma bilgilerini depolamak i\u00e7in bir veritaban\u0131na ihtiya\u00e7 duyar. Desteklenen veritabanlar\u0131 aras\u0131nda PostgreSQL, Oracle ve Microsoft SQL Server bulunur. Performans ve kullan\u0131m kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan PostgreSQL, a\u00e7\u0131k kaynak d\u00fcnyas\u0131nda en \u00e7ok tercih edilen veritaban\u0131 y\u00f6netim sistemidir (DBMS). Bu rehberde de PostgreSQL kullanaca\u011f\u0131z. Sistem kaynaklar\u0131 a\u00e7\u0131s\u0131ndan ise, SonarQube&#8217;un sorunsuz \u00e7al\u0131\u015fabilmesi i\u00e7in belirli bir miktar RAM (bellek) ve CPU (i\u015flemci) g\u00fcc\u00fcne ihtiyac\u0131 vard\u0131r. K\u00fc\u00e7\u00fck \u00f6l\u00e7ekli projeler i\u00e7in en az 2 GB RAM ve 2 CPU \u00e7ekirde\u011fi yeterli olabilirken, b\u00fcy\u00fck \u00f6l\u00e7ekli projeler ve \u00e7ok say\u0131da analiz i\u00e7in daha fazla kayna\u011fa ihtiya\u00e7 duyulacakt\u0131r. Resmi SonarQube belgelerindeki \u00f6nerilere g\u00f6z atmak her zaman en do\u011frusudur. Ayr\u0131ca, SonarQube&#8217;un kendisi i\u00e7in ayr\u0131 bir sistem kullan\u0131c\u0131s\u0131 olu\u015fturmak, g\u00fcvenlik a\u00e7\u0131s\u0131ndan iyi bir uygulamad\u0131r. Bu kullan\u0131c\u0131, SonarQube&#8217;un dizinlerine ve dosyalar\u0131na eri\u015fim sa\u011flayacak, ancak root (k\u00f6k) ayr\u0131cal\u0131klar\u0131na sahip olmayacakt\u0131r. Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, SonarQube&#8217;un temel altyap\u0131s\u0131 haz\u0131r hale gelmi\u015f olacakt\u0131r.<\/p>\n<h2>PostgreSQL Veritaban\u0131 Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>SonarQube&#8217;un \u00e7al\u0131\u015fabilmesi i\u00e7in sa\u011flam bir veritaban\u0131 altyap\u0131s\u0131na ihtiyac\u0131 vard\u0131r. Bu b\u00f6l\u00fcmde, Ubuntu 24.04 \u00fczerine PostgreSQL veritaban\u0131 sunucusunu kuracak, SonarQube i\u00e7in \u00f6zel bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturacak ve gerekli yap\u0131land\u0131rmalar\u0131 yapaca\u011f\u0131z. \u0130lk olarak, PostgreSQL sunucusunu kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131yoruz:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install postgresql postgresql-contrib -y<\/code><\/pre>\n<\/p><\/div>\n<p>Kurulum tamamland\u0131ktan sonra, PostgreSQL servisi otomatik olarak ba\u015flat\u0131lmal\u0131 ve etkinle\u015ftirilmelidir. Servisin durumunu kontrol etmek i\u00e7in:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl status postgresql<\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi, SonarQube i\u00e7in \u00f6zel bir PostgreSQL kullan\u0131c\u0131s\u0131 ve veritaban\u0131 olu\u015fturmam\u0131z gerekiyor. Bu, g\u00fcvenlik ve kaynak y\u00f6netimi a\u00e7\u0131s\u0131ndan iyi bir uygulamad\u0131r. PostgreSQL varsay\u0131lan olarak <code>postgres<\/code> adl\u0131 bir s\u00fcper kullan\u0131c\u0131 (superuser) ile gelir. Bu kullan\u0131c\u0131ya ge\u00e7i\u015f yaparak veritaban\u0131 i\u015flemlerini ger\u00e7ekle\u015ftirebiliriz:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo -i -u postgres<\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi PostgreSQL komut istemcisine (prompt) eri\u015fmek i\u00e7in <code>psql<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>psql<\/code><\/pre>\n<\/p><\/div>\n<p>PostgreSQL komut istemcisinde iken, SonarQube i\u00e7in bir kullan\u0131c\u0131 ve veritaban\u0131 olu\u015ftural\u0131m. Kullan\u0131c\u0131 ad\u0131 olarak <code>sonarqube<\/code> ve bir \u015fifre belirleyelim. \u015eifrenizi g\u00fc\u00e7l\u00fc ve tahmin edilmesi zor bir \u015fekilde se\u00e7ti\u011finizden emin olun.<\/p>\n<div class=\"code-container\">\n<pre><code>CREATE USER sonarqube WITH PASSWORD 'GucluSifreniz123!';\nCREATE DATABASE sonarqube OWNER sonarqube;\nGRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;\n\\q<\/code><\/pre>\n<\/p><\/div>\n<p><code>\\q<\/code> komutu ile PostgreSQL komut istemcisinden \u00e7\u0131k\u0131\u015f yapabilirsiniz. Ard\u0131ndan <code>exit<\/code> yazarak <code>postgres<\/code> kullan\u0131c\u0131s\u0131ndan da \u00e7\u0131k\u0131\u015f yaparak normal kullan\u0131c\u0131ya geri d\u00f6nebilirsiniz. Son olarak, PostgreSQL&#8217;in a\u011f ba\u011flant\u0131lar\u0131n\u0131 kabul etmesi ve SonarQube&#8217;un veritaban\u0131na eri\u015febilmesi i\u00e7in baz\u0131 yap\u0131land\u0131rmalar yapmam\u0131z gerekebilir. Genellikle bu, <code>\/etc\/postgresql\/16\/main\/pg_hba.conf<\/code> dosyas\u0131nda yap\u0131l\u0131r (PostgreSQL s\u00fcr\u00fcm\u00fcn\u00fcz farkl\u0131l\u0131k g\u00f6sterebilir). Bu dosyay\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nano \/etc\/postgresql\/16\/main\/pg_hba.conf<\/code><\/pre>\n<\/p><\/div>\n<p>Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyerek yerel ba\u011flant\u0131lara izin verebilirsiniz. E\u011fer SonarQube ve PostgreSQL ayn\u0131 sunucuda \u00e7al\u0131\u015facaksa bu yeterli olacakt\u0131r:<\/p>\n<div class=\"code-container\">\n<pre><code>host    all             all             127.0.0.1\/32            md5<\/code><\/pre>\n<\/p><\/div>\n<p>De\u011fi\u015fiklikleri kaydedip \u00e7\u0131kt\u0131ktan sonra, PostgreSQL servisini yeniden ba\u015flatarak yap\u0131land\u0131rmalar\u0131n etkili olmas\u0131n\u0131 sa\u011flay\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl restart postgresql<\/code><\/pre>\n<\/p><\/div>\n<p>Bu ad\u0131mlarla birlikte, SonarQube i\u00e7in g\u00fcvenli ve i\u015flevsel bir PostgreSQL veritaban\u0131 altyap\u0131s\u0131 ba\u015far\u0131yla kurulmu\u015f ve yap\u0131land\u0131r\u0131lm\u0131\u015f olacakt\u0131r. Art\u0131k SonarQube&#8217;un kendisini indirme ve kurma a\u015famas\u0131na ge\u00e7meye haz\u0131r\u0131z.<\/p>\n<h2>SonarQube \u0130ndirme ve Ortam Ayarlar\u0131<\/h2>\n<p>PostgreSQL veritaban\u0131m\u0131z haz\u0131r oldu\u011funa g\u00f6re, \u015fimdi SonarQube&#8217;un kendisini indirme ve sistemimizde uygun \u015fekilde yap\u0131land\u0131rma zaman\u0131. SonarQube&#8217;un en son topluluk s\u00fcr\u00fcm\u00fcn\u00fc (Community Edition) resmi web sitesinden indirece\u011fiz. \u0130ndirme i\u015flemi i\u00e7in <code>wget<\/code> komutunu kullanabiliriz. \u00d6ncelikle, SonarQube&#8217;u indirece\u011fimiz ve kuraca\u011f\u0131m\u0131z dizine gidelim. Genellikle <code>\/opt<\/code> dizini bu t\u00fcr uygulamalar i\u00e7in tercih edilir:<\/p>\n<div class=\"code-container\">\n<pre><code>cd \/opt<\/code><\/pre>\n<\/p><\/div>\n<p>Ard\u0131ndan, SonarQube&#8217;un resmi indirme sayfas\u0131ndan en g\u00fcncel s\u00fcr\u00fcm\u00fcn do\u011frudan indirme ba\u011flant\u0131s\u0131n\u0131 alarak a\u015fa\u011f\u0131daki gibi indirme i\u015flemini ger\u00e7ekle\u015ftirebiliriz. (S\u00fcr\u00fcm numaras\u0131 zamanla de\u011fi\u015febilir, bu y\u00fczden l\u00fctfen resmi siteden g\u00fcncel ba\u011flant\u0131y\u0131 kontrol edin.)<\/p>\n<div class=\"code-container\">\n<pre><code>sudo wget https:\/\/binaries.sonarsource.com\/Distribution\/sonarqube\/sonarqube-10.5.1.89294.zip<\/code><\/pre>\n<\/p><\/div>\n<p>\u0130ndirme tamamland\u0131ktan sonra, s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyay\u0131 a\u00e7mam\u0131z gerekiyor. Bunun i\u00e7in <code>unzip<\/code> arac\u0131na ihtiyac\u0131m\u0131z olabilir; e\u011fer kurulu de\u011filse kurun:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install unzip -y\nsudo unzip sonarqube-10.5.1.89294.zip\nsudo rm sonarqube-10.5.1.89294.zip<\/code><\/pre>\n<\/p><\/div>\n<p>S\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyay\u0131 a\u00e7t\u0131ktan sonra, genellikle <code>sonarqube-x.x.x<\/code> \u015feklinde bir dizin olu\u015facakt\u0131r. Bu dizinin ad\u0131n\u0131 daha basit bir hale getirmek iyi bir uygulamad\u0131r:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo mv sonarqube-10.5.1.89294 sonarqube<\/code><\/pre>\n<\/p><\/div>\n<p>G\u00fcvenlik amac\u0131yla, SonarQube&#8217;u root kullan\u0131c\u0131s\u0131 yerine \u00f6zel bir sistem kullan\u0131c\u0131s\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131rmak en iyi pratiklerden biridir. Bu kullan\u0131c\u0131ya sadece SonarQube dizinine eri\u015fim izni verece\u011fiz. Bir <code>sonarqube<\/code> kullan\u0131c\u0131s\u0131 olu\u015ftural\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo adduser --system --no-create-home --group sonarqube<\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi, <code>\/opt\/sonarqube<\/code> dizininin sahipli\u011fini bu yeni kullan\u0131c\u0131ya verelim:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo chown -R sonarqube:sonarqube \/opt\/sonarqube<\/code><\/pre>\n<\/p><\/div>\n<p>SonarQube&#8217;un veritaban\u0131 ba\u011flant\u0131 bilgilerini ve di\u011fer \u00e7al\u0131\u015fma zaman\u0131 ayarlar\u0131n\u0131 yap\u0131land\u0131rmam\u0131z gerekiyor. Bu ayarlar <code>\/opt\/sonarqube\/conf\/sonar.properties<\/code> dosyas\u0131nda bulunur. Bu dosyay\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nano \/opt\/sonarqube\/conf\/sonar.properties<\/code><\/pre>\n<\/p><\/div>\n<p>Dosya i\u00e7inde a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 bulup, ba\u015flar\u0131ndaki <code>#<\/code> i\u015faretini kald\u0131rarak (yorum sat\u0131r\u0131 olmaktan \u00e7\u0131kararak) ve kendi veritaban\u0131 bilgilerinizle doldurarak d\u00fczenleyin:<\/p>\n<div class=\"code-container\">\n<pre><code>sonar.jdbc.url=jdbc:postgresql:\/\/localhost\/sonarqube\nsonar.jdbc.username=sonarqube\nsonar.jdbc.password=GucluSifreniz123!<\/code><\/pre>\n<\/p><\/div>\n<p>Ayr\u0131ca, SonarQube&#8217;un Java sanal makinesi (JVM) i\u00e7in bellek ayarlar\u0131n\u0131 da optimize edebiliriz. Genellikle <code>sonar.web.javaOpts<\/code> ve <code>sonar.ce.javaOpts<\/code> sat\u0131rlar\u0131n\u0131 bularak bellek de\u011ferlerini sisteminizin RAM kapasitesine g\u00f6re ayarlaman\u0131z \u00f6nerilir. \u00d6rne\u011fin:<\/p>\n<div class=\"code-container\">\n<pre><code>sonar.web.javaOpts=-Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError\nsonar.ce.javaOpts=-Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError<\/code><\/pre>\n<\/p><\/div>\n<p>Bu de\u011ferler, SonarQube&#8217;un web aray\u00fcz\u00fc (web server) ve analiz motoru (compute engine) i\u00e7in minimum ve maksimum bellek tahsisini belirler. De\u011fi\u015fiklikleri kaydedip dosyay\u0131 kapat\u0131n. Bu ad\u0131mlarla, SonarQube&#8217;un temel dosyalar\u0131 sisteme indirilmi\u015f, g\u00fcvenlik i\u00e7in bir kullan\u0131c\u0131 atanm\u0131\u015f ve veritaban\u0131 ba\u011flant\u0131s\u0131 dahil temel yap\u0131land\u0131rmalar tamamlanm\u0131\u015f olacakt\u0131r. Art\u0131k SonarQube&#8217;u bir sistem servisi olarak yap\u0131land\u0131r\u0131p ba\u015flatmaya haz\u0131r\u0131z.<\/p>\n<h2>SonarQube Servisinin Yap\u0131land\u0131r\u0131lmas\u0131 ve Ba\u015flat\u0131lmas\u0131<\/h2>\n<p>SonarQube&#8217;u manuel olarak \u00e7al\u0131\u015ft\u0131rmak yerine, onu bir sistem servisi (systemd service) olarak yap\u0131land\u0131rmak, sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 ve arka planda s\u00fcrekli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu, y\u00f6netim kolayl\u0131\u011f\u0131 ve sistemin istikrar\u0131 a\u00e7\u0131s\u0131ndan \u00f6nemlidir. \u0130lk olarak, SonarQube i\u00e7in bir systemd servis dosyas\u0131 olu\u015fturmam\u0131z gerekiyor. Bu dosyay\u0131 <code>\/etc\/systemd\/system\/sonarqube.service<\/code> yolunda olu\u015fturaca\u011f\u0131z:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nano \/etc\/systemd\/system\/sonarqube.service<\/code><\/pre>\n<\/p><\/div>\n<p>A\u00e7\u0131lan dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>[Unit]\nDescription=SonarQube systemd service\nDocumentation=https:\/\/docs.sonarqube.org\/latest\/\nRequires=network.target remote-fs.target\nAfter=network.target remote-fs.target\n\n[Service]\nExecStart=\/opt\/sonarqube\/bin\/linux-x86-64\/sonar.sh start\nExecStop=\/opt\/sonarqube\/bin\/linux-x86-64\/sonar.sh stop\nLimitNOFILE=65536\nLimitNPROC=4096\nUser=sonarqube\nGroup=sonarqube\nType=forking\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<\/p><\/div>\n<p>Bu servis tan\u0131m\u0131, SonarQube&#8217;un nas\u0131l ba\u015flat\u0131laca\u011f\u0131n\u0131, durdurulaca\u011f\u0131n\u0131, hangi kullan\u0131c\u0131 ve grup alt\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 ve sistem kaynaklar\u0131 \u00fczerindeki limitleri belirtir. <code>LimitNOFILE<\/code> ve <code>LimitNPROC<\/code> de\u011ferleri, SonarQube&#8217;un \u00e7ok say\u0131da dosya ve i\u015flemle \u00e7al\u0131\u015f\u0131rken sorun ya\u015famamas\u0131n\u0131 sa\u011flamak i\u00e7in \u00f6nemlidir. Dosyay\u0131 kaydedip kapatt\u0131ktan sonra, systemd&#8217;nin yeni servisimizi tan\u0131mas\u0131 i\u00e7in yap\u0131land\u0131rmay\u0131 yeniden y\u00fcklememiz gerekiyor:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl daemon-reload<\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi SonarQube servisini ba\u015flatabilir ve sistem a\u00e7\u0131l\u0131\u015f\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirebiliriz:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl start sonarqube\nsudo systemctl enable sonarqube<\/code><\/pre>\n<\/p><\/div>\n<p>Servisin durumunu kontrol ederek do\u011fru bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olal\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl status sonarqube<\/code><\/pre>\n<\/p><\/div>\n<p>Durumun &#8220;active (running)&#8221; olarak g\u00f6r\u00fcnmesi gerekmektedir. SonarQube varsay\u0131lan olarak 9000 numaral\u0131 portu kullan\u0131r. E\u011fer sunucunuzda bir g\u00fcvenlik duvar\u0131 (firewall) etkinse (Ubuntu&#8217;da UFW yayg\u0131n olarak kullan\u0131l\u0131r), bu portu d\u0131\u015far\u0131dan eri\u015fime a\u00e7man\u0131z gerekecektir:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo ufw allow 9000\/tcp\nsudo ufw enable<\/code><\/pre>\n<\/p><\/div>\n<p>G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirdikten sonra, taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresi veya alan ad\u0131yla 9000 numaral\u0131 port \u00fczerinden SonarQube&#8217;a eri\u015febilirsiniz: <code>http:\/\/[sunucu_ip_adresi]:9000<\/code>. \u0130lk eri\u015fiminizde, varsay\u0131lan y\u00f6netici kullan\u0131c\u0131 ad\u0131 <code>admin<\/code> ve \u015fifre <code>admin<\/code> olacakt\u0131r. Giri\u015f yapt\u0131ktan sonra, g\u00fcvenlik amac\u0131yla bu varsay\u0131lan \u015fifreyi hemen de\u011fi\u015ftirmeniz \u015fiddetle tavsiye edilir. SonarQube&#8217;un web aray\u00fcz\u00fcne ba\u015far\u0131l\u0131 bir \u015fekilde eri\u015ftiyseniz ve \u015fifreyi de\u011fi\u015ftirdiyseniz, temel kurulum s\u00fcreci tamamlanm\u0131\u015f demektir. Art\u0131k kod analizleri yapmaya ve projelerinizi y\u00f6netmeye haz\u0131rs\u0131n\u0131z. Ancak daha g\u00fcvenli ve profesyonel bir kullan\u0131m i\u00e7in ileri d\u00fczey yap\u0131land\u0131rmalar da mevcuttur.<\/p>\n<h2>\u0130leri D\u00fczey Yap\u0131land\u0131rmalar ve Entegrasyon \u0130pu\u00e7lar\u0131<\/h2>\n<p>SonarQube&#8217;un temel kurulumu tamamlanm\u0131\u015f olsa da, \u00fcretim ortamlar\u0131nda daha g\u00fcvenli, performansl\u0131 ve kullan\u0131\u015fl\u0131 hale getirmek i\u00e7in baz\u0131 ileri d\u00fczey yap\u0131land\u0131rmalar ve entegrasyonlar yapmak olduk\u00e7a \u00f6nemlidir. Bu b\u00f6l\u00fcmde, ters proxy (reverse proxy) kurulumu, SSL\/TLS sertifikas\u0131 entegrasyonu ve CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) ara\u00e7lar\u0131yla entegrasyon gibi konulara de\u011finece\u011fiz.<\/p>\n<h3>NGINX ile Ters Proxy Kurulumu<\/h3>\n<p>SonarQube&#8217;u do\u011frudan 9000 portu \u00fczerinden eri\u015fime a\u00e7mak yerine, NGINX veya Apache gibi bir ters proxy sunucusu arkas\u0131na almak, hem g\u00fcvenlik hem de y\u00f6netim a\u00e7\u0131s\u0131ndan bir\u00e7ok avantaj sa\u011flar. Ters proxy, istekleri SonarQube&#8217;a iletirken, ayn\u0131 zamanda SSL\/TLS sonland\u0131rma (termination), y\u00fck dengeleme (load balancing) ve statik dosya sunumu gibi g\u00f6revleri \u00fcstlenebilir. NGINX kurulumu i\u00e7in:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install nginx -y<\/code><\/pre>\n<\/p><\/div>\n<p>Ard\u0131ndan, NGINX i\u00e7in bir yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m (\u00f6rne\u011fin <code>\/etc\/nginx\/sites-available\/sonarqube<\/code>):<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nano \/etc\/nginx\/sites-available\/sonarqube<\/code><\/pre>\n<\/p><\/div>\n<p>\u0130\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi d\u00fczenleyin (<code>your_domain.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 yaz\u0131n):<\/p>\n<div class=\"code-container\">\n<pre><code>server {\n    listen 80;\n    server_name your_domain.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:9000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_read_timeout 36000s;\n        proxy_connect_timeout 36000s;\n        proxy_send_timeout 36000s;\n    }\n}<\/code><\/pre>\n<\/p><\/div>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in bir sembolik ba\u011flant\u0131 (symbolic link) olu\u015fturun ve NGINX&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/sonarqube \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo systemctl restart nginx<\/code><\/pre>\n<\/p><\/div>\n<p>Art\u0131k SonarQube&#8217;a <code>http:\/\/your_domain.com<\/code> \u00fczerinden eri\u015febileceksiniz.<\/p>\n<h3>SSL\/TLS Sertifikas\u0131 Entegrasyonu (Let&#8217;s Encrypt)<\/h3>\n<p>G\u00fcvenli ileti\u015fim i\u00e7in SonarQube&#8217;a HTTPS \u00fczerinden eri\u015fmek esast\u0131r. Let&#8217;s Encrypt ve Certbot kullanarak \u00fccretsiz SSL\/TLS sertifikalar\u0131 edinebiliriz. NGINX yap\u0131land\u0131rmas\u0131 tamamland\u0131ktan sonra Certbot&#8217;u kurun:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install certbot python3-certbot-nginx -y<\/code><\/pre>\n<\/p><\/div>\n<p>Sertifikay\u0131 olu\u015fturmak ve NGINX&#8217;i otomatik olarak yap\u0131land\u0131rmak i\u00e7in:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo certbot --nginx -d your_domain.com<\/code><\/pre>\n<\/p><\/div>\n<p>Certbot size birka\u00e7 soru soracak ve i\u015flemi tamamlayacakt\u0131r. Bu i\u015flemden sonra NGINX yap\u0131land\u0131rma dosyan\u0131z otomatik olarak HTTPS i\u00e7in g\u00fcncellenecektir. G\u00fcvenlik duvar\u0131n\u0131zdan 443 portunu a\u00e7may\u0131 unutmay\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo ufw allow 443\/tcp<\/code><\/pre>\n<\/p><\/div>\n<p>Art\u0131k SonarQube&#8217;a <code>https:\/\/your_domain.com<\/code> \u00fczerinden g\u00fcvenli bir \u015fekilde eri\u015febilirsiniz.<\/p>\n<h3>CI\/CD Ara\u00e7lar\u0131yla Entegrasyon<\/h3>\n<p>SonarQube&#8217;un g\u00fcc\u00fcn\u00fc tam anlam\u0131yla kullanmak i\u00e7in onu CI\/CD boru hatlar\u0131n\u0131za entegre etmeniz gerekir. Her kod de\u011fi\u015fikli\u011fi veya birle\u015ftirme (merge) iste\u011fi (pull request) \u00fczerinde otomatik olarak SonarQube analizi \u00e7al\u0131\u015ft\u0131rmak, hatalar\u0131 ve g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erken a\u015famada tespit etmenizi sa\u011flar. Pop\u00fcler CI\/CD ara\u00e7lar\u0131 (Jenkins, GitLab CI, GitHub Actions, Azure DevOps) SonarQube ile entegrasyon i\u00e7in yerle\u015fik eklentilere veya kolay yap\u0131land\u0131rma se\u00e7eneklerine sahiptir. \u00d6rne\u011fin, GitLab CI&#8217;da <code>.gitlab-ci.yml<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki gibi bir a\u015fama (stage) ekleyebilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>stages:\n  - build\n  - test\n  - analyze\n\nsonarqube_analysis:\n  stage: analyze\n  image: maven:3.8.7-openjdk-17 # Projenizin diline uygun bir imaj kullan\u0131n\n  variables:\n    SONAR_HOST_URL: \"https:\/\/your_domain.com\"\n    SONAR_TOKEN: \"$SONAR_AUTH_TOKEN\" # GitLab CI\/CD De\u011fi\u015fkenlerinde tan\u0131mlanmal\u0131\n  script:\n    - mvn verify sonar:sonar -Dsonar.projectKey=my-java-project -Dsonar.sources=.<\/code><\/pre>\n<\/p><\/div>\n<p>Bu \u00f6rnek, bir Maven projesi i\u00e7in SonarQube analizini g\u00f6sterir. <code>SONAR_TOKEN<\/code>, SonarQube aray\u00fcz\u00fcnden olu\u015fturabilece\u011finiz bir kimlik do\u011frulama belirtecidir (authentication token). Bu t\u00fcr entegrasyonlar, geli\u015ftirme s\u00fcrecinizin ayr\u0131lmaz bir par\u00e7as\u0131 haline gelerek kod kalitesini s\u00fcrekli olarak g\u00fcvence alt\u0131na al\u0131r. Bu ileri d\u00fczey yap\u0131land\u0131rmalarla, SonarQube kurulumunuzu daha sa\u011flam, g\u00fcvenli ve otomatik hale getirebilirsiniz.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<h3>1. SonarQube neden ba\u015flam\u0131yor veya web aray\u00fcz\u00fcne eri\u015femiyorum?<\/h3>\n<p>Bu durumun birka\u00e7 yayg\u0131n nedeni olabilir:<\/p>\n<ul>\n<li><strong>Java S\u00fcr\u00fcm\u00fc:<\/strong> SonarQube&#8217;un gerektirdi\u011fi Java s\u00fcr\u00fcm\u00fcn\u00fcn (genellikle OpenJDK 17 veya \u00fczeri) do\u011fru kuruldu\u011fundan emin olun. <code>java -version<\/code> komutu ile kontrol edin.<\/li>\n<li><strong>Bellek Limitleri:<\/strong> Sunucunuzda yeterli RAM olmad\u0131\u011f\u0131nda SonarQube ba\u015flamayabilir. <code>\/opt\/sonarqube\/conf\/sonar.properties<\/code> dosyas\u0131ndaki <code>sonar.web.javaOpts<\/code> ve <code>sonar.ce.javaOpts<\/code> bellek ayarlar\u0131n\u0131 kontrol edin ve sisteminizin kapasitesine g\u00f6re ayarlay\u0131n.<\/li>\n<li><strong>Veritaban\u0131 Ba\u011flant\u0131s\u0131:<\/strong> <code>sonar.properties<\/code> dosyas\u0131ndaki veritaban\u0131 ba\u011flant\u0131 bilgilerinin (URL, kullan\u0131c\u0131 ad\u0131, \u015fifre) do\u011fru oldu\u011fundan ve PostgreSQL servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. PostgreSQL loglar\u0131n\u0131 kontrol etmek faydal\u0131 olabilir.<\/li>\n<li><strong>Kullan\u0131c\u0131 \u0130zinleri:<\/strong> SonarQube dizinlerinin (<code>\/opt\/sonarqube<\/code>) <code>sonarqube<\/code> kullan\u0131c\u0131s\u0131na ait oldu\u011fundan ve bu kullan\u0131c\u0131n\u0131n dizinlere okuma\/yazma izni oldu\u011fundan emin olun.<\/li>\n<li><strong>Port \u00c7ak\u0131\u015fmas\u0131\/G\u00fcvenlik Duvar\u0131:<\/strong> SonarQube&#8217;un varsay\u0131lan 9000 portunun ba\u015fka bir uygulama taraf\u0131ndan kullan\u0131lmad\u0131\u011f\u0131ndan emin olun. Ayr\u0131ca, g\u00fcvenlik duvar\u0131n\u0131z\u0131n (UFW) 9000 (veya NGINX kullan\u0131yorsan\u0131z 80\/443) portuna izin verdi\u011finden emin olun.<\/li>\n<li><strong>SonarQube Loglar\u0131:<\/strong> En iyi hata ay\u0131klama y\u00f6ntemi, SonarQube loglar\u0131n\u0131 incelemektir. Log dosyalar\u0131 <code>\/opt\/sonarqube\/logs<\/code> dizininde bulunur (<code>web.log<\/code>, <code>ce.log<\/code>, <code>es.log<\/code>). Bu dosyalar, sorunun k\u00f6k nedenini belirlemenize yard\u0131mc\u0131 olacakt\u0131r.<\/li>\n<\/ul>\n<h3>2. Veritaban\u0131 ba\u011flant\u0131 hatas\u0131 al\u0131yorum, ne yapmal\u0131y\u0131m?<\/h3>\n<p>Veritaban\u0131 ba\u011flant\u0131 hatalar\u0131 genellikle a\u015fa\u011f\u0131daki nedenlerden kaynaklan\u0131r:<\/p>\n<ul>\n<li><strong>Yanl\u0131\u015f Kimlik Bilgileri:<\/strong> <code>\/opt\/sonarqube\/conf\/sonar.properties<\/code> dosyas\u0131ndaki <code>sonar.jdbc.username<\/code> ve <code>sonar.jdbc.password<\/code> bilgilerinin PostgreSQL&#8217;de olu\u015fturdu\u011funuz kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile tam olarak e\u015fle\u015fti\u011finden emin olun.<\/li>\n<li><strong>Yanl\u0131\u015f Veritaban\u0131 URL&#8217;si:<\/strong> <code>sonar.jdbc.url<\/code> i\u00e7indeki veritaban\u0131 ad\u0131n\u0131n (varsay\u0131lan olarak <code>sonarqube<\/code>) do\u011fru oldu\u011fundan emin olun.<\/li>\n<li><strong>PostgreSQL Servisi \u00c7al\u0131\u015fm\u0131yor:<\/strong> PostgreSQL servisinin aktif ve \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olun: <code>sudo systemctl status postgresql<\/code>.<\/li>\n<li><strong>PostgreSQL Ba\u011flant\u0131 \u0130zinleri:<\/strong> <code>\/etc\/postgresql\/16\/main\/pg_hba.conf<\/code> dosyas\u0131nda yerel ba\u011flant\u0131lara izin verildi\u011finden (\u00f6rne\u011fin <code>host all all 127.0.0.1\/32 md5<\/code>) ve de\u011fi\u015fikliklerden sonra PostgreSQL&#8217;in yeniden ba\u015flat\u0131ld\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>Veritaban\u0131 Olu\u015fturulmad\u0131:<\/strong> SonarQube veritaban\u0131n\u0131n (<code>sonarqube<\/code>) ve kullan\u0131c\u0131s\u0131n\u0131n (<code>sonarqube<\/code>) PostgreSQL i\u00e7inde do\u011fru bir \u015fekilde olu\u015fturuldu\u011fundan emin olun.<\/li>\n<\/ul>\n<h3>3. SonarQube&#8217;u g\u00fcncelledikten sonra sorun ya\u015f\u0131yorum, nas\u0131l geri d\u00f6nebilirim?<\/h3>\n<p>SonarQube g\u00fcncellemeleri genellikle veritaban\u0131 \u015femas\u0131 de\u011fi\u015fikliklerini i\u00e7erir. Bu nedenle, g\u00fcncelleme yapmadan \u00f6nce her zaman veritaban\u0131n\u0131z\u0131n ve SonarQube kurulum dizininin (<code>\/opt\/sonarqube<\/code>) yede\u011fini alman\u0131z \u015fiddetle tavsiye edilir. E\u011fer bir sorunla kar\u015f\u0131la\u015f\u0131rsan\u0131z:<\/p>\n<ul>\n<li><strong>Loglar\u0131 Kontrol Edin:<\/strong> G\u00fcncelleme sonras\u0131 olu\u015fan sorunlar\u0131n nedenini anlamak i\u00e7in <code>\/opt\/sonarqube\/logs<\/code> dizinindeki log dosyalar\u0131n\u0131 inceleyin.<\/li>\n<li><strong>Veritaban\u0131 Yedekten Geri Y\u00fckleme:<\/strong> E\u011fer yedek ald\u0131ysan\u0131z, PostgreSQL veritaban\u0131n\u0131z\u0131 g\u00fcncelleme \u00f6ncesi haline geri y\u00fckleyin.<\/li>\n<li><strong>Eski SonarQube Dizinini Geri Y\u00fckleme:<\/strong> SonarQube&#8217;un eski s\u00fcr\u00fcm\u00fcn\u00fcn kurulum dizinini (yedeklediyseniz) geri y\u00fckleyin.<\/li>\n<li><strong>S\u00fcr\u00fcm Uyumlulu\u011fu:<\/strong> Yeni SonarQube s\u00fcr\u00fcm\u00fcn\u00fcn Java ve veritaban\u0131 s\u00fcr\u00fcm\u00fcn\u00fczle uyumlu oldu\u011fundan emin olun.<\/li>\n<li><strong>Eklentiler:<\/strong> Kurulu eklentilerinizin (plugins) yeni SonarQube s\u00fcr\u00fcm\u00fcyle uyumlu oldu\u011fundan emin olun. Uyumsuz eklentiler sorunlara yol a\u00e7abilir.<\/li>\n<\/ul>\n<p>        Geri d\u00f6n\u00fc\u015f (rollback) i\u015flemi, yedekleriniz varsa nispeten kolayd\u0131r. Yedekleme stratejisi, g\u00fcncelleme plan\u0131n\u0131z\u0131n \u00f6nemli bir par\u00e7as\u0131 olmal\u0131d\u0131r.\n    <\/p>\n<h3>4. SonarQube performans sorunlar\u0131 ya\u015f\u0131yorum, ne yapmal\u0131y\u0131m?<\/h3>\n<p>Performans sorunlar\u0131 genellikle a\u015fa\u011f\u0131daki noktalardan kaynaklan\u0131r:<\/p>\n<ul>\n<li><strong>Yetersiz Sistem Kaynaklar\u0131:<\/strong> Sunucunuzun yeterli RAM ve CPU&#8217;ya sahip oldu\u011fundan emin olun. \u00d6zellikle b\u00fcy\u00fck projeler ve s\u0131k analizler i\u00e7in daha fazla kayna\u011fa ihtiya\u00e7 duyulur. <code>sonar.properties<\/code> dosyas\u0131ndaki JVM bellek ayarlar\u0131n\u0131 (<code>-Xmx<\/code>, <code>-Xms<\/code>) art\u0131rmay\u0131 deneyin.<\/li>\n<li><strong>Veritaban\u0131 Performans\u0131:<\/strong> PostgreSQL&#8217;in performans\u0131n\u0131 izleyin. Yava\u015f sorgular veya yetersiz disk I\/O, SonarQube&#8217;u yava\u015flatabilir. PostgreSQL yap\u0131land\u0131rmas\u0131n\u0131 (<code>postgresql.conf<\/code>) optimize etmeyi d\u00fc\u015f\u00fcnebilirsiniz.<\/li>\n<li><strong>Elasticsearch Performans\u0131:<\/strong> SonarQube, arama ve indeksleme i\u00e7in Elasticsearch kullan\u0131r. Elasticsearch&#8217;in yeterli belle\u011fe sahip oldu\u011fundan ve disk I\/O&#8217;sunun iyi oldu\u011fundan emin olun. <code>vm.max_map_count<\/code> gibi kernel ayarlar\u0131n\u0131 kontrol edin.<\/li>\n<li><strong>A\u011f Yap\u0131land\u0131rmas\u0131:<\/strong> SonarQube&#8217;a eri\u015fim veya analiz ajanlar\u0131n\u0131n (SonarScanner) SonarQube sunucusuna ba\u011flanmas\u0131nda a\u011f gecikmeleri olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.<\/li>\n<li><strong>Proje Boyutu ve Ayarlar\u0131:<\/strong> \u00c7ok b\u00fcy\u00fck projeler veya \u00e7ok say\u0131da kural i\u00e7eren profiller, analiz s\u00fcrelerini uzatabilir. Proje boyutunu optimize etmeyi veya analiz kapsam\u0131n\u0131 daraltmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/li>\n<\/ul>\n<h3>5. SonarQube taramalar\u0131n\u0131 otomatikle\u015ftirmek i\u00e7in ne kullanmal\u0131y\u0131m?<\/h3>\n<p>SonarQube taramalar\u0131n\u0131 otomatikle\u015ftirmek i\u00e7in en yayg\u0131n ve etkili y\u00f6ntemler \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>CI\/CD Ara\u00e7lar\u0131:<\/strong> Jenkins, GitLab CI, GitHub Actions, Azure DevOps, Bitbucket Pipelines gibi s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m ara\u00e7lar\u0131, her kod de\u011fi\u015fikli\u011finde veya belirli zaman aral\u0131klar\u0131nda SonarQube analizini otomatik olarak tetiklemek i\u00e7in idealdir. Bu ara\u00e7lar\u0131n \u00e7o\u011fu i\u00e7in SonarQube eklentileri veya yerle\u015fik entegrasyonlar\u0131 mevcuttur.<\/li>\n<li><strong>SonarScanner CLI:<\/strong> SonarScanner, komut sat\u0131r\u0131 \u00fczerinden SonarQube analizlerini ba\u015flatmak i\u00e7in kullan\u0131lan ba\u011f\u0131ms\u0131z bir ara\u00e7t\u0131r. CI\/CD boru hatlar\u0131n\u0131za entegre edilebilece\u011fi gibi, yerel geli\u015ftirme ortamlar\u0131nda da manuel analizler i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Derleme Ara\u00e7lar\u0131 Entegrasyonu:<\/strong> Maven, Gradle, .NET gibi pop\u00fcler derleme ara\u00e7lar\u0131n\u0131n SonarQube ile do\u011frudan entegrasyonu vard\u0131r. Bu sayede, projenizi derlerken ayn\u0131 zamanda SonarQube analizini de \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/li>\n<\/ul>\n<p>        Otomatik taramalar, kod kalitesinin s\u00fcrekli olarak izlenmesini ve teknik borcun kontrol alt\u0131nda tutulmas\u0131n\u0131 sa\u011flayarak geli\u015ftirme s\u00fcrecinin verimlili\u011fini art\u0131r\u0131r.\n    <\/p>\n<h2>Sonu\u00e7 ve Kapan\u0131\u015f<\/h2>\n<p>Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerine SonarQube&#8217;u ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, PostgreSQL veritaban\u0131n\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve sistemi nas\u0131l optimize edece\u011finizi detayl\u0131 bir \u015fekilde \u00f6\u011frendiniz. Modern yaz\u0131l\u0131m geli\u015ftirme pratiklerinde kod kalitesinin ve g\u00fcvenli\u011finin ne denli kritik oldu\u011funu bir kez daha vurgulamak gerekir. SonarQube gibi g\u00fc\u00e7l\u00fc bir statik kod analiz platformu, teknik borcu erken a\u015famada tespit ederek, geli\u015ftirme maliyetlerini d\u00fc\u015f\u00fcr\u00fcr ve yaz\u0131l\u0131m\u0131n uzun vadeli s\u00fcrd\u00fcr\u00fclebilirli\u011fini sa\u011flar.<\/p>\n<p>Kurulum s\u00fcrecinde dikkat etti\u011fimiz her ad\u0131m, SonarQube&#8217;un sadece \u00e7al\u0131\u015f\u0131r durumda olmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda g\u00fcvenli, performansl\u0131 ve y\u00f6netilebilir bir \u015fekilde faaliyet g\u00f6stermesini sa\u011flamay\u0131 ama\u00e7lad\u0131. Java kurulumundan PostgreSQL veritaban\u0131 yap\u0131land\u0131rmas\u0131na, SonarQube servisinin olu\u015fturulmas\u0131ndan NGINX ile ters proxy ve SSL\/TLS entegrasyonuna kadar her detay, ger\u00e7ek d\u00fcnya senaryolar\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz ihtiya\u00e7lara y\u00f6nelik \u00e7\u00f6z\u00fcmler sunmaktad\u0131r. CI\/CD ara\u00e7lar\u0131yla entegrasyon ipu\u00e7lar\u0131 ise, SonarQube&#8217;u geli\u015ftirme s\u00fcrecinizin ayr\u0131lmaz bir par\u00e7as\u0131 haline getirerek, s\u00fcrekli kod kalitesi denetimi sa\u011flaman\u0131z i\u00e7in yol g\u00f6stermi\u015ftir.<\/p>\n<p>Unutmay\u0131n ki SonarQube, sadece bir ara\u00e7 de\u011fil, ayn\u0131 zamanda bir k\u00fclt\u00fcrd\u00fcr. Ekibinizin kod kalitesi bilincini art\u0131rmak, teknik borcu d\u00fczenli olarak ele almak ve en iyi pratikleri benimsemek, SonarQube&#8217;dan elde edece\u011finiz faydalar\u0131 maksimize edecektir. Kurulumun ard\u0131ndan, SonarQube aray\u00fcz\u00fcn\u00fc ke\u015ffetmeye, analiz profilleri olu\u015fturmaya ve projelerinizi taramaya ba\u015flayarak kodunuzun ger\u00e7ek potansiyelini ortaya \u00e7\u0131karabilirsiniz. Kod kalitesine yap\u0131lan bu yat\u0131r\u0131m, \u015f\u00fcphesiz ki daha sa\u011flam, g\u00fcvenli ve ba\u015far\u0131l\u0131 yaz\u0131l\u0131m projelerine d\u00f6n\u00fc\u015fecektir. Gelecek ad\u0131mlar\u0131n\u0131zda, SonarQube&#8217;un zengin \u00f6zellik setini daha derinlemesine incelemeniz ve projenizin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re \u00f6zelle\u015ftirmeniz \u00f6nerilir.<\/p>\n<p>#SonarQube #Ubuntu #KodKalitesi #DevOps #Yaz\u0131l\u0131mGeli\u015ftirme<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/python-code-quality-smells-example\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/python-code-quality-smells-example<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde kod kalitesi, projelerin ba\u015far\u0131s\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in kritik bir \u00f6neme sahiptir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-44347","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde kod kalitesi, projelerin ba\u015far\u0131s\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in kritik bir \u00f6neme sahiptir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-26T18:09:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-26T18:09:52+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131\",\"datePublished\":\"2026-08-26T18:09:26+00:00\",\"dateModified\":\"2026-08-26T18:09:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\"},\"wordCount\":3728,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\",\"name\":\"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-26T18:09:26+00:00\",\"dateModified\":\"2026-08-26T18:09:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131","og_description":"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde kod kalitesi, projelerin ba\u015far\u0131s\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in kritik bir \u00f6neme sahiptir.","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-26T18:09:26+00:00","article_modified_time":"2026-08-26T18:09:52+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131","datePublished":"2026-08-26T18:09:26+00:00","dateModified":"2026-08-26T18:09:52+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/"},"wordCount":3728,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/","name":"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-26T18:09:26+00:00","dateModified":"2026-08-26T18:09:52+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-24-04-uzerine-sonarqube-kurulumu-kod-kalitesini-artirmanin-anahtari\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 24.04 \u00dczerine SonarQube Kurulumu: Kod Kalitesini Art\u0131rman\u0131n Anahtar\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=44347"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44347\/revisions"}],"predecessor-version":[{"id":44348,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44347\/revisions\/44348"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}