{"id":31500,"date":"2025-10-10T16:41:21","date_gmt":"2025-10-10T13:41:21","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31500"},"modified":"2025-10-10T16:41:21","modified_gmt":"2025-10-10T13:41:21","slug":"discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/","title":{"rendered":"Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>\u0130nternet d\u00fcnyas\u0131nda topluluk olu\u015fturma ve bilgi payla\u015f\u0131m\u0131, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Forumlar, bu ihtiyac\u0131 kar\u015f\u0131lamak i\u00e7in uzun y\u0131llard\u0131r kullan\u0131lan geleneksel y\u00f6ntemlerden biridir. Ancak modern web uygulamalar\u0131n\u0131n getirdi\u011fi dinamizm, kullan\u0131m kolayl\u0131\u011f\u0131 ve performans beklentileri, yeni nesil forum yaz\u0131l\u0131mlar\u0131n\u0131 ortaya \u00e7\u0131karm\u0131\u015ft\u0131r. Discourse, bu yeni nesil forum platformlar\u0131n\u0131n \u00f6nde gelen temsilcilerinden biridir. A\u00e7\u0131k kaynakl\u0131, modern, mobil uyumlu ve zengin \u00f6zelliklere sahip Discourse, Ruby on Rails tabanl\u0131 olup, Docker konteynerizasyon teknolojisi sayesinde kolayca kurulabilir ve y\u00f6netilebilir.<\/p>\n<p>Bu makalede, Discourse&#8217;u Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde Nginx web sunucusu arkas\u0131nda nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m detayl\u0131 bir \u015fekilde anlataca\u011f\u0131z. Ubuntu 14.04, eski bir s\u00fcr\u00fcm olmas\u0131na ra\u011fmen, baz\u0131 kurumsal veya \u00f6zel projelerde hala kullan\u0131l\u0131yor olabilir. Bu nedenle, bu \u00f6zel s\u00fcr\u00fcme y\u00f6nelik kurulum ad\u0131mlar\u0131n\u0131 ele almak, ilgili kullan\u0131c\u0131lar i\u00e7in de\u011ferli bir kaynak olacakt\u0131r. Nginx&#8217;i bir ters proxy (reverse proxy) olarak kullanarak, Discourse uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131rabilir, g\u00fcvenlik katmanlar\u0131 ekleyebilir ve ayn\u0131 sunucu \u00fczerinde ba\u015fka web uygulamalar\u0131 \u00e7al\u0131\u015ft\u0131rma esnekli\u011fine sahip olabilirsiniz. Ayr\u0131ca, Let&#8217;s Encrypt ile \u00fccretsiz SSL\/TLS sertifikas\u0131 yap\u0131land\u0131rmas\u0131n\u0131 da bu rehberin kapsam\u0131na dahil ederek, Discourse kurulumunuzu g\u00fcvenli hale getirece\u011fiz.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Discourse kurulumuna ba\u015flamadan \u00f6nce, sunucunuzun belirli gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan ve gerekli \u00f6n haz\u0131rl\u0131klar\u0131n yap\u0131ld\u0131\u011f\u0131ndan emin olman\u0131z \u00f6nemlidir. Bu b\u00f6l\u00fcm, kurulum s\u00fcrecinin sorunsuz ilerlemesi i\u00e7in temel gereksinimleri ve \u00f6n ad\u0131mlar\u0131 ele almaktad\u0131r.<\/p>\n<h4>Donan\u0131m Gereksinimleri<\/h4>\n<p>Discourse, kaynak yo\u011fun bir uygulama olabilir, \u00f6zellikle b\u00fcy\u00fck topluluklar i\u00e7in. Minimum gereksinimler \u015funlard\u0131r:<br \/>\n*   <strong>\u0130\u015flemci (CPU):<\/strong> En az 1 \u00e7ekirdekli bir i\u015flemci, ancak 2 veya daha fazla \u00e7ekirdekli bir i\u015flemci performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<br \/>\n*   <strong>Bellek (RAM):<\/strong> En az 1 GB RAM, ancak 2 GB veya daha fazlas\u0131 \u00f6nerilir. \u00d6zellikle Discourse&#8217;u yeniden olu\u015ftururken (rebuild) yeterli bellek kritik \u00f6neme sahiptir.<br \/>\n*   <strong>Disk Alan\u0131:<\/strong> En az 10 GB bo\u015f disk alan\u0131, ancak 25 GB veya daha fazlas\u0131 \u00f6nerilir. Veritaban\u0131 ve Docker imajlar\u0131 zamanla disk alan\u0131 t\u00fcketir. SSD diskler, performans a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantaj sa\u011flar.<\/p>\n<h4>Yaz\u0131l\u0131m Gereksinimleri<\/h4>\n<p>*   <strong>Ubuntu 14.04:<\/strong> Rehberimiz bu i\u015fletim sistemi s\u00fcr\u00fcm\u00fcne odaklanm\u0131\u015ft\u0131r.<br \/>\n*   <strong>Docker:<\/strong> Discourse, Docker konteynerleri i\u00e7inde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in Docker Engine&#8217;in kurulu olmas\u0131 gerekmektedir. Ubuntu 14.04 i\u00e7in Docker kurulumu, daha yeni s\u00fcr\u00fcmlerden biraz farkl\u0131 olabilir ve bunu detayl\u0131ca ele alaca\u011f\u0131z.<br \/>\n*   <strong>Git:<\/strong> Discourse kaynak kodunu indirmek i\u00e7in gereklidir.<br \/>\n*   <strong>Nginx:<\/strong> Ters proxy olarak g\u00f6rev yapacak web sunucusu.<br \/>\n*   <strong>Certbot:<\/strong> Let&#8217;s Encrypt ile SSL sertifikalar\u0131n\u0131 almak ve y\u00f6netmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>Alan Ad\u0131 ve DNS Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Discourse&#8217;u bir alan ad\u0131 (domain name) \u00fczerinden eri\u015filebilir k\u0131lmak, profesyonel bir g\u00f6r\u00fcn\u00fcm ve SSL sertifikas\u0131 alabilmek i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n*   <strong>Bir Alan Ad\u0131:<\/strong> Kendi alan ad\u0131n\u0131z\u0131n olmas\u0131 gerekmektedir (\u00f6rn. <code>forum.example.com<\/code>).<br \/>\n*   <strong>DNS Kay\u0131tlar\u0131:<\/strong> Alan ad\u0131n\u0131z i\u00e7in A kayd\u0131 olu\u015fturarak, alan ad\u0131n\u0131z\u0131 sunucunuzun genel IP adresine y\u00f6nlendirmelisiniz. \u00d6rne\u011fin, <code>forum.example.com<\/code> adresini sunucunuzun IP adresine (\u00f6rn. <code>192.0.2.1<\/code>) i\u015faret eden bir A kayd\u0131 olu\u015fturmal\u0131s\u0131n\u0131z. DNS de\u011fi\u015fikliklerinin internet genelinde yay\u0131lmas\u0131 (propagation) biraz zaman alabilir (birka\u00e7 dakika ile 24 saat aras\u0131nda). Kuruluma ba\u015flamadan \u00f6nce bu kayd\u0131n etkinle\u015fti\u011finden emin olun.<\/p>\n<h3>Sistem G\u00fcncellemesi ve Temel Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h3>\n<p>Kuruluma ba\u015flamadan \u00f6nce, sisteminizin g\u00fcncel oldu\u011fundan ve gerekli temel ara\u00e7lar\u0131n y\u00fckl\u00fc oldu\u011fundan emin olmal\u0131y\u0131z.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Sunucunuza SSH ile ba\u011fland\u0131ktan sonra, paket listelerini g\u00fcncelleyin ve y\u00fckl\u00fc paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltin:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y\nsudo apt-get dist-upgrade -y<\/code><\/pre>\n<p>Bu komutlar, i\u015fletim sisteminizin g\u00fcvenlik yamalar\u0131n\u0131 ve yaz\u0131l\u0131m g\u00fcncellemelerini alman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Gerekli Ara\u00e7lar\u0131n Kurulumu<\/h4>\n<p>Discourse kurulumu ve Docker y\u00f6netimi i\u00e7in baz\u0131 temel ara\u00e7lara ihtiyac\u0131m\u0131z olacak. <code>git<\/code> ve <code>curl<\/code> bu ara\u00e7lar\u0131n ba\u015f\u0131nda gelir.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y git curl apt-transport-https ca-certificates<\/code><\/pre>\n<p>*   <code>git<\/code>: Discourse kaynak kodunu klonlamak i\u00e7in.<br \/>\n*   <code>curl<\/code>: Web \u00fczerinden dosya indirmek i\u00e7in.<br \/>\n*   <code>apt-transport-https<\/code>: HTTPS depolar\u0131ndan paket indirmek i\u00e7in.<br \/>\n*   <code>ca-certificates<\/code>: SSL\/TLS sertifikalar\u0131n\u0131 do\u011frulamak i\u00e7in.<\/p>\n<h3>Discourse&#8217;un Kurulumu<\/h3>\n<p>Discourse, Docker konteynerleri i\u00e7inde \u00e7al\u0131\u015facak \u015fekilde tasarlanm\u0131\u015ft\u0131r. Bu b\u00f6l\u00fcm, Docker&#8217;\u0131n kurulumunu ve Discourse uygulamas\u0131n\u0131n yap\u0131land\u0131r\u0131l\u0131p ba\u015flat\u0131lmas\u0131n\u0131 kapsar.<\/p>\n<h4>Docker&#8217;\u0131n Kurulumu<\/h4>\n<p>Ubuntu 14.04 i\u00e7in Docker kurulumu, daha yeni Ubuntu s\u00fcr\u00fcmlerinden biraz farkl\u0131l\u0131k g\u00f6sterebilir. Docker&#8217;\u0131n eski s\u00fcr\u00fcmleri, genellikle <code>docker.io<\/code> paketi olarak bulunur. Ancak biz, daha g\u00fcncel Docker CE (Community Edition) s\u00fcr\u00fcm\u00fcn\u00fc kurmaya \u00e7al\u0131\u015faca\u011f\u0131z, bu da biraz daha fazla ad\u0131m gerektirebilir.<\/p>\n<h5>Docker Depolar\u0131n\u0131n Eklenmesi<\/h5>\n<p>Docker&#8217;\u0131n resmi GPG anahtar\u0131n\u0131 ekleyin:<\/p>\n<pre><code class=\"language-bash\">curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -<\/code><\/pre>\n<p>Ard\u0131ndan, Docker APT deposunu sisteminize ekleyin. Ubuntu 14.04 i\u00e7in <code>trusty<\/code> kod ad\u0131n\u0131 kullanmal\u0131y\u0131z:<\/p>\n<pre><code class=\"language-bash\">echo \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu trusty stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list<\/code><\/pre>\n<p>Depoyu ekledikten sonra, paket listesini tekrar g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update<\/code><\/pre>\n<h5>Docker CE Kurulumu<\/h5>\n<p>\u015eimdi Docker CE&#8217;yi kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<p>E\u011fer <code>docker-ce<\/code> paketi bulunamazsa, bu Ubuntu 14.04&#8217;\u00fcn \u00e7ok eski olmas\u0131ndan kaynaklanabilir. Bu durumda, alternatif olarak <code>docker.io<\/code> paketini kurmay\u0131 deneyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y docker.io<\/code><\/pre>\n<p>Ve ard\u0131ndan <code>docker<\/code> komutunun <code>docker.io<\/code> olarak \u00e7al\u0131\u015fmas\u0131 i\u00e7in bir sembolik link olu\u015fturun veya kullan\u0131c\u0131 grubuna ekleyin:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/usr\/bin\/docker.io \/usr\/local\/bin\/docker\nsudo usermod -aG docker $USER # Mevcut kullan\u0131c\u0131y\u0131 docker grubuna ekler<\/code><\/pre>\n<p>Bu rehberde, <code>docker.io<\/code> yerine Docker CE&#8217;yi kurmaya odaklanaca\u011f\u0131z, \u00e7\u00fcnk\u00fc Discourse en iyi modern Docker s\u00fcr\u00fcmleriyle \u00e7al\u0131\u015f\u0131r. E\u011fer <code>docker-ce<\/code> kurulumu s\u0131ras\u0131nda ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131 ya\u015farsan\u0131z, Ubuntu 14.04&#8217;\u00fcn ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn sona erdi\u011fini ve modern Docker s\u00fcr\u00fcmleriyle tam uyumlu olmad\u0131\u011f\u0131n\u0131 unutmay\u0131n. Bu durumda, daha yeni bir Ubuntu s\u00fcr\u00fcm\u00fcne ge\u00e7mek en iyi \u00e7\u00f6z\u00fcm olacakt\u0131r. Ancak varsayal\u0131m ki <code>docker-ce<\/code> kurulumu ba\u015far\u0131l\u0131 oldu.<\/p>\n<h5>Docker Servisinin Kontrol\u00fc<\/h5>\n<p>Docker servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status docker # Veya Ubuntu 14.04'te upstart kullan\u0131l\u0131yorsa: sudo service docker status<\/code><\/pre>\n<p>E\u011fer <code>systemctl<\/code> komutu bulunamazsa, Ubuntu 14.04&#8217;te <code>init<\/code> veya <code>upstart<\/code> kullan\u0131ld\u0131\u011f\u0131 i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service docker start\nsudo service docker status<\/code><\/pre>\n<p>Ayr\u0131ca, Docker&#8217;\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test etmek i\u00e7in <code>hello-world<\/code> konteynerini \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo docker run hello-world<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131 olarak bir &#8220;Hello from Docker!&#8221; mesaj\u0131 g\u00f6r\u00fcrseniz, Docker ba\u015far\u0131yla kurulmu\u015f demektir.<\/p>\n<h4>Discourse Dosyalar\u0131n\u0131n \u0130ndirilmesi ve Yap\u0131land\u0131r\u0131lmas\u0131<\/h4>\n<p>Discourse kurulum dosyalar\u0131n\u0131 bir <code>discourse<\/code> dizinine klonlayaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/var\/discourse\nsudo git clone https:\/\/github.com\/discourse\/discourse_docker.git \/var\/discourse\ncd \/var\/discourse<\/code><\/pre>\n<h5><code>app.yml<\/code> Dosyas\u0131n\u0131n D\u00fczenlenmesi<\/h5>\n<p>Discourse, ana yap\u0131land\u0131rma dosyas\u0131n\u0131 <code>containers\/app.yml<\/code> i\u00e7inde tutar. Bu dosyay\u0131 kopyalayarak kendi yap\u0131land\u0131rmam\u0131z\u0131 olu\u015fturaca\u011f\u0131z ve d\u00fczenleyece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">sudo cp samples\/standalone.yml containers\/app.yml\nsudo nano containers\/app.yml<\/code><\/pre>\n<p><code>app.yml<\/code> dosyas\u0131nda a\u015fa\u011f\u0131daki alanlar\u0131 bulup d\u00fczenlemelisiniz:<\/p>\n<p>*   <strong>E-posta Ayarlar\u0131:<\/strong> Discourse&#8217;un e-posta g\u00f6ndermesi i\u00e7in bir SMTP sunucusuna ihtiyac\u0131 vard\u0131r. Bu ayarlar genellikle <code>DISCOURSE_SMTP_ADDRESS<\/code>, <code>DISCOURSE_SMTP_PORT<\/code>, <code>DISCOURSE_SMTP_USER_NAME<\/code>, <code>DISCOURSE_SMTP_PASSWORD<\/code>, <code>DISCOURSE_SMTP_ENABLE_STARTTLS<\/code> ve <code>DISCOURSE_NOTIFICATION_EMAIL<\/code> gibi de\u011fi\u015fkenleri i\u00e7erir. Kendi SMTP sunucunuzun (\u00f6rne\u011fin, SendGrid, Mailgun, Gmail) bilgilerini buraya girin.<\/p>\n<pre><code class=\"language-yaml\"># - \"DISCOURSE_SMTP_ADDRESS=smtp.example.com\"\n    # - \"DISCOURSE_SMTP_PORT=587\"\n    # - \"DISCOURSE_SMTP_USER_NAME=user@example.com\"\n    # - \"DISCOURSE_SMTP_PASSWORD=your_smtp_password\"\n    # - \"DISCOURSE_SMTP_ENABLE_STARTTLS=true\" # (optional, default true)\n    # - \"DISCOURSE_NOTIFICATION_EMAIL=noreply@forum.example.com\"<\/code><\/pre>\n<p>    Yorum sat\u0131rlar\u0131n\u0131 kald\u0131r\u0131n ve kendi bilgilerinizle doldurun.<\/p>\n<p>*   <strong>Alan Ad\u0131 Ayarlar\u0131:<\/strong> Discourse&#8217;un hangi alan ad\u0131 \u00fczerinden eri\u015filece\u011fini belirtir.<\/p>\n<pre><code class=\"language-yaml\"># - \"DISCOURSE_HOSTNAME=forum.example.com\"<\/code><\/pre>\n<p>    Bu sat\u0131r\u0131 yorumdan \u00e7\u0131kar\u0131n ve <code>forum.example.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 yaz\u0131n.<\/p>\n<p>*   <strong>Y\u00f6netici E-postalar\u0131:<\/strong> Kurulumdan sonra ilk y\u00f6netici hesab\u0131n\u0131 olu\u015fturmak i\u00e7in kullan\u0131lacak e-posta adreslerini belirtin.<\/p>\n<pre><code class=\"language-yaml\"># - \"DISCOURSE_DEVELOPER_EMAILS=admin@example.com\"<\/code><\/pre>\n<p>    Bu sat\u0131r\u0131 yorumdan \u00e7\u0131kar\u0131n ve kendi e-posta adresinizi yaz\u0131n. Virg\u00fclle birden fazla adres ekleyebilirsiniz.<\/p>\n<p>*   <strong>Nginx Proxy Ayarlar\u0131 \u0130\u00e7in Haz\u0131rl\u0131k (Port Mapping):<\/strong><br \/>\n    Discourse&#8217;un Docker konteyneri i\u00e7inde 80 numaral\u0131 portta \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 varsay\u0131yoruz. Ancak Nginx de sunucunun 80 ve 443 numaral\u0131 portlar\u0131n\u0131 kullanaca\u011f\u0131 i\u00e7in, Discourse konteynerinin d\u0131\u015far\u0131ya farkl\u0131 bir port \u00fczerinden eri\u015fmesini sa\u011flamal\u0131y\u0131z. <code>app.yml<\/code> dosyas\u0131nda <code>expose<\/code> b\u00f6l\u00fcm\u00fcn\u00fc bulun ve a\u015fa\u011f\u0131daki gibi d\u00fczenleyin:<\/p>\n<pre><code class=\"language-yaml\">expose:\n      - \"4000:80\"   # Discourse'u host makinede 4000 portuna bind eder.<\/code><\/pre>\n<p>    Bu ayar, Docker konteyneri i\u00e7indeki 80 numaral\u0131 portu, sunucunun 4000 numaral\u0131 portuna y\u00f6nlendirecektir. Nginx daha sonra bu 4000 numaral\u0131 porta proxy yapacakt\u0131r. E\u011fer <code>expose<\/code> b\u00f6l\u00fcm\u00fc yoksa, kendiniz ekleyin.<\/p>\n<p>*   <strong>Let&#8217;s Encrypt Ayarlar\u0131 (Devre D\u0131\u015f\u0131 B\u0131rakma):<\/strong><br \/>\n    Nginx SSL&#8217;i y\u00f6netece\u011finden, Discourse&#8217;un kendi Let&#8217;s Encrypt entegrasyonunu devre d\u0131\u015f\u0131 b\u0131rakmal\u0131y\u0131z. <code>LETSENCRYPT_ACCOUNT_EMAIL<\/code> ve <code>LETSENCRYPT_DOMAIN<\/code> sat\u0131rlar\u0131n\u0131 yorum sat\u0131r\u0131 yaparak veya tamamen silerek pasif hale getirin.<\/p>\n<pre><code class=\"language-yaml\"># - \"LETSENCRYPT_ACCOUNT_EMAIL=you@example.com\"\n    # - \"LETSENCRYPT_DOMAIN=forum.example.com\"<\/code><\/pre>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n (<code>Ctrl+X<\/code>, <code>Y<\/code>, <code>Enter<\/code>).<\/p>\n<h4>Discourse Kurulum Komut Dosyas\u0131n\u0131n \u00c7al\u0131\u015ft\u0131r\u0131lmas\u0131<\/h4>\n<p>T\u00fcm ayarlar\u0131 yapt\u0131ktan sonra, Discourse kurulum komut dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rarak uygulamay\u0131 olu\u015fturabilir ve ba\u015flatabiliriz. Bu i\u015flem biraz zaman alabilir (10-30 dakika), \u00e7\u00fcnk\u00fc Docker imajlar\u0131n\u0131 indirir, veritaban\u0131n\u0131 kurar ve Discourse uygulamas\u0131n\u0131 derler.<\/p>\n<pre><code class=\"language-bash\">sudo .\/bin\/setup<\/code><\/pre>\n<p>Bu komut, Discourse uygulamas\u0131n\u0131 yap\u0131land\u0131r\u0131r ve ba\u015flat\u0131r. \u0130lk \u00e7al\u0131\u015ft\u0131rmada, gerekli Docker imajlar\u0131n\u0131 indirecek ve Discourse&#8217;u kuracakt\u0131r. \u0130\u015flem tamamland\u0131\u011f\u0131nda, terminalde ba\u015far\u0131l\u0131 bir mesaj g\u00f6rmelisiniz.<\/p>\n<p>Kurulum tamamland\u0131ktan sonra, Discourse uygulaman\u0131z sunucunuzun 4000 numaral\u0131 portunda \u00e7al\u0131\u015f\u0131yor olacakt\u0131r. Hen\u00fcz taray\u0131c\u0131n\u0131zdan eri\u015femeyeceksiniz, \u00e7\u00fcnk\u00fc Nginx&#8217;i kurup yap\u0131land\u0131rmad\u0131k.<\/p>\n<h3>Nginx&#8217;in Kurulumu ve Yap\u0131land\u0131r\u0131lmas\u0131<\/h3>\n<p>Nginx, Discourse&#8217;un \u00f6n\u00fcnde bir ters proxy g\u00f6revi g\u00f6recek, gelen istekleri y\u00f6netecek ve Discourse konteynerine iletecektir. Ayr\u0131ca SSL sonland\u0131rmay\u0131 da Nginx yapacak.<\/p>\n<h4>Nginx&#8217;in Kurulumu<\/h4>\n<p>Nginx paketini Ubuntu 14.04 \u00fczerine kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y nginx<\/code><\/pre>\n<h5>Nginx Servisinin Kontrol\u00fc<\/h5>\n<p>Nginx servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx start\nsudo service nginx status<\/code><\/pre>\n<p>Taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresine gitti\u011finizde Nginx&#8217;in varsay\u0131lan &#8220;Welcome to Nginx!&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Nginx Proxy Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Discourse i\u00e7in yeni bir Nginx sanal host dosyas\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<h5>Yeni Bir Sanal Host Dosyas\u0131 Olu\u015fturma<\/h5>\n<p>Nginx yap\u0131land\u0131rma dosyalar\u0131 <code>\/etc\/nginx\/sites-available\/<\/code> dizininde bulunur. Yeni bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/discourse<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 dosyaya yap\u0131\u015ft\u0131r\u0131n. <code>forum.example.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 yazmay\u0131 unutmay\u0131n. Bu yap\u0131land\u0131rma, HTTP isteklerini HTTPS&#8217;ye y\u00f6nlendirecek ve HTTPS isteklerini Discourse&#8217;un \u00e7al\u0131\u015ft\u0131\u011f\u0131 4000 numaral\u0131 porta proxy edecektir.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name forum.example.com;\n\n    # HTTP isteklerini HTTPS'ye y\u00f6nlendir\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n    server_name forum.example.com;\n\n    # SSL Ayarlar\u0131 - Certbot taraf\u0131ndan g\u00fcncellenecek\n    # ssl_certificate \/etc\/letsencrypt\/live\/forum.example.com\/fullchain.pem;\n    # ssl_certificate_key \/etc\/letsencrypt\/live\/forum.example.com\/privkey.pem;\n    # include \/etc\/letsencrypt\/options-ssl-nginx.conf;\n    # ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem;\n\n    # G\u00fcvenlik ba\u015fl\u0131klar\u0131 (iste\u011fe ba\u011fl\u0131 ama \u00f6nerilir)\n    add_header X-Frame-Options \"SAMEORIGIN\";\n    add_header X-XSS-Protection \"1; mode=block\";\n    add_header X-Content-Type-Options \"nosniff\";\n    add_header Referrer-Policy \"no-referrer-when-downgrade\";\n    add_header Content-Security-Policy \"frame-ancestors 'self'\";\n\n    # Discourse'a proxy yap\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:4000; # Discourse'un \u00e7al\u0131\u015ft\u0131\u011f\u0131 port\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_http_version 1.1;\n        proxy_buffering off;\n        proxy_redirect off;\n        proxy_read_timeout 900; # Uzun s\u00fcreli ba\u011flant\u0131lar i\u00e7in\n        proxy_send_timeout 900; # Uzun s\u00fcreli ba\u011flant\u0131lar i\u00e7in\n\n        # WebSocket deste\u011fi i\u00e7in\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"Upgrade\";\n    }\n\n    # Statik dosyalar i\u00e7in (iste\u011fe ba\u011fl\u0131, Discourse'un kendi Nginx'i halleder)\n    # location ~* \\.(js|css|png|jpg|jpeg|gif|ico|svg|eot|otf|ttf|woff|woff2)$ {\n    #     expires max;\n    #     log_not_found off;\n    #     add_header Cache-Control \"public\";\n    # }\n}<\/code><\/pre>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h5>Yap\u0131land\u0131rman\u0131n Etkinle\u015ftirilmesi<\/h5>\n<p>Yeni yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in, <code>sites-enabled<\/code> dizinine bir sembolik link olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/discourse \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>Varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n, \u00e7\u00fcnk\u00fc kendi yap\u0131land\u0131rmam\u0131z \u00e7ak\u0131\u015fabilir:<\/p>\n<pre><code class=\"language-bash\">sudo rm \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<h5>Nginx&#8217;i Yeniden Ba\u015flatma<\/h5>\n<p>Nginx yap\u0131land\u0131rmas\u0131n\u0131n s\u00f6zdizimini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p>E\u011fer &#8220;syntax is ok&#8221; ve &#8220;test is successful&#8221; mesajlar\u0131n\u0131 g\u00f6r\u00fcrseniz, Nginx&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx restart<\/code><\/pre>\n<p>Bu noktada, taray\u0131c\u0131n\u0131zdan <code>http:\/\/forum.example.com<\/code> adresine gitmeyi denedi\u011finizde, Nginx&#8217;in HTTP iste\u011fini al\u0131p Discourse&#8217;un 4000 numaral\u0131 portuna y\u00f6nlendirmesi gerekir. Ancak hen\u00fcz SSL sertifikam\u0131z olmad\u0131\u011f\u0131 i\u00e7in HTTPS&#8217;ye otomatik y\u00f6nlendirme \u00e7al\u0131\u015fmayacak ve muhtemelen bir hata alacaks\u0131n\u0131z. Bu normaldir.<\/p>\n<h4>SSL\/TLS \u015eifrelemesinin Yap\u0131land\u0131r\u0131lmas\u0131 (Let&#8217;s Encrypt ile)<\/h4>\n<p>Web sitenizi g\u00fcvenli hale getirmek i\u00e7in Let&#8217;s Encrypt&#8217;ten \u00fccretsiz SSL\/TLS sertifikalar\u0131 alaca\u011f\u0131z. Certbot arac\u0131 bu s\u00fcreci otomatikle\u015ftirir.<\/p>\n<h5>Certbot Kurulumu<\/h5>\n<p>Ubuntu 14.04 i\u00e7in Certbot kurulumu, PPA (Personal Package Archive) eklemeyi gerektirir.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y software-properties-common\nsudo add-apt-repository ppa:certbot\/certbot -y\nsudo apt-get update\nsudo apt-get install -y certbot python-certbot-nginx<\/code><\/pre>\n<h5>SSL Sertifikas\u0131n\u0131n Al\u0131nmas\u0131<\/h5>\n<p>Certbot&#8217;u Nginx eklentisiyle \u00e7al\u0131\u015ft\u0131rarak sertifikay\u0131 al\u0131n ve Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d forum.example.com<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Certbot sizden baz\u0131 bilgiler isteyecektir:<br \/>\n1.  Bir e-posta adresi (acil durumlar ve bildirimler i\u00e7in).<br \/>\n2.  Let&#8217;s Encrypt hizmet \u015fartlar\u0131n\u0131 kabul etmenizi.<br \/>\n3.  E-posta adresinizi EFF (Electronic Frontier Foundation) ile payla\u015fmak isteyip istemedi\u011finizi.<\/p>\n<p>Certbot, Nginx yap\u0131land\u0131rman\u0131z\u0131 analiz edecek ve sertifikay\u0131 al\u0131p otomatik olarak yap\u0131land\u0131rma dosyan\u0131za ekleyecektir. \u0130\u015flem tamamland\u0131\u011f\u0131nda, HTTP trafi\u011fini otomatik olarak HTTPS&#8217;ye y\u00f6nlendirmek isteyip istemedi\u011finizi soracakt\u0131r. &#8220;Redirect&#8221; se\u00e7ene\u011fini se\u00e7in (genellikle 2).<\/p>\n<p>Ba\u015far\u0131l\u0131 bir kurulumdan sonra, Nginx yap\u0131land\u0131rma dosyan\u0131z (<code>\/etc\/nginx\/sites-available\/discourse<\/code>) a\u015fa\u011f\u0131daki gibi g\u00fcncellenmi\u015f olacakt\u0131r (Certbot&#8217;un ekledi\u011fi sat\u0131rlar):<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name forum.example.com;\n\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n    server_name forum.example.com;\n\n    ssl_certificate \/etc\/letsencrypt\/live\/forum.example.com\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/forum.example.com\/privkey.pem;\n    include \/etc\/letsencrypt\/options-ssl-nginx.conf;\n    ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem;\n\n    # ... di\u011fer proxy ve header ayarlar\u0131 ...\n}<\/code><\/pre>\n<h5>Otomatik Yenileme Ayar\u0131<\/h5>\n<p>Let&#8217;s Encrypt sertifikalar\u0131 90 g\u00fcn ge\u00e7erlidir. Certbot, bu sertifikalar\u0131 otomatik olarak yenilemek i\u00e7in bir cron job veya systemd timer ayarlar. Yenileme i\u015fleminin d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo certbot renew --dry-run<\/code><\/pre>\n<p>E\u011fer bu komut hatas\u0131z \u00e7al\u0131\u015f\u0131rsa, sertifikalar\u0131n\u0131z\u0131n otomatik olarak yenilenece\u011finden emin olabilirsiniz.<\/p>\n<p>Art\u0131k taray\u0131c\u0131n\u0131zdan <code>https:\/\/forum.example.com<\/code> adresine gitti\u011finizde, Discourse uygulaman\u0131z\u0131n Nginx ve SSL ile g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz. \u0130lk eri\u015fimde, Discourse sizi y\u00f6netici hesab\u0131 olu\u015fturma ekran\u0131na y\u00f6nlendirecektir.<\/p>\n<h3>Discourse&#8217;u Nginx ile Entegre Etme<\/h3>\n<p>Bu b\u00f6l\u00fcmde, Nginx&#8217;in Discourse ile sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in Discourse&#8217;un kendi yap\u0131land\u0131rmas\u0131nda yap\u0131lmas\u0131 gereken son ayarlamalar\u0131 ve entegrasyonun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h4>Discourse Yap\u0131land\u0131rmas\u0131n\u0131n Nginx&#8217;e Uyarlanmas\u0131<\/h4>\n<p>Asl\u0131nda, <code>app.yml<\/code> dosyas\u0131nda yapt\u0131\u011f\u0131m\u0131z <code>expose: - \"4000:80\"<\/code> ayar\u0131 ve <code>LETSENCRYPT<\/code> ayarlar\u0131n\u0131 pasifize etmemiz, Discourse&#8217;un Nginx arkas\u0131nda \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken temel uyarlamalard\u0131r. Discourse konteyneri 80 numaral\u0131 portta dahili olarak \u00e7al\u0131\u015f\u0131r ve biz bu portu ana makinenin 4000 numaral\u0131 portuna y\u00f6nlendirdik. Nginx de bu 4000 numaral\u0131 porta proxy yap\u0131yor. Bu sayede Nginx, t\u00fcm gelen HTTP\/HTTPS trafi\u011fini y\u00f6netirken, Discourse sadece kendisine y\u00f6nlendirilen istekleri i\u015fler.<\/p>\n<p>Discourse&#8217;un <code>DISCOURSE_HOSTNAME<\/code> ayar\u0131 da Nginx \u00fczerinden eri\u015filecek alan ad\u0131yla e\u015fle\u015fti\u011fi i\u00e7in, Discourse i\u00e7indeki URL&#8217;ler ve y\u00f6nlendirmeler do\u011fru \u015fekilde \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<h4>Discourse&#8217;un Nginx Arac\u0131l\u0131\u011f\u0131yla Eri\u015filebilir Hale Getirilmesi<\/h4>\n<p>1.  <strong>Gelen \u0130stek:<\/strong> Bir kullan\u0131c\u0131 taray\u0131c\u0131s\u0131na <code>https:\/\/forum.example.com<\/code> yazar.<br \/>\n2.  <strong>DNS \u00c7\u00f6z\u00fcmlemesi:<\/strong> DNS, <code>forum.example.com<\/code> adresini sunucunuzun IP adresine \u00e7evirir.<br \/>\n3.  <strong>Nginx Dinleme:<\/strong> Nginx, sunucunun 443 numaral\u0131 portundaki HTTPS iste\u011fini yakalar.<br \/>\n4.  <strong>SSL Sonland\u0131rma:<\/strong> Nginx, Certbot ile al\u0131nan SSL sertifikas\u0131n\u0131 kullanarak HTTPS trafi\u011fini \u015fifresini \u00e7\u00f6zer.<br \/>\n5.  <strong>Proxy Y\u00f6nlendirme:<\/strong> Nginx, \u015fifresi \u00e7\u00f6z\u00fclm\u00fc\u015f iste\u011fi <code>proxy_pass http:\/\/127.0.0.1:4000;<\/code> y\u00f6nergesi sayesinde sunucunun 4000 numaral\u0131 portuna y\u00f6nlendirir.<br \/>\n6.  <strong>Docker Port Y\u00f6nlendirmesi:<\/strong> Sunucunun 4000 numaral\u0131 portuna gelen istek, Docker taraf\u0131ndan Discourse konteynerinin dahili 80 numaral\u0131 portuna y\u00f6nlendirilir (<code>expose: - \"4000:80\"<\/code>).<br \/>\n7.  <strong>Discourse \u0130\u015fleme:<\/strong> Discourse uygulamas\u0131 iste\u011fi i\u015fler ve yan\u0131t\u0131 ayn\u0131 ters yoldan geri g\u00f6nderir.<\/p>\n<p>Bu ak\u0131\u015f, Nginx&#8217;in bir g\u00fcvenlik katman\u0131, y\u00fck dengeleyici ve SSL sonland\u0131r\u0131c\u0131 olarak nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve bunlar\u0131n \u00e7\u00f6z\u00fcmleri a\u015fa\u011f\u0131da listelenmi\u015ftir.<\/p>\n<h4>Port \u00c7ak\u0131\u015fmalar\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> Nginx veya Discourse konteyneri, zaten kullan\u0131mda olan bir portu kullanmaya \u00e7al\u0131\u015f\u0131yor. \u00d6rne\u011fin, Nginx 80 ve 443&#8217;\u00fc kullan\u0131rken, Discourse&#8217;u da do\u011frudan 80&#8217;e ba\u011flamaya \u00e7al\u0131\u015fmak.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>app.yml<\/code> dosyas\u0131ndaki <code>expose<\/code> ayar\u0131n\u0131 kontrol edin. Discourse&#8217;u Nginx&#8217;in kullanmad\u0131\u011f\u0131 y\u00fcksek bir porta (\u00f6rn. 4000, 8080) ba\u011flad\u0131\u011f\u0131n\u0131zdan emin olun. Nginx yap\u0131land\u0131rman\u0131zda da <code>proxy_pass<\/code> y\u00f6nergesinin bu do\u011fru porta i\u015faret etti\u011finden emin olun.<\/p>\n<h4>Nginx Yap\u0131land\u0131rma Hatalar\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> Nginx ba\u015flam\u0131yor veya siteniz eri\u015filemiyor. Genellikle yanl\u0131\u015f bir s\u00f6zdizimi veya eksik bir noktal\u0131 virg\u00fcl (<code>;<\/code>) neden olur.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>sudo nginx -t<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak Nginx yap\u0131land\u0131rma dosyan\u0131zdaki s\u00f6zdizimi hatalar\u0131n\u0131 kontrol edin. Hata mesajlar\u0131n\u0131 dikkatlice okuyun ve belirtilen sat\u0131rlar\u0131 d\u00fczeltin. Ard\u0131ndan <code>sudo service nginx restart<\/code> ile Nginx&#8217;i yeniden ba\u015flat\u0131n.<\/p>\n<h4>SSL Hatalar\u0131 (Let&#8217;s Encrypt)<\/h4>\n<p>*   <strong>Sorun:<\/strong> Sertifika al\u0131nam\u0131yor veya taray\u0131c\u0131da &#8220;g\u00fcvenli ba\u011flant\u0131 de\u011fil&#8221; hatas\u0131 al\u0131n\u0131yor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <strong>DNS Kontrol\u00fc:<\/strong> Alan ad\u0131n\u0131z\u0131n A kayd\u0131n\u0131n do\u011fru IP adresine i\u015faret etti\u011finden ve DNS yay\u0131l\u0131m\u0131n\u0131n tamamland\u0131\u011f\u0131ndan emin olun. <code>dig forum.example.com<\/code> veya <code>ping forum.example.com<\/code> komutlar\u0131yla kontrol edebilirsiniz.<br \/>\n    *   <strong>Certbot Hatalar\u0131:<\/strong> Certbot komutunu \u00e7al\u0131\u015ft\u0131r\u0131rken hata mesajlar\u0131n\u0131 dikkatlice okuyun. Genellikle, alan ad\u0131n\u0131n do\u011frulanamamas\u0131 (DNS veya HTTP-01 challenge) sorunudur. Nginx&#8217;in 80 portunun d\u0131\u015far\u0131dan eri\u015filebilir oldu\u011fundan emin olun (g\u00fcvenlik duvar\u0131 ayarlar\u0131).<br \/>\n    *   <strong>Nginx Yap\u0131land\u0131rmas\u0131:<\/strong> Certbot&#8217;un Nginx yap\u0131land\u0131rman\u0131z\u0131 do\u011fru \u015fekilde g\u00fcncelledi\u011finden emin olun. <code>\/etc\/nginx\/sites-available\/discourse<\/code> dosyas\u0131ndaki <code>ssl_certificate<\/code> ve <code>ssl_certificate_key<\/code> yollar\u0131n\u0131 kontrol edin.<\/p>\n<h4>Discourse Yeniden Olu\u015fturma Hatalar\u0131 (<code>.\/bin\/setup<\/code> veya <code>launcher rebuild app<\/code>)<\/h4>\n<p>*   <strong>Sorun:<\/strong> Discourse kurulumu veya g\u00fcncellemesi s\u0131ras\u0131nda <code>launcher rebuild app<\/code> komutu tak\u0131l\u0131yor veya hata veriyor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <strong>Bellek Yetersizli\u011fi:<\/strong> En yayg\u0131n nedenlerden biridir. \u00d6zellikle 1 GB RAM&#8217;e sahip sunucularda bu sorun s\u0131k g\u00f6r\u00fcl\u00fcr. Sunucunuza daha fazla RAM eklemeyi veya bir swap dosyas\u0131 (takas alan\u0131) olu\u015fturmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Ubuntu 14.04 i\u00e7in 2GB veya 4GB bir swap dosyas\u0131 olu\u015fturmak faydal\u0131 olabilir:<\/p>\n<pre><code class=\"language-bash\">sudo fallocate -l 2G \/swapfile\n        sudo chmod 600 \/swapfile\n        sudo mkswap \/swapfile\n        sudo swapon \/swapfile\n        echo '\/swapfile none swap sw 0 0' | sudo tee -a \/etc\/fstab<\/code><\/pre>\n<p>    *   <strong>Disk Alan\u0131 Yetersizli\u011fi:<\/strong> <code>df -h<\/code> komutuyla disk kullan\u0131m\u0131n\u0131z\u0131 kontrol edin. Yetersiz alan varsa, gereksiz dosyalar\u0131 temizleyin veya disk alan\u0131n\u0131 geni\u015fletin.<br \/>\n    *   <strong>A\u011f Sorunlar\u0131:<\/strong> Docker imajlar\u0131n\u0131 veya ba\u011f\u0131ml\u0131l\u0131klar\u0131 indirirken a\u011f ba\u011flant\u0131s\u0131 sorunlar\u0131 ya\u015fanabilir. \u0130nternet ba\u011flant\u0131n\u0131z\u0131 kontrol edin.<br \/>\n    *   <strong><code>app.yml<\/code> Hatalar\u0131:<\/strong> Yap\u0131land\u0131rma dosyas\u0131ndaki hatal\u0131 bir ayar da rebuild i\u015flemini ba\u015far\u0131s\u0131z k\u0131labilir. T\u00fcm ayarlar\u0131n do\u011fru oldu\u011fundan emin olun.<\/p>\n<h4>E-posta G\u00f6nderme Sorunlar\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> Discourse e-posta g\u00f6nderemiyor (\u00f6rne\u011fin, kay\u0131t onay e-postalar\u0131 veya bildirimler gelmiyor).<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <strong><code>app.yml<\/code> SMTP Ayarlar\u0131:<\/strong> <code>app.yml<\/code> dosyas\u0131ndaki SMTP ayarlar\u0131n\u0131n (adres, port, kullan\u0131c\u0131 ad\u0131, \u015fifre) do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> Sunucunuzun g\u00fcvenlik duvar\u0131n\u0131n (UFW) SMTP portundan (genellikle 587 veya 465) giden ba\u011flant\u0131lara izin verdi\u011finden emin olun.<br \/>\n    *   <strong>SMTP Sa\u011flay\u0131c\u0131s\u0131:<\/strong> SMTP sa\u011flay\u0131c\u0131n\u0131z\u0131n (SendGrid, Mailgun vb.) ayarlar\u0131n\u0131 kontrol edin. Bazen sa\u011flay\u0131c\u0131 taraf\u0131nda IP k\u0131s\u0131tlamalar\u0131 veya API anahtar\u0131 sorunlar\u0131 olabilir.<br \/>\n    *   <strong>Discourse Loglar\u0131:<\/strong> Discourse y\u00f6netici panelindeki &#8220;Logs&#8221; b\u00f6l\u00fcm\u00fcn\u00fc kontrol edin. E-posta g\u00f6nderme hatalar\u0131 genellikle burada detayl\u0131ca listelenir.<\/p>\n<h4>Bellek Yetersizli\u011fi<\/h4>\n<p>*   <strong>Sorun:<\/strong> Sunucu yava\u015f \u00e7al\u0131\u015f\u0131yor, uygulamalar \u00e7\u00f6k\u00fcyor veya <code>launcher rebuild app<\/code> ba\u015far\u0131s\u0131z oluyor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Daha \u00f6nce belirtildi\u011fi gibi, \u00f6zellikle 1GB RAM&#8217;li sunucularda swap alan\u0131 olu\u015fturmak veya sunucunun RAM&#8217;ini art\u0131rmak bu sorunu b\u00fcy\u00fck \u00f6l\u00e7\u00fcde hafifletir. <code>free -h<\/code> komutuyla bellek ve swap kullan\u0131m\u0131n\u0131z\u0131 kontrol edebilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu detayl\u0131 rehberde, Discourse&#8217;u Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde Nginx ters proxy arkas\u0131nda nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Docker, Discourse ve Nginx gibi modern web teknolojilerini bir araya getirerek, g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir topluluk platformu olu\u015fturma s\u00fcrecini tamamlad\u0131n\u0131z. Ubuntu 14.04 gibi eski bir sistemde bile modern bir uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131n inceliklerini ve olas\u0131 zorluklar\u0131n\u0131 ele ald\u0131k.<\/p>\n<p>Kurulum s\u00fcrecinde sistem g\u00fcncellemesinden temel ba\u011f\u0131ml\u0131l\u0131klar\u0131n y\u00fcklenmesine, Docker&#8217;\u0131n \u00f6zel olarak Ubuntu 14.04&#8217;e kurulumundan Discourse&#8217;un yap\u0131land\u0131r\u0131lmas\u0131na kadar her ad\u0131m\u0131 titizlikle uygulad\u0131k. Nginx&#8217;i bir ters proxy olarak kurup yap\u0131land\u0131rd\u0131k ve Let&#8217;s Encrypt ile \u00fccretsiz SSL\/TLS sertifikalar\u0131 alarak Discourse kurulumunuzu HTTPS \u00fczerinden g\u00fcvenli hale getirdik. Son olarak, s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlar\u0131 ve \u00e7\u00f6z\u00fcmlerini ele alarak, kar\u015f\u0131la\u015fabilece\u011finiz potansiyel engelleri a\u015fman\u0131za yard\u0131mc\u0131 olduk.<\/p>\n<h4>\u0130leri Ad\u0131mlar<\/h4>\n<p>Kurulumu tamamlad\u0131ktan sonra, Discourse&#8217;unuzu daha da geli\u015ftirmek i\u00e7in atabilece\u011finiz baz\u0131 ileri ad\u0131mlar \u015funlard\u0131r:<br \/>\n*   <strong>Y\u00f6netici Panelini Ke\u015ffedin:<\/strong> Discourse&#8217;un zengin y\u00f6netici panelini kullanarak ayarlar\u0131 yap\u0131land\u0131r\u0131n, kategoriler olu\u015fturun, kullan\u0131c\u0131lar\u0131 y\u00f6netin ve temalar\u0131 \u00f6zelle\u015ftirin.<br \/>\n*   <strong>Eklentiler ve Temalar:<\/strong> Discourse, \u00e7e\u015fitli eklentiler ve temalarla geni\u015fletilebilir. Toplulu\u011funuzun ihtiya\u00e7lar\u0131na uygun eklentileri y\u00fckleyebilir ve g\u00f6rsel olarak \u00e7ekici temalar kullanabilirsiniz.<br \/>\n*   <strong>Yedekleme Stratejisi:<\/strong> Verilerinizin g\u00fcvenli\u011fi i\u00e7in d\u00fczenli yedekleme stratejisi olu\u015fturmak kritik \u00f6neme sahiptir. Discourse&#8217;un dahili yedekleme \u00f6zelliklerini veya Docker hacim yedekleme y\u00f6ntemlerini kullanabilirsiniz.<br \/>\n*   <strong>Performans Optimizasyonu:<\/strong> B\u00fcy\u00fck topluluklar i\u00e7in Nginx ayarlar\u0131n\u0131 daha da optimize edebilir, CDN (\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131) entegrasyonu d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131 (UFW):<\/strong> Sunucunuzda UFW (Uncomplicated Firewall) gibi bir g\u00fcvenlik duvar\u0131 etkinle\u015ftirerek sadece gerekli portlara (22 SSH, 80 HTTP, 443 HTTPS) d\u0131\u015far\u0131dan eri\u015fime izin verin.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH\n    sudo ufw allow 'Nginx Full'\n    sudo ufw enable<\/code><\/pre>\n<p>    Bu komutlar, SSH, HTTP ve HTTPS trafi\u011fine izin verir ve g\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirir.<\/p>\n<p>Bu rehberin, Discourse&#8217;u Nginx arkas\u0131nda Ubuntu 14.04 \u00fczerinde ba\u015far\u0131yla kurman\u0131z i\u00e7in kapsaml\u0131 bir kaynak olmas\u0131n\u0131 umuyoruz. \u0130yi forumlar!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi\nGiri\u015f\n\u0130nternet d\u00fcnyas\u0131nda topluluk olu\u015fturma ve bilgi payla\u015f\u0131m\u0131, web sitel","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-31500","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>Discourse&#039;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi - 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\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Discourse&#039;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi\" \/>\n<meta property=\"og:description\" content=\"Discourse&#039;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi Giri\u015f \u0130nternet d\u00fcnyas\u0131nda topluluk olu\u015fturma ve bilgi payla\u015f\u0131m\u0131, web sitel\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-10T13:41:21+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=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi\",\"datePublished\":\"2025-10-10T13:41:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\"},\"wordCount\":3276,\"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\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\",\"name\":\"Discourse'u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-10T13:41:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi\"}]},{\"@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":"Discourse'u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi - 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\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Discourse'u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi","og_description":"Discourse'u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi Giri\u015f \u0130nternet d\u00fcnyas\u0131nda topluluk olu\u015fturma ve bilgi payla\u015f\u0131m\u0131, web sitel","og_url":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-10T13:41:21+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi","datePublished":"2025-10-10T13:41:21+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/"},"wordCount":3276,"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\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/","name":"Discourse'u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-10T13:41:21+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/discourseu-nginx-arkasinda-ubuntu-14-04-uzerine-kurulum-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Discourse&#8217;u Nginx Arkas\u0131nda Ubuntu 14.04 \u00dczerine Kurulum Rehberi"}]},{"@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\/31500","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=31500"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31500\/revisions"}],"predecessor-version":[{"id":31501,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31500\/revisions\/31501"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}