{"id":35857,"date":"2025-12-04T19:40:51","date_gmt":"2025-12-04T16:40:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35857"},"modified":"2025-12-04T19:40:51","modified_gmt":"2025-12-04T16:40:51","slug":"digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/","title":{"rendered":"DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?"},"content":{"rendered":"<p><body><\/p>\n<h2>DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?<\/h2>\n<p>G\u00fcn\u00fcm\u00fczde web uygulamas\u0131 geli\u015ftirme, h\u0131z ve verimlilik gerektiren bir s\u00fcre\u00e7tir. Ruby on Rails (RoR), h\u0131zl\u0131 uygulama geli\u015ftirme (RAD) felsefesiyle \u00f6ne \u00e7\u0131kan, g\u00fc\u00e7l\u00fc ve esnek bir web \u00e7at\u0131s\u0131d\u0131r. Dijital altyap\u0131 sa\u011flay\u0131c\u0131lar\u0131 aras\u0131nda pop\u00fclerli\u011fini art\u0131ran DigitalOcean ise, kullan\u0131c\u0131 dostu aray\u00fcz\u00fc ve uygun fiyatl\u0131 &#8220;Droplet&#8221; (sanal sunucu) se\u00e7enekleriyle dikkat \u00e7ekmektedir. Bu makalede, DigitalOcean&#8217;\u0131n sundu\u011fu &#8220;1-Click Install&#8221; (Tek T\u0131kla Kurulum) \u00f6zelli\u011fini kullanarak Ruby on Rails uygulaman\u0131z\u0131 nas\u0131l kolayca devreye alabilece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz. Bu y\u00f6ntem, \u00f6zellikle sunucu yap\u0131land\u0131rmas\u0131 konusunda derinlemesine bilgi sahibi olmayan geli\u015ftiriciler i\u00e7in zaman kazand\u0131ran ve hata oran\u0131n\u0131 d\u00fc\u015f\u00fcren ideal bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<h3>Ruby on Rails ve DigitalOcean Neden Birlikte \u0130yi \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>Ruby on Rails, geli\u015ftiricilere web uygulamalar\u0131n\u0131 h\u0131zla olu\u015fturmalar\u0131 i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lar ve bir yap\u0131 sunar. Model-View-Controller (MVC) mimarisi, DRY (Don&#8217;t Repeat Yourself) prensibi ve Convention Over Configuration (Yap\u0131land\u0131rma \u00dczerine Anla\u015fma) yakla\u015f\u0131m\u0131 sayesinde, kod yazma s\u00fcresi k\u0131sal\u0131r ve bak\u0131m kolayla\u015f\u0131r. Ancak, bir Rails uygulamas\u0131n\u0131 canl\u0131ya almak, genellikle sunucu yap\u0131land\u0131rmas\u0131, veritaban\u0131 kurulumu, web sunucusu (Nginx\/Apache), uygulama sunucusu (Puma\/Unicorn) ve SSL sertifikas\u0131 gibi karma\u015f\u0131k ad\u0131mlar\u0131 i\u00e7erir.<\/p>\n<p>DigitalOcean, bu karma\u015f\u0131kl\u0131\u011f\u0131 azaltmak i\u00e7in &#8220;Marketplace&#8221; ad\u0131 alt\u0131nda \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f uygulama g\u00f6r\u00fcnt\u00fcleri sunar. Ruby on Rails 1-Click Install, bu g\u00f6r\u00fcnt\u00fclerden biridir. Bu sayede, temel bir Linux i\u015fletim sistemi \u00fczerine Ruby, Rails, PostgreSQL (veritaban\u0131), Nginx (web sunucusu), Puma (uygulama sunucusu) ve Certbot (SSL i\u00e7in Let&#8217;s Encrypt entegrasyonu) gibi t\u00fcm gerekli bile\u015fenler otomatik olarak kurulur ve yap\u0131land\u0131r\u0131l\u0131r. Bu entegrasyon, geli\u015ftiricilerin altyap\u0131 yerine do\u011frudan uygulama geli\u015ftirmeye odaklanmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>DigitalOcean&#8217;da Ruby on Rails 1-Click kurulumunu kullanmaya ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>DigitalOcean Hesab\u0131:<\/strong> Aktif bir DigitalOcean hesab\u0131n\u0131z olmal\u0131 ve \u00f6deme bilgileriniz tan\u0131mlanm\u0131\u015f olmal\u0131d\u0131r.<br \/>\n*   <strong>Temel Linux ve Komut Sat\u0131r\u0131 Bilgisi:<\/strong> Sunucuya SSH ile ba\u011flanacak, temel komutlar\u0131 (<code>cd<\/code>, <code>ls<\/code>, <code>sudo<\/code>, <code>systemctl<\/code> vb.) kullanacak ve dosya d\u00fczenlemeleri yapacaks\u0131n\u0131z.<br \/>\n*   <strong>SSH \u0130stemcisi:<\/strong> Sunucunuza g\u00fcvenli bir \u015fekilde ba\u011flanmak i\u00e7in bir SSH istemcisine ihtiyac\u0131n\u0131z olacak. Linux ve macOS&#8217;ta terminal \u00fczerinden SSH yerle\u015fik olarak gelir. Windows kullan\u0131c\u0131lar\u0131 i\u00e7in PuTTY veya Windows Subsystem for Linux (WSL) \u00f6nerilir.<br \/>\n*   <strong>Alan Ad\u0131 (Opsiyonel ama \u00d6nerilir):<\/strong> Uygulaman\u0131z\u0131 bir alan ad\u0131 \u00fczerinden yay\u0131nlamak ve SSL sertifikas\u0131 kullanmak isterseniz, bir alan ad\u0131n\u0131z\u0131n olmas\u0131 ve DNS ayarlar\u0131n\u0131 y\u00f6netebilmeniz gereklidir.<\/p>\n<h3>DigitalOcean Droplet Olu\u015fturma Ad\u0131mlar\u0131<\/h3>\n<p>DigitalOcean hesab\u0131n\u0131za giri\u015f yapt\u0131ktan sonra, Ruby on Rails 1-Click kurulumunu ba\u015flatmak olduk\u00e7a basittir.<\/p>\n<h4>DigitalOcean Hesab\u0131na Giri\u015f Yapma ve Droplet Olu\u015fturma<\/h4>\n<p>1.  <strong>DigitalOcean Kontrol Paneline Giri\u015f Yap\u0131n:<\/strong> Taray\u0131c\u0131n\u0131zdan DigitalOcean&#8217;a gidin ve hesab\u0131n\u0131za giri\u015f yap\u0131n.<br \/>\n2.  <strong>Droplet Olu\u015fturma Sayfas\u0131na Gidin:<\/strong> Kontrol panelinin sa\u011f \u00fcst k\u00f6\u015fesindeki &#8220;Create&#8221; (Olu\u015ftur) d\u00fc\u011fmesine t\u0131klay\u0131n ve a\u00e7\u0131lan men\u00fcden &#8220;Droplets&#8221; (Damlac\u0131klar) se\u00e7ene\u011fini se\u00e7in. Alternatif olarak, do\u011frudan Droplet olu\u015fturma sayfas\u0131na y\u00f6nlendirilebilirsiniz.<br \/>\n3.  <strong>Marketplace&#8217;ten Ruby on Rails Se\u00e7ene\u011fini Bulun:<\/strong> &#8220;Choose an image&#8221; (Bir g\u00f6r\u00fcnt\u00fc se\u00e7in) b\u00f6l\u00fcm\u00fcnde, sol taraftaki men\u00fcden &#8220;Marketplace&#8221; sekmesini se\u00e7in. Arama kutusuna &#8220;Ruby on Rails&#8221; yazarak veya listeden bularak &#8220;Ruby on Rails on Ubuntu&#8221; g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc se\u00e7in. Bu g\u00f6r\u00fcnt\u00fc, Ubuntu i\u015fletim sistemi \u00fczerine Rails i\u00e7in gerekli t\u00fcm bile\u015fenleri otomatik olarak kuracakt\u0131r.<br \/>\n4.  <strong>Plan Se\u00e7imi:<\/strong> Uygulaman\u0131z\u0131n ihtiya\u00e7lar\u0131na g\u00f6re bir plan se\u00e7melisiniz. Ba\u015flang\u0131\u00e7 seviyesi veya k\u00fc\u00e7\u00fck projeler i\u00e7in genellikle 1 GB RAM \/ 1 vCPU i\u00e7eren en uygun fiyatl\u0131 plan yeterli olacakt\u0131r. Ancak, uygulaman\u0131z\u0131n trafi\u011fi veya kaynak ihtiyac\u0131 artt\u0131k\u00e7a daha g\u00fc\u00e7l\u00fc bir plana y\u00fckseltme yapabilirsiniz. DigitalOcean&#8217;\u0131n esnekli\u011fi sayesinde bu y\u00fckseltmeler kolayca ger\u00e7ekle\u015ftirilebilir.<br \/>\n5.  <strong>Veri Merkezi B\u00f6lgesi Se\u00e7imi:<\/strong> Kullan\u0131c\u0131lar\u0131n\u0131z\u0131n co\u011frafi konumuna en yak\u0131n veri merkezi b\u00f6lgesini se\u00e7mek, uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131r\u0131r ve gecikmeyi azalt\u0131r. \u00d6rne\u011fin, T\u00fcrkiye&#8217;deki kullan\u0131c\u0131lar\u0131 hedefliyorsan\u0131z, Frankfurt veya Amsterdam gibi Avrupa b\u00f6lgeleri iyi birer se\u00e7enek olabilir.<br \/>\n6.  <strong>Kimlik Do\u011frulama Y\u00f6ntemi:<\/strong> Bu ad\u0131mda, sunucunuza nas\u0131l eri\u015fece\u011finizi belirlersiniz.<br \/>\n    *   <strong>SSH Keys (SSH Anahtarlar\u0131) (\u00d6nerilir):<\/strong> G\u00fcvenlik ve kolayl\u0131k a\u00e7\u0131s\u0131ndan SSH anahtarlar\u0131 kullanman\u0131z \u015fiddetle tavsiye edilir. Daha \u00f6nce bir SSH anahtar\u0131 olu\u015fturduysan\u0131z, onu se\u00e7ebilirsiniz. Yoksa, &#8220;New SSH Key&#8221; (Yeni SSH Anahtar\u0131) d\u00fc\u011fmesine t\u0131klayarak genel anahtar\u0131n\u0131z\u0131 buraya yap\u0131\u015ft\u0131rabilirsiniz. Genel anahtar\u0131n\u0131z genellikle <code>~\/.ssh\/id_rsa.pub<\/code> dosyas\u0131nda bulunur.<br \/>\n    *   <strong>Password (\u015eifre):<\/strong> E\u011fer SSH anahtar\u0131 kullanmak istemiyorsan\u0131z, sunucuya eri\u015fim i\u00e7in bir root \u015fifresi belirleyebilirsiniz. Ancak bu y\u00f6ntem, SSH anahtarlar\u0131na g\u00f6re daha az g\u00fcvenlidir. DigitalOcean, \u015fifreyi e-postan\u0131za g\u00f6nderecektir; bu \u015fifreyi g\u00fcvenli bir yerde saklay\u0131n.<br \/>\n7.  <strong>Ek Se\u00e7enekler (Opsiyonel):<\/strong><br \/>\n    *   <strong>Monitoring (\u0130zleme):<\/strong> Droplet&#8217;inizin performans\u0131n\u0131 (CPU, RAM, disk kullan\u0131m\u0131 vb.) izlemek i\u00e7in DigitalOcean&#8217;\u0131n yerle\u015fik izleme \u00f6zelli\u011fini etkinle\u015ftirebilirsiniz. \u00dccretsizdir ve \u00f6nerilir.<br \/>\n    *   <strong>IPv6:<\/strong> Genellikle varsay\u0131lan olarak etkin b\u0131rak\u0131labilir.<br \/>\n    *   <strong>User Data:<\/strong> \u0130lk \u00f6ny\u00fcklemede \u00e7al\u0131\u015facak \u00f6zel betikler ekleyebilirsiniz. Bu, daha ileri d\u00fczey yap\u0131land\u0131rmalar i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n    *   <strong>Backup (Yedekleme):<\/strong> Droplet&#8217;inizin d\u00fczenli otomatik yedeklerini almak i\u00e7in bu \u00f6zelli\u011fi etkinle\u015ftirebilirsiniz. Ek \u00fccrete tabidir ancak veri kayb\u0131n\u0131 \u00f6nlemek i\u00e7in \u00f6nemlidir.<br \/>\n8.  <strong>Hostname (Ana Bilgisayar Ad\u0131):<\/strong> Droplet&#8217;inize kolayca tan\u0131yabilece\u011finiz bir isim verin (\u00f6rne\u011fin, <code>my-rails-app<\/code> veya <code>production-rails<\/code>).<br \/>\n9.  <strong>Droplet Olu\u015ftur:<\/strong> T\u00fcm ayarlar\u0131 g\u00f6zden ge\u00e7irdikten sonra, &#8220;Create Droplet&#8221; (Droplet Olu\u015ftur) d\u00fc\u011fmesine t\u0131klay\u0131n. DigitalOcean, birka\u00e7 dakika i\u00e7inde Droplet&#8217;inizi olu\u015fturacak ve size IP adresini sa\u011flayacakt\u0131r.<\/p>\n<h3>\u0130lk Sunucu Kurulumu ve G\u00fcvenlik Ad\u0131mlar\u0131<\/h3>\n<p>Droplet&#8217;iniz olu\u015ftuktan sonra, sunucunuza ba\u011flanarak ilk g\u00fcvenlik ve yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 ger\u00e7ekle\u015ftirmeniz \u00f6nemlidir.<\/p>\n<h4>SSH ile Sunucuya Ba\u011flanma<\/h4>\n<p>1.  <strong>Droplet IP Adresini Edinin:<\/strong> DigitalOcean kontrol panelinizde yeni olu\u015fturdu\u011funuz Droplet&#8217;in IP adresini g\u00f6rebilirsiniz.<br \/>\n2.  <strong>SSH Ba\u011flant\u0131s\u0131 Kurun:<\/strong> Terminalinizi veya SSH istemcinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu kullanarak sunucunuza ba\u011flan\u0131n:<\/p>\n<pre><code class=\"language-bash\">ssh root@your_droplet_ip_address<\/code><\/pre>\n<p>    E\u011fer SSH anahtar\u0131 kulland\u0131ysan\u0131z, parola sormadan do\u011frudan ba\u011flan\u0131rs\u0131n\u0131z. \u015eifre kulland\u0131ysan\u0131z, DigitalOcean&#8217;\u0131n size e-posta ile g\u00f6nderdi\u011fi root \u015fifresini girmeniz istenecektir.<\/p>\n<h4>G\u00fcvenlik \u0130\u00e7in Yeni Bir Kullan\u0131c\u0131 Olu\u015fturma<\/h4>\n<p>Root kullan\u0131c\u0131s\u0131 olarak s\u00fcrekli \u00e7al\u0131\u015fmak g\u00fcvenlik riski ta\u015f\u0131r. Yeni bir sudo kullan\u0131c\u0131s\u0131 olu\u015fturmak ve root eri\u015fimini k\u0131s\u0131tlamak en iyi uygulamad\u0131r.<\/p>\n<p>1.  <strong>Yeni Kullan\u0131c\u0131 Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-bash\">adduser your_username<\/code><\/pre>\n<p>    Komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra yeni kullan\u0131c\u0131n\u0131z i\u00e7in bir \u015fifre belirlemeniz ve baz\u0131 iste\u011fe ba\u011fl\u0131 bilgiler girmeniz istenecektir.<br \/>\n2.  <strong>Sudo Yetkileri Verme:<\/strong> Yeni kullan\u0131c\u0131ya y\u00f6netici (sudo) yetkileri verin:<\/p>\n<pre><code class=\"language-bash\">usermod -aG sudo your_username<\/code><\/pre>\n<p>3.  <strong>Root Giri\u015fini Devre D\u0131\u015f\u0131 B\u0131rakma (\u00d6nerilir):<\/strong> SSH ile root kullan\u0131c\u0131s\u0131n\u0131n do\u011frudan giri\u015fini devre d\u0131\u015f\u0131 b\u0131rakmak g\u00fcvenli\u011fi art\u0131r\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<p>    A\u00e7\u0131lan dosyada <code>PermitRootLogin yes<\/code> sat\u0131r\u0131n\u0131 bulun ve <code>PermitRootLogin no<\/code> olarak de\u011fi\u015ftirin. <code>PasswordAuthentication yes<\/code> sat\u0131r\u0131n\u0131 <code>PasswordAuthentication no<\/code> olarak de\u011fi\u015ftirmek de (e\u011fer SSH anahtar\u0131 kullan\u0131yorsan\u0131z) \u00f6nerilir. Dosyay\u0131 kaydedip kapat\u0131n (Ctrl+X, Y, Enter).<br \/>\n    SSH hizmetini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart sshd<\/code><\/pre>\n<p>    <strong>\u00d6NEML\u0130:<\/strong> Bu de\u011fi\u015fikli\u011fi yapmadan \u00f6nce yeni kullan\u0131c\u0131n\u0131zla sorunsuz bir \u015fekilde SSH ba\u011flant\u0131s\u0131 kurabildi\u011finizden emin olun. Aksi takdirde sunucunuza eri\u015fiminiz kesilebilir. Yeni bir terminal penceresinde <code>ssh your_username@your_droplet_ip_address<\/code> komutuyla test edin.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 (UFW) Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Ubuntu&#8217;da UFW (Uncomplicated Firewall) varsay\u0131lan olarak gelir. Yaln\u0131zca gerekli portlara eri\u015fime izin vererek sunucunuzu korumak \u00f6nemlidir.<\/p>\n<p>1.  <strong>UFW Durumunu Kontrol Etme:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>2.  <strong>Gerekli Portlara \u0130zin Verme:<\/strong><br \/>\n    *   SSH (Port 22):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH<\/code><\/pre>\n<p>    *   HTTP (Port 80):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow http<\/code><\/pre>\n<p>    *   HTTPS (Port 443):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow https<\/code><\/pre>\n<p>3.  <strong>UFW&#8217;yi Etkinle\u015ftirme:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo ufw enable<\/code><\/pre>\n<p>    Bir onay mesaj\u0131 alacaks\u0131n\u0131z. <code>y<\/code> tu\u015funa basarak devam edin.<br \/>\n4.  <strong>UFW Durumunu Tekrar Kontrol Etme:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo ufw status verbose<\/code><\/pre>\n<p>    Bu komut, etkin kurallar\u0131 ayr\u0131nt\u0131l\u0131 olarak g\u00f6sterir.<\/p>\n<h3>1-Click Kurulumun \u0130\u00e7eri\u011fini Anlama<\/h3>\n<p>DigitalOcean&#8217;\u0131n Ruby on Rails 1-Click Droplet&#8217;i, uygulaman\u0131z\u0131 da\u011f\u0131tmak i\u00e7in gereken bir\u00e7ok bile\u015feni \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f olarak sunar. Bu bile\u015fenleri ve yap\u0131land\u0131rmalar\u0131n\u0131 anlamak, sorun giderme ve \u00f6zelle\u015ftirme a\u00e7\u0131s\u0131ndan faydal\u0131d\u0131r.<\/p>\n<p>*   <strong>Ruby ve Rails:<\/strong> En son stabil Ruby ve Rails s\u00fcr\u00fcmleri kurulu gelir.<br \/>\n*   <strong>PostgreSQL:<\/strong> Varsay\u0131lan veritaban\u0131 olarak PostgreSQL kuruludur. <code>rails<\/code> ad\u0131nda bir veritaban\u0131 kullan\u0131c\u0131s\u0131 ve bu kullan\u0131c\u0131 i\u00e7in otomatik olarak olu\u015fturulmu\u015f bir veritaban\u0131 bulunur. Veritaban\u0131 kimlik bilgileri genellikle <code>\/var\/www\/rails-app\/shared\/config\/database.yml<\/code> i\u00e7inde bulunur veya ortam de\u011fi\u015fkenleriyle y\u00f6netilir.<br \/>\n*   <strong>Nginx:<\/strong> Web sunucusu olarak Nginx, gelen HTTP\/HTTPS isteklerini y\u00f6netmek ve bunlar\u0131 Puma uygulama sunucusuna y\u00f6nlendirmek \u00fczere yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Nginx yap\u0131land\u0131rma dosyas\u0131 genellikle <code>\/etc\/nginx\/sites-enabled\/rails-app<\/code> konumundad\u0131r. Bu dosya, uygulaman\u0131z\u0131n alan ad\u0131n\u0131 ve SSL ayarlar\u0131n\u0131 i\u00e7erecektir.<br \/>\n*   <strong>Puma:<\/strong> Ruby on Rails uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131ran uygulama sunucusudur. Sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flat\u0131lacak bir <code>systemd<\/code> hizmeti olarak yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Puma hizmet dosyas\u0131 genellikle <code>\/etc\/systemd\/system\/puma.service<\/code> konumundad\u0131r.<br \/>\n*   <strong>Certbot:<\/strong> Let&#8217;s Encrypt arac\u0131l\u0131\u011f\u0131yla \u00fccretsiz SSL\/TLS sertifikalar\u0131 almak ve otomatik olarak yenilemek i\u00e7in kullan\u0131lan bir ara\u00e7t\u0131r.<br \/>\n*   <strong>Uygulama Dizini:<\/strong> Varsay\u0131lan Rails uygulamas\u0131 <code>\/var\/www\/rails-app<\/code> dizininde bulunur. Bu dizin genellikle Capistrano gibi da\u011f\u0131t\u0131m ara\u00e7lar\u0131 taraf\u0131ndan kullan\u0131lan <code>current<\/code>, <code>shared<\/code>, <code>releases<\/code> gibi alt dizinleri i\u00e7erir. <code>current<\/code> symlink&#8217;i (sembolik ba\u011flant\u0131) aktif uygulamay\u0131 i\u015faret eder.<\/p>\n<h3>Rails Uygulaman\u0131z\u0131 Da\u011f\u0131tma<\/h3>\n<p>Art\u0131k Droplet&#8217;iniz haz\u0131r ve g\u00fcvenli oldu\u011funa g\u00f6re, kendi Ruby on Rails uygulaman\u0131z\u0131 da\u011f\u0131tmaya ba\u015flayabilirsiniz. \u0130ki ana yakla\u015f\u0131m vard\u0131r: varsay\u0131lan uygulamay\u0131 de\u011fi\u015ftirmek veya Capistrano gibi bir da\u011f\u0131t\u0131m arac\u0131 kullanmak.<\/p>\n<h4>Se\u00e7enek 1: Varsay\u0131lan Uygulamay\u0131 De\u011fi\u015ftirmek (Basit Projeler\/Test \u0130\u00e7in)<\/h4>\n<p>Bu y\u00f6ntem, k\u00fc\u00e7\u00fck veya ki\u015fisel projeler i\u00e7in h\u0131zl\u0131 bir ba\u015flang\u0131\u00e7 sa\u011flar.<\/p>\n<p>1.  <strong>Mevcut Uygulama Dosyalar\u0131n\u0131 Silme:<\/strong><br \/>\n    SSH ile sunucunuza <code>your_username<\/code> olarak ba\u011fland\u0131ktan sonra, mevcut Rails uygulamas\u0131n\u0131n dosyalar\u0131n\u0131 silin:<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/rails-app\/current\n    sudo rm -rf *<\/code><\/pre>\n<p>    Bu komut, <code>current<\/code> dizinindeki t\u00fcm dosyalar\u0131 siler.<br \/>\n2.  <strong>Uygulaman\u0131z\u0131 Klonlama:<\/strong><br \/>\n    Git deposundan uygulaman\u0131z\u0131 <code>current<\/code> dizinine klonlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo git clone your_repository_url .<\/code><\/pre>\n<p>    <strong>Not:<\/strong> <code>.<\/code> (nokta) komutun mevcut dizine klonlama yapmas\u0131n\u0131 sa\u011flar. E\u011fer uygulaman\u0131z\u0131n <code>current<\/code> dizininde root yetkisiyle i\u015flem yapmak istemiyorsan\u0131z, \u00f6ncelikle <code>your_username<\/code> kullan\u0131c\u0131s\u0131na <code>\/var\/www\/rails-app<\/code> dizini \u00fczerinde yazma izni vermeniz gerekebilir:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R your_username:your_username \/var\/www\/rails-app<\/code><\/pre>\n<p>    Bu komutu uygulad\u0131ktan sonra <code>sudo<\/code> kullanmadan <code>git clone<\/code> ve di\u011fer i\u015flemleri yapabilirsiniz.<br \/>\n3.  <strong>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckleme:<\/strong><br \/>\n    Uygulaman\u0131z\u0131n Gemfile&#8217;\u0131nda belirtilen Ruby gem&#8217;lerini y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">bundle install --deployment --without development test<\/code><\/pre>\n<p>    <code>--deployment<\/code> se\u00e7ene\u011fi, gem&#8217;leri <code>vendor\/bundle<\/code> dizinine y\u00fckler ve <code>Gemfile.lock<\/code> dosyas\u0131n\u0131 kullan\u0131r.<br \/>\n4.  <strong>Veritaban\u0131 Yap\u0131land\u0131rmas\u0131:<\/strong><br \/>\n    <code>config\/database.yml<\/code> dosyan\u0131z\u0131n sunucu ortam\u0131na uygun oldu\u011fundan emin olun. DigitalOcean 1-Click kurulumu genellikle PostgreSQL i\u00e7in <code>rails<\/code> kullan\u0131c\u0131s\u0131n\u0131 ve veritaban\u0131n\u0131 otomatik olarak yap\u0131land\u0131r\u0131r.<\/p>\n<pre><code class=\"language-yaml\"># config\/database.yml (\u00d6rnek)\n    production:\n      adapter: postgresql\n      encoding: unicode\n      pool: 5\n      database: rails\n      username: rails\n      password: YOUR_POSTGRES_PASSWORD # E\u011fer belirlediyseniz\n      host: localhost<\/code><\/pre>\n<p>    Veritaban\u0131 \u015femas\u0131n\u0131 uygulay\u0131n ve gerekirse ba\u015flang\u0131\u00e7 verilerini y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">rails db:create\n    rails db:migrate\n    rails db:seed # E\u011fer seed verileriniz varsa<\/code><\/pre>\n<p>5.  <strong>Assets (Statik Dosyalar) Derleme:<\/strong><br \/>\n    Rails uygulamalar\u0131 genellikle JavaScript, CSS ve resimler gibi statik dosyalar\u0131 (assets) derler:<\/p>\n<pre><code class=\"language-bash\">rails assets:precompile<\/code><\/pre>\n<p>    Bu i\u015flem, statik dosyalar\u0131n s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ve birle\u015ftirilmi\u015f s\u00fcr\u00fcmlerini <code>public\/assets<\/code> dizinine yerle\u015ftirir.<br \/>\n6.  <strong>Puma Uygulama Sunucusunu Yeniden Ba\u015flatma:<\/strong><br \/>\n    Uygulaman\u0131zdaki de\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Puma hizmetini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart puma<\/code><\/pre>\n<h4>Se\u00e7enek 2: Capistrano Kullanarak Da\u011f\u0131t\u0131m (\u00dcretim Ortam\u0131 \u0130\u00e7in \u00d6nerilir)<\/h4>\n<p>Capistrano, Rails uygulamalar\u0131n\u0131 sunuculara da\u011f\u0131tmak i\u00e7in g\u00fc\u00e7l\u00fc ve pop\u00fcler bir otomasyon arac\u0131d\u0131r. Da\u011f\u0131t\u0131m s\u00fcrecini standartla\u015ft\u0131r\u0131r, ge\u00e7mi\u015f s\u00fcr\u00fcmleri y\u00f6netmeyi kolayla\u015ft\u0131r\u0131r ve hata durumunda geri alma (rollback) imkan\u0131 sunar.<\/p>\n<p>1.  <strong>Yerel Makinenizde Capistrano Kurulumu:<\/strong><br \/>\n    Uygulaman\u0131z\u0131n yerel dizininde Capistrano&#8217;yu kurun:<\/p>\n<pre><code class=\"language-bash\">gem install capistrano\n    cap install<\/code><\/pre>\n<p>    Bu komutlar, Capistrano i\u00e7in gerekli dosya ve dizinleri (<code>Capfile<\/code>, <code>config\/deploy.rb<\/code>, <code>config\/deploy\/production.rb<\/code> vb.) olu\u015fturacakt\u0131r.<br \/>\n2.  <strong>Capistrano Yap\u0131land\u0131rmas\u0131:<\/strong><br \/>\n    *   <strong><code>Capfile<\/code>:<\/strong> Gerekli Capistrano gem&#8217;lerini (Rails, Rbenv, Bundler vb.) i\u00e7erdi\u011finden emin olun.<br \/>\n    *   <strong><code>config\/deploy.rb<\/code>:<\/strong> Bu dosya, uygulaman\u0131z\u0131n genel da\u011f\u0131t\u0131m ayarlar\u0131n\u0131 i\u00e7erir.<\/p>\n<pre><code class=\"language-ruby\"># config\/deploy.rb\n        set :application, \"your_app_name\"\n        set :repo_url, \"your_repository_url\" # Git deponuzun URL'si\n\n        # Da\u011f\u0131t\u0131m dizini\n        set :deploy_to, \"\/var\/www\/#{fetch(:application)}\"\n\n        # Varsay\u0131lan \u015fube (branch)\n        set :branch, \"main\" # veya master\n\n        # Ruby versiyonu (DigitalOcean 1-Click ile gelen versiyonu kullan\u0131n)\n        set :rbenv_ruby, File.read('.ruby-version').strip # veya '3.1.2' gibi belirli bir versiyon\n\n        # Hangi dosyalar\u0131n symlink olarak shared dizinine ba\u011flanaca\u011f\u0131n\u0131 belirtin\n        append :linked_files, \"config\/database.yml\", \"config\/master.key\" # master.key Rails 5.2+ i\u00e7in\n        append :linked_dirs, \"log\", \"tmp\/pids\", \"tmp\/cache\", \"tmp\/sockets\", \"vendor\/bundle\", \"public\/system\", \"public\/uploads\"\n\n        # Puma yap\u0131land\u0131rmas\u0131\n        set :puma_init_active_record, true # ActiveRecord ba\u011flant\u0131s\u0131n\u0131 Puma ba\u015flat\u0131l\u0131rken kontrol eder\n\n        # SSH agent forwarding\n        set :ssh_options, { forward_agent: true, auth_methods: %w(publickey) }<\/code><\/pre>\n<p>    *   <strong><code>config\/deploy\/production.rb<\/code>:<\/strong> Bu dosya, \u00fcretim ortam\u0131na \u00f6zel ayarlar\u0131 i\u00e7erir.<\/p>\n<pre><code class=\"language-ruby\"># config\/deploy\/production.rb\n        server \"your_droplet_ip_address\", user: \"your_username\", roles: %w{app web db}\n\n        # SSH anahtarlar\u0131n\u0131z\u0131n yolu (e\u011fer farkl\u0131 bir konumdaysa)\n        # set :ssh_options, {\n        #   keys: %w(~\/.ssh\/id_rsa),\n        #   forward_agent: false,\n        #   auth_methods: %w(publickey)\n        # }<\/code><\/pre>\n<p>3.  <strong>SSH Agent Forwarding:<\/strong><br \/>\n    Capistrano&#8217;nun Git deposuna eri\u015febilmesi i\u00e7in SSH anahtarlar\u0131n\u0131z\u0131n sunucuya iletilmesi gerekir. Yerel makinenizde:<\/p>\n<pre><code class=\"language-bash\">eval \"$(ssh-agent -s)\"\n    ssh-add ~\/.ssh\/id_rsa # veya anahtar\u0131n\u0131z\u0131n yolu<\/code><\/pre>\n<p>4.  <strong>Veritaban\u0131 ve Master Key Dosyalar\u0131n\u0131 Sunucuya Kopyalama:<\/strong><br \/>\n    <code>config\/database.yml<\/code> ve <code>config\/master.key<\/code> (Rails 5.2+ i\u00e7in) gibi hassas dosyalar\u0131 Git deposunda tutmamak en iyi uygulamad\u0131r. Bunlar\u0131 manuel olarak sunucunuzdaki <code>shared\/config<\/code> dizinine kopyalamal\u0131s\u0131n\u0131z.<br \/>\n    \u00d6nce sunucuda ilgili dizini olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">ssh your_username@your_droplet_ip_address \"mkdir -p \/var\/www\/your_app_name\/shared\/config\"<\/code><\/pre>\n<p>    Sonra yerel makinenizden dosyalar\u0131 kopyalay\u0131n:<\/p>\n<pre><code class=\"language-bash\">scp config\/database.yml your_username@your_droplet_ip_address:\/var\/www\/your_app_name\/shared\/config\/database.yml\n    scp config\/master.key your_username@your_droplet_ip_address:\/var\/www\/your_app_name\/shared\/config\/master.key<\/code><\/pre>\n<p>    <code>database.yml<\/code> dosyas\u0131ndaki veritaban\u0131 kullan\u0131c\u0131 ad\u0131 ve \u015fifresinin DigitalOcean 1-Click kurulumundaki PostgreSQL ayarlar\u0131yla e\u015fle\u015fti\u011finden emin olun.<br \/>\n5.  <strong>\u0130lk Da\u011f\u0131t\u0131m:<\/strong><br \/>\n    Yerel makinenizden ilk da\u011f\u0131t\u0131m\u0131 yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">cap production deploy:initial<\/code><\/pre>\n<p>    Bu komut, t\u00fcm Capistrano dizin yap\u0131s\u0131n\u0131 olu\u015fturacak ve uygulaman\u0131z\u0131 ilk kez da\u011f\u0131tacakt\u0131r.<br \/>\n6.  <strong>Sonraki Da\u011f\u0131t\u0131mlar:<\/strong><br \/>\n    Uygulaman\u0131zda de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda ve yeniden da\u011f\u0131tmak istedi\u011finizde:<\/p>\n<pre><code class=\"language-bash\">cap production deploy<\/code><\/pre>\n<p>    Capistrano, yeni bir s\u00fcr\u00fcm dizini olu\u015fturacak, kodu \u00e7ekecek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleyecek, veritaban\u0131 ge\u00e7i\u015flerini \u00e7al\u0131\u015ft\u0131racak, assetleri derleyecek ve Puma&#8217;y\u0131 yeniden ba\u015flatacakt\u0131r.<\/p>\n<h3>Alan Ad\u0131 Yap\u0131land\u0131rmas\u0131 ve SSL\/TLS Sertifikas\u0131<\/h3>\n<p>Uygulaman\u0131z\u0131 bir IP adresi yerine kendi alan ad\u0131n\u0131z \u00fczerinden yay\u0131nlamak ve g\u00fcvenli bir HTTPS ba\u011flant\u0131s\u0131 sa\u011flamak profesyonellik a\u00e7\u0131s\u0131ndan \u00f6nemlidir.<\/p>\n<h4>Alan Ad\u0131n\u0131 Droplet&#8217;e Y\u00f6nlendirme<\/h4>\n<p>1.  <strong>DigitalOcean DNS Ayarlar\u0131:<\/strong> DigitalOcean kontrol panelinizde &#8220;Networking&#8221; (A\u011f) b\u00f6l\u00fcm\u00fcne gidin. Alan ad\u0131n\u0131z\u0131 buraya ekleyin veya mevcut bir alan ad\u0131n\u0131z varsa onu se\u00e7in.<br \/>\n2.  <strong>A Kayd\u0131 Olu\u015fturma:<\/strong> Alan ad\u0131n\u0131z i\u00e7in Droplet&#8217;inizin IP adresini g\u00f6steren bir &#8220;A kayd\u0131&#8221; olu\u015fturun. \u00d6rne\u011fin:<br \/>\n    *   <strong>Hostname:<\/strong> <code>@<\/code> (ana alan ad\u0131n\u0131z i\u00e7in)<br \/>\n    *   <strong>Will Direct To:<\/strong> Droplet&#8217;inizin IP adresi<br \/>\n    *   <strong>Hostname:<\/strong> <code>www<\/code> (www alt alan\u0131 i\u00e7in)<br \/>\n    *   <strong>Will Direct To:<\/strong> Droplet&#8217;inizin IP adresi<br \/>\n    Bu kay\u0131tlar\u0131n DNS sunucular\u0131nda yay\u0131lmas\u0131 biraz zaman alabilir (genellikle birka\u00e7 dakika ile birka\u00e7 saat aras\u0131).<\/p>\n<h4>Nginx Yap\u0131land\u0131rmas\u0131n\u0131 G\u00fcncelleme<\/h4>\n<p>Alan ad\u0131n\u0131z Droplet&#8217;e y\u00f6nlendirildikten sonra, Nginx&#8217;in bu alan ad\u0131n\u0131 tan\u0131mas\u0131 i\u00e7in yap\u0131land\u0131rma dosyas\u0131n\u0131 g\u00fcncellemeniz gerekir.<\/p>\n<p>1.  <strong>Nginx Yap\u0131land\u0131rma Dosyas\u0131n\u0131 D\u00fczenleme:<\/strong><br \/>\n    SSH ile sunucunuza ba\u011flan\u0131n ve Nginx yap\u0131land\u0131rma dosyas\u0131n\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-enabled\/rails-app<\/code><\/pre>\n<p>2.  <strong><code>server_name<\/code> G\u00fcncelleme:<\/strong><br \/>\n    <code>server_name _<\/code> veya <code>server_name localhost<\/code> gibi bir sat\u0131r g\u00f6receksiniz. Bu sat\u0131r\u0131 kendi alan ad\u0131n\u0131zla g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-nginx\">server_name yourdomain.com www.yourdomain.com;<\/code><\/pre>\n<p>    Dosyay\u0131 kaydedip kapat\u0131n.<br \/>\n3.  <strong>Nginx&#8217;i Yeniden Ba\u015flatma:<\/strong><br \/>\n    De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Nginx hizmetini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart nginx<\/code><\/pre>\n<h4>Certbot ile SSL\/TLS Sertifikas\u0131 Kurulumu (Let&#8217;s Encrypt)<\/h4>\n<p>DigitalOcean 1-Click kurulumu, Certbot&#8217;u \u00f6nceden y\u00fckler. Bu sayede Let&#8217;s Encrypt ile \u00fccretsiz SSL sertifikas\u0131 almak \u00e7ok kolayd\u0131r.<\/p>\n<p>1.  <strong>Certbot Komutunu \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\n    Alan ad\u0131n\u0131z\u0131n Droplet&#8217;e do\u011fru \u015fekilde y\u00f6nlendirildi\u011finden emin olduktan sonra a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com<\/code><\/pre>\n<p>    *   Certbot, Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak alg\u0131layacak ve sertifikay\u0131 kurmak i\u00e7in gerekli de\u011fi\u015fiklikleri yapacakt\u0131r.<br \/>\n    *   Sizden bir e-posta adresi girmeniz (acil durum bildirimleri ve yenileme hat\u0131rlat\u0131c\u0131lar\u0131 i\u00e7in) ve hizmet \u015fartlar\u0131n\u0131 kabul etmeniz istenecektir.<br \/>\n    *   HTTPS&#8217;ye y\u00f6nlendirme (redirect) isteyip istemedi\u011finizi soracakt\u0131r. Genellikle &#8220;2: Redirect&#8221; se\u00e7ene\u011fini se\u00e7mek \u00f6nerilir, bu sayede t\u00fcm HTTP istekleri otomatik olarak HTTPS&#8217;ye y\u00f6nlendirilir.<br \/>\n2.  <strong>Otomatik Yenileme:<\/strong><br \/>\n    Certbot, sertifikalar\u0131n s\u00fcresi dolmadan otomatik olarak yenilenmesini sa\u011flayan bir cron i\u015fi veya systemd zamanlay\u0131c\u0131s\u0131 da kurar. Yenileme i\u015flemini 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<h3>Veritaban\u0131 Y\u00f6netimi<\/h3>\n<p>PostgreSQL veritaban\u0131n\u0131z, Rails uygulaman\u0131z\u0131n kalbidir. Temel y\u00f6netim i\u015flemlerini bilmek \u00f6nemlidir.<\/p>\n<p>1.  <strong>PostgreSQL Konsoluna Ba\u011flanma:<\/strong><br \/>\n    <code>rails<\/code> kullan\u0131c\u0131s\u0131 olarak PostgreSQL konsoluna ba\u011flanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo -u postgres psql<\/code><\/pre>\n<p>    Ard\u0131ndan, <code>rails<\/code> veritaban\u0131na ba\u011flanmak i\u00e7in:<\/p>\n<pre><code class=\"language-sql\">\\c rails;<\/code><\/pre>\n<p>    <code>\\q<\/code> yazarak konsoldan \u00e7\u0131kabilirsiniz.<br \/>\n2.  <strong>Veritaban\u0131 Yedekleme ve Geri Y\u00fckleme:<\/strong><br \/>\n    *   <strong>Yedekleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo -u postgres pg_dump rails > rails_backup_$(date +%Y%m%d%H%M%S).sql<\/code><\/pre>\n<p>    *   <strong>Geri Y\u00fckleme (Dikkatli Kullan\u0131n! Mevcut verileri silecektir):<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo -u postgres psql -d rails -f rails_backup.sql<\/code><\/pre>\n<p>    D\u00fczenli yedeklemeler almak ve bunlar\u0131 sunucunuz d\u0131\u015f\u0131nda g\u00fcvenli bir yerde saklamak kritik \u00f6neme sahiptir.<\/p>\n<h3>\u0130zleme ve Bak\u0131m<\/h3>\n<p>Uygulaman\u0131z canl\u0131ya al\u0131nd\u0131ktan sonra, performans\u0131n\u0131 izlemek ve d\u00fczenli bak\u0131m yapmak \u00f6nemlidir.<\/p>\n<p>*   <strong>DigitalOcean \u0130zleme:<\/strong> Kontrol panelindeki &#8220;Monitoring&#8221; (\u0130zleme) sekmesi, CPU kullan\u0131m\u0131, bellek t\u00fcketimi, disk G\/\u00c7 ve a\u011f trafi\u011fi gibi temel metrikleri g\u00f6sterir. Anormal davran\u0131\u015flar\u0131 erken tespit etmek i\u00e7in uyar\u0131lar ayarlayabilirsiniz.<br \/>\n*   <strong>G\u00fcnl\u00fck Dosyalar\u0131:<\/strong> Uygulaman\u0131z\u0131n ve sunucu bile\u015fenlerinin g\u00fcnl\u00fck dosyalar\u0131n\u0131 d\u00fczenli olarak kontrol edin:<br \/>\n    *   Nginx eri\u015fim ve hata g\u00fcnl\u00fckleri: <code>\/var\/log\/nginx\/access.log<\/code>, <code>\/var\/log\/nginx\/error.log<\/code><br \/>\n    *   Rails uygulama g\u00fcnl\u00fckleri: <code>\/var\/www\/your_app_name\/shared\/log\/production.log<\/code><br \/>\n    *   Puma hizmet g\u00fcnl\u00fckleri: <code>sudo journalctl -u puma<\/code><br \/>\n*   <strong>Sistem G\u00fcncellemeleri:<\/strong> Sunucunuzun g\u00fcvenli\u011fini ve performans\u0131n\u0131 sa\u011flamak i\u00e7in i\u015fletim sistemi ve kurulu paketleri d\u00fczenli olarak g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\n    sudo apt upgrade<\/code><\/pre>\n<p>*   <strong>Ruby ve Rails G\u00fcncellemeleri:<\/strong> Yeni Ruby veya Rails s\u00fcr\u00fcmleri \u00e7\u0131kt\u0131\u011f\u0131nda, bunlar\u0131 dikkatli bir \u015fekilde test ortam\u0131nda deneyip daha sonra \u00fcretim sunucunuza uygulay\u0131n. <code>rbenv<\/code> veya <code>rvm<\/code> gibi ara\u00e7lar, Ruby s\u00fcr\u00fcmlerini y\u00f6netmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <strong>Disk Alan\u0131:<\/strong> Disk kullan\u0131m\u0131n\u0131 d\u00fczenli olarak kontrol edin (<code>df -h<\/code>). Log dosyalar\u0131 veya ge\u00e7ici dosyalar disk alan\u0131n\u0131 h\u0131zla doldurabilir.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Da\u011f\u0131t\u0131m s\u00fcrecinde veya sonras\u0131nda baz\u0131 yayg\u0131n sorunlarla kar\u015f\u0131la\u015fabilirsiniz.<\/p>\n<p>*   <strong>502 Bad Gateway (Nginx Hatas\u0131):<\/strong> Bu genellikle Nginx&#8217;in Puma uygulama sunucusuna ba\u011flanamad\u0131\u011f\u0131 anlam\u0131na gelir.<br \/>\n    *   Puma hizmetinin \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olun: <code>sudo systemctl status puma<\/code><br \/>\n    *   Puma g\u00fcnl\u00fcklerini kontrol edin: <code>sudo journalctl -u puma<\/code><br \/>\n    *   Puma soket dosyas\u0131n\u0131n (genellikle <code>\/tmp\/puma.sock<\/code>) do\u011fru \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan ve Nginx yap\u0131land\u0131rmas\u0131nda do\u011fru yola i\u015faret etti\u011finden emin olun.<br \/>\n*   <strong>Veritaban\u0131 Ba\u011flant\u0131 Hatas\u0131:<\/strong><br \/>\n    *   <code>config\/database.yml<\/code> dosyas\u0131ndaki kimlik bilgilerinin do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   PostgreSQL hizmetinin \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olun: <code>sudo systemctl status postgresql<\/code><br \/>\n    *   PostgreSQL g\u00fcnl\u00fcklerini kontrol edin.<br \/>\n*   <strong>Asset Precompilation Hatas\u0131:<\/strong> <code>rails assets:precompile<\/code> s\u0131ras\u0131nda hata al\u0131yorsan\u0131z:<br \/>\n    *   Node.js ve Yarn&#8217;\u0131n kurulu ve g\u00fcncel oldu\u011fundan emin olun (\u00e7o\u011fu Rails 6+ projesi i\u00e7in gereklidir).<br \/>\n    *   Gemfile&#8217;\u0131n\u0131zdaki <code>uglifier<\/code> veya <code>terser<\/code> gibi gem&#8217;lerin do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>Eri\u015fim \u0130zni Hatalar\u0131 (Permission Denied):<\/strong><br \/>\n    *   Dosya ve dizinlerin do\u011fru kullan\u0131c\u0131ya (genellikle <code>your_username<\/code>) ait oldu\u011fundan ve do\u011fru izinlere sahip oldu\u011fundan emin olun. <code>sudo chown -R your_username:your_username \/var\/www\/your_app_name<\/code> ve <code>sudo chmod -R 755 \/var\/www\/your_app_name<\/code> gibi komutlar yard\u0131mc\u0131 olabilir.<br \/>\n    *   <code>tmp<\/code> ve <code>log<\/code> dizinlerinin yaz\u0131labilir oldu\u011fundan emin olun.<br \/>\n*   <strong>Uygulama Hatas\u0131 Sayfas\u0131 (Rails Error Page):<\/strong><br \/>\n    *   <code>production.log<\/code> dosyas\u0131n\u0131 kontrol ederek hatan\u0131n kayna\u011f\u0131n\u0131 bulun.<br \/>\n    *   Ortam de\u011fi\u015fkenlerinin (\u00f6rne\u011fin <code>RAILS_MASTER_KEY<\/code> veya di\u011fer gizli anahtarlar) do\u011fru ayarland\u0131\u011f\u0131ndan emin olun.<\/p>\n<h3>En \u0130yi Uygulamalar<\/h3>\n<p>*   <strong>Otomatik Yedeklemeler:<\/strong> DigitalOcean&#8217;\u0131n otomatik yedekleme \u00f6zelli\u011fini kullan\u0131n veya kendi yedekleme stratejinizi (\u00f6rne\u011fin, veritaban\u0131n\u0131 d\u00fczenli olarak S3&#8217;e yedeklemek) uygulay\u0131n.<br \/>\n*   <strong>Ortam De\u011fi\u015fkenleri:<\/strong> Hassas bilgiler (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) do\u011frudan kodda veya yap\u0131land\u0131rma dosyalar\u0131nda tutmak yerine ortam de\u011fi\u015fkenleri (\u00f6rne\u011fin, <code>RAILS_MASTER_KEY<\/code> veya sunucunun <code>~\/.bashrc<\/code> dosyas\u0131ndaki <code>export<\/code> komutlar\u0131) arac\u0131l\u0131\u011f\u0131yla y\u00f6netilmelidir.<br \/>\n*   <strong>G\u00fc\u00e7l\u00fc \u015eifreler ve SSH Anahtarlar\u0131:<\/strong> T\u00fcm hesaplar\u0131n\u0131z ve sunucu eri\u015fiminiz i\u00e7in g\u00fc\u00e7l\u00fc, benzersiz \u015fifreler kullan\u0131n ve SSH anahtarlar\u0131n\u0131 tercih edin.<br \/>\n*   <strong>G\u00fcncel Kal\u0131n:<\/strong> \u0130\u015fletim sistemi, Ruby, Rails ve di\u011fer t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u00fczenli olarak g\u00fcncelleyerek g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131n ve performans\u0131 art\u0131r\u0131n.<br \/>\n*   <strong>Test Ortam\u0131:<\/strong> \u00d6nemli g\u00fcncellemeleri veya yeni \u00f6zellikleri do\u011frudan \u00fcretim ortam\u0131na da\u011f\u0131tmadan \u00f6nce bir haz\u0131rl\u0131k (staging) veya test ortam\u0131nda deneyin.<br \/>\n*   <strong>Versiyon Kontrol\u00fc:<\/strong> Uygulama kodunuzu her zaman Git gibi bir versiyon kontrol sistemiyle y\u00f6netin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>DigitalOcean&#8217;da Ruby on Rails 1-Click kurulumu, modern web uygulamalar\u0131n\u0131 h\u0131zl\u0131 ve sorunsuz bir \u015fekilde da\u011f\u0131tmak i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131 sunar. Bu makalede ele ald\u0131\u011f\u0131m\u0131z ad\u0131mlar\u0131 takip ederek, Droplet&#8217;inizi olu\u015fturabilir, g\u00fcvenli\u011fini sa\u011flayabilir, kendi Rails uygulaman\u0131z\u0131 da\u011f\u0131tabilir, alan ad\u0131n\u0131z\u0131 yap\u0131land\u0131rabilir ve SSL sertifikas\u0131 kurabilirsiniz. Bu entegre \u00e7\u00f6z\u00fcm, geli\u015ftiricilerin altyap\u0131 karma\u015f\u0131kl\u0131\u011f\u0131yla bo\u011fu\u015fmak yerine, kendi uygulamalar\u0131n\u0131n geli\u015ftirilmesine ve iyile\u015ftirilmesine odaklanmalar\u0131n\u0131 sa\u011flar. Unutmay\u0131n, herhangi bir \u00fcretim ortam\u0131nda oldu\u011fu gibi, s\u00fcrekli izleme, d\u00fczenli bak\u0131m ve g\u00fcvenlik en iyi uygulamalar\u0131na ba\u011fl\u0131 kalmak, uygulaman\u0131z\u0131n uzun vadeli ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?\nG\u00fcn\u00fcm\u00fczde web uygulamas\u0131 geli\u015ftirme, h\u0131z ve verimlilik gerektiren bir s\u00fcre","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":[1401],"tags":[],"class_list":{"0":"post-35857","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","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>DigitalOcean&#039;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r? - 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\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DigitalOcean&#039;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"DigitalOcean&#039;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r? G\u00fcn\u00fcm\u00fczde web uygulamas\u0131 geli\u015ftirme, h\u0131z ve verimlilik gerektiren bir s\u00fcre\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T16:40:51+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\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?\",\"datePublished\":\"2025-12-04T16:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\"},\"wordCount\":3465,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\",\"name\":\"DigitalOcean'da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-04T16:40:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?\"}]},{\"@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":"DigitalOcean'da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r? - 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\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/","og_locale":"tr_TR","og_type":"article","og_title":"DigitalOcean'da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?","og_description":"DigitalOcean'da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r? G\u00fcn\u00fcm\u00fczde web uygulamas\u0131 geli\u015ftirme, h\u0131z ve verimlilik gerektiren bir s\u00fcre","og_url":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-04T16:40:51+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\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?","datePublished":"2025-12-04T16:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/"},"wordCount":3465,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/","url":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/","name":"DigitalOcean'da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-04T16:40:51+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/digitaloceanda-ruby-on-rails-1-click-kurulumu-nasil-kullanilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DigitalOcean&#8217;da Ruby on Rails 1-Click Kurulumu Nas\u0131l Kullan\u0131l\u0131r?"}]},{"@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\/35857","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=35857"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35857\/revisions"}],"predecessor-version":[{"id":35858,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35857\/revisions\/35858"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}