{"id":41696,"date":"2026-05-11T08:01:06","date_gmt":"2026-05-11T05:01:06","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=41696"},"modified":"2026-05-11T08:01:06","modified_gmt":"2026-05-11T05:01:06","slug":"ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/","title":{"rendered":"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Modern web uygulamalar\u0131 geli\u015ftirmenin h\u0131zla pop\u00fclerle\u015fti\u011fi g\u00fcn\u00fcm\u00fczde, Ruby on Rails \u00e7er\u00e7evesi, h\u0131zl\u0131 prototipleme ve sa\u011flam mimarisi sayesinde bir\u00e7ok geli\u015ftiricinin tercihi haline gelmi\u015ftir. Bir Rails uygulamas\u0131n\u0131 geli\u015ftirme ortam\u0131ndan canl\u0131 bir sunucuya ta\u015f\u0131mak, uygulaman\u0131n d\u00fcnya ile bulu\u015ftu\u011fu kritik bir ad\u0131md\u0131r. Bu s\u00fcre\u00e7te Apache web sunucusu ve Phusion Passenger uygulama sunucusu, performans, kararl\u0131l\u0131k ve kolay y\u00f6netim sunan g\u00fc\u00e7l\u00fc bir kombinasyon olu\u015fturur. Bu kapsaml\u0131 rehber, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde Phusion Passenger ve Apache kullanarak bir Rails uygulamas\u0131n\u0131 nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m anlatmaktad\u0131r. Her ne kadar Ubuntu 14.04 nispeten eski bir s\u00fcr\u00fcm olsa da, bu rehber, belirli bir proje veya eski altyap\u0131lar nedeniyle bu s\u00fcr\u00fcm\u00fc kullanmak zorunda olan geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in hayati bilgiler sunmaktad\u0131r.<\/p>\n<p>Bu rehberde, bir Rails uygulamas\u0131n\u0131n gereksinimlerinden ba\u015flayarak, Ruby ve veritaban\u0131 kurulumu, uygulaman\u0131n sunucuya aktar\u0131lmas\u0131, Apache ve Passenger&#8217;\u0131n entegrasyonu ve son olarak sanal host yap\u0131land\u0131rmas\u0131 gibi t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z. Amac\u0131m\u0131z, uygulaman\u0131z\u0131n \u00fcretim ortam\u0131nda sorunsuz ve g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in gerekli t\u00fcm bilgi ve komutlar\u0131 sa\u011flamakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bir Rails uygulamas\u0131n\u0131 sunucuya da\u011f\u0131tmaya ba\u015flamadan \u00f6nce, baz\u0131 temel gereksinimleri kar\u015f\u0131laman\u0131z gerekmektedir. Bu gereksinimler, sorunsuz bir kurulum s\u00fcreci i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p>*   <strong>Ubuntu 14.04 Sunucusu:<\/strong> Bu rehber, Ubuntu 14.04 LTS (Trusty Tahr) s\u00fcr\u00fcm\u00fcn\u00fc hedeflemektedir. Sunucuya SSH eri\u015fiminizin ve <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 hesab\u0131n\u0131z\u0131n olmas\u0131 gerekmektedir.<br \/>\n*   <strong>Etki Alan\u0131 Ad\u0131 (Domain Name):<\/strong> Uygulaman\u0131za internet \u00fczerinden eri\u015fmek i\u00e7in bir etki alan\u0131 ad\u0131na (\u00f6rne\u011fin, <code>ornekuygulama.com<\/code>) ihtiyac\u0131n\u0131z olacakt\u0131r. Bu etki alan\u0131 ad\u0131n\u0131n DNS kay\u0131tlar\u0131n\u0131n, sunucunuzun IP adresine i\u015faret etti\u011finden emin olun. Bu ad\u0131m zorunlu olmasa da, \u00fcretim ortam\u0131 i\u00e7in \u015fiddetle tavsiye edilir.<br \/>\n*   <strong>Git:<\/strong> Uygulaman\u0131z\u0131n kaynak kodunu sunucuya aktarmak i\u00e7in Git s\u00fcr\u00fcm kontrol sistemine ihtiyac\u0131n\u0131z olacakt\u0131r.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> SSH arac\u0131l\u0131\u011f\u0131yla sunucuya ba\u011flanma, dosya sistemi navigasyonu, dosya d\u00fczenleme ve paket y\u00f6netimi gibi temel Linux komutlar\u0131na a\u015fina olman\u0131z beklenmektedir.<br \/>\n*   <strong>Rails Uygulamas\u0131:<\/strong> Da\u011f\u0131t\u0131lacak \u00e7al\u0131\u015fan bir Ruby on Rails uygulamas\u0131na sahip olman\u0131z gerekmektedir. Uygulaman\u0131z\u0131n <code>Gemfile<\/code> dosyas\u0131nda <code>pg<\/code> (PostgreSQL i\u00e7in) veya <code>mysql2<\/code> (MySQL i\u00e7in) gibi \u00fcretim veritaban\u0131 adapt\u00f6rlerinin bulundu\u011fundan emin olun.<\/p>\n<p>Bu \u00f6n gereksinimleri sa\u011flad\u0131ktan sonra, bir sonraki ad\u0131ma ge\u00e7meye haz\u0131rs\u0131n\u0131z demektir: sunucunuzu Rails uygulaman\u0131z i\u00e7in haz\u0131rlamak.<\/p>\n<h3>Sistem G\u00fcncellemesi ve Temel Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h3>\n<p>Sunucunuzu g\u00fcncel tutmak ve gerekli sistem ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kurmak, herhangi bir yaz\u0131l\u0131m da\u011f\u0131t\u0131m\u0131n\u0131n ilk ve en \u00f6nemli ad\u0131m\u0131d\u0131r. Bu, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r ve yaz\u0131l\u0131mlar\u0131n do\u011fru \u015fekilde derlenmesi i\u00e7in gerekli k\u00fct\u00fcphaneleri sa\u011flar.<\/p>\n<p>\u0130lk olarak, sunucunuzdaki paket listesini 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<\/code><\/pre>\n<p>Bu komutlar, sisteminizin g\u00fcncel oldu\u011fundan emin olacakt\u0131r. Ard\u0131ndan, Ruby, veritaban\u0131 s\u00fcr\u00fcc\u00fcleri ve di\u011fer bile\u015fenlerin derlenmesi i\u00e7in gerekli olan geli\u015ftirme ara\u00e7lar\u0131n\u0131 ve k\u00fct\u00fcphanelerini kurmal\u0131y\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev \\\nlibsqlite3-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev \\\nnodejs npm # Node.js ve NPM, Rails Asset Pipeline i\u00e7in gereklidir<\/code><\/pre>\n<p>*   <code>build-essential<\/code>: C\/C++ derleyicileri ve make gibi temel geli\u015ftirme ara\u00e7lar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>libssl-dev<\/code>: OpenSSL k\u00fct\u00fcphanesi geli\u015ftirme ba\u015fl\u0131klar\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>libreadline-dev<\/code>: Readline k\u00fct\u00fcphanesi i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131.<br \/>\n*   <code>zlib1g-dev<\/code>: Zlib s\u0131k\u0131\u015ft\u0131rma k\u00fct\u00fcphanesi i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131.<br \/>\n*   <code>libyaml-dev<\/code>: YAML ayr\u0131\u015ft\u0131rma k\u00fct\u00fcphanesi i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131.<br \/>\n*   <code>libsqlite3-dev<\/code>: SQLite3 veritaban\u0131 k\u00fct\u00fcphanesi i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131 (geli\u015ftirme ortam\u0131 i\u00e7in kullan\u0131\u015fl\u0131d\u0131r, \u00fcretimde genellikle PostgreSQL veya MySQL tercih edilir).<br \/>\n*   <code>libxml2-dev<\/code> ve <code>libxslt1-dev<\/code>: XML ve XSLT i\u015fleme k\u00fct\u00fcphaneleri i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131 (baz\u0131 gem&#8217;ler i\u00e7in gereklidir).<br \/>\n*   <code>libcurl4-openssl-dev<\/code>: Curl k\u00fct\u00fcphanesi i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131 (HTTP istekleri i\u00e7in).<br \/>\n*   <code>libffi-dev<\/code>: Foreign Function Interface k\u00fct\u00fcphanesi i\u00e7in geli\u015ftirme ba\u015fl\u0131klar\u0131 (baz\u0131 gem&#8217;ler i\u00e7in gereklidir).<br \/>\n*   <code>nodejs<\/code> ve <code>npm<\/code>: Rails 4 ve \u00fczeri s\u00fcr\u00fcmlerde Asset Pipeline, JavaScript s\u0131k\u0131\u015ft\u0131rma ve derleme i\u015flemleri i\u00e7in Node.js&#8217;e ihtiya\u00e7 duyar.<\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, sisteminiz Ruby ve Rails uygulamalar\u0131 i\u00e7in gerekli temel ba\u011f\u0131ml\u0131l\u0131klara sahip olacakt\u0131r.<\/p>\n<h3>Ruby Kurulumu (rbenv ile)<\/h3>\n<p>Ruby&#8217;yi do\u011frudan sistem paket y\u00f6neticisiyle kurmak yerine, <code>rbenv<\/code> veya <code>RVM<\/code> gibi bir Ruby versiyon y\u00f6neticisi kullanmak, farkl\u0131 Ruby s\u00fcr\u00fcmleri aras\u0131nda kolayca ge\u00e7i\u015f yapman\u0131z\u0131 ve sistem Ruby&#8217;sini etkilemeden uygulama ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netmenizi sa\u011flar. Bu rehberde <code>rbenv<\/code> kullan\u0131m\u0131n\u0131 tercih edece\u011fiz, \u00e7\u00fcnk\u00fc genellikle daha hafif ve daha az invaziv kabul edilir.<\/p>\n<h4>rbenv ve ruby-build Kurulumu<\/h4>\n<p>\u0130lk olarak, <code>rbenv<\/code> ve eklentisi olan <code>ruby-build<\/code>&#8216;u kurman\u0131z gerekmektedir. <code>ruby-build<\/code>, <code>rbenv<\/code>&#8216;in Ruby s\u00fcr\u00fcmlerini derlemesini ve kurmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\"># rbenv'i klonlay\u0131n\ngit clone https:\/\/github.com\/rbenv\/rbenv.git ~\/.rbenv\n\n<h2>rbenv'i PATH'e ekleyin ve ba\u015flat\u0131n<\/h2>\necho 'export PATH=\"$HOME\/.rbenv\/bin:$PATH\"' >> ~\/.bashrc\necho 'eval \"$(rbenv init -)\"' >> ~\/.bashrc\nsource ~\/.bashrc\n\n<h2>ruby-build'u klonlay\u0131n (rbenv'in bir eklentisi)<\/h2>\ngit clone https:\/\/github.com\/rbenv\/ruby-build.git ~\/.rbenv\/plugins\/ruby-build\necho 'export PATH=\"$HOME\/.rbenv\/plugins\/ruby-build\/bin:$PATH\"' >> ~\/.bashrc\nsource ~\/.bashrc<\/code><\/pre>\n<p>Bu komutlar, <code>rbenv<\/code> ve <code>ruby-build<\/code>&#8216;u kullan\u0131c\u0131 dizininize kurar ve kabu\u011funuzun ba\u015flang\u0131\u00e7ta <code>rbenv<\/code>&#8216;i y\u00fcklemesini sa\u011flayacak \u015fekilde <code>.bashrc<\/code> dosyan\u0131z\u0131 g\u00fcnceller. De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in <code>source ~\/.bashrc<\/code> komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z veya SSH oturumunuzu kapat\u0131p yeniden a\u00e7man\u0131z gerekebilir.<\/p>\n<h4>Ruby S\u00fcr\u00fcm\u00fc Kurulumu<\/h4>\n<p>\u015eimdi, uygulaman\u0131z\u0131n gerektirdi\u011fi Ruby s\u00fcr\u00fcm\u00fcn\u00fc kurabilirsiniz. Uygulaman\u0131z\u0131n <code>Gemfile<\/code> dosyas\u0131nda belirtilen veya geli\u015ftirme ortam\u0131n\u0131zda kulland\u0131\u011f\u0131n\u0131z Ruby s\u00fcr\u00fcm\u00fcn\u00fc kullanman\u0131z \u00f6nemlidir. \u00d6rne\u011fin, Ruby 2.3.8 kurmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">rbenv install 2.3.8\nrbenv global 2.3.8\nrbenv rehash<\/code><\/pre>\n<p>*   <code>rbenv install 2.3.8<\/code>: Belirtilen Ruby s\u00fcr\u00fcm\u00fcn\u00fc indirir ve derler. Bu i\u015flem biraz zaman alabilir.<br \/>\n*   <code>rbenv global 2.3.8<\/code>: Bu Ruby s\u00fcr\u00fcm\u00fcn\u00fc sistem genelinde varsay\u0131lan olarak ayarlar.<br \/>\n*   <code>rbenv rehash<\/code>: Yeni kurulan Ruby s\u00fcr\u00fcm\u00fcn\u00fc ve gem y\u00fcr\u00fct\u00fclebilir dosyalar\u0131n\u0131 rbenv&#8217;in PATH&#8217;ine ekler.<\/p>\n<p>Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">ruby -v<\/code><\/pre>\n<p>Bu komut, kurdu\u011funuz Ruby s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir.<\/p>\n<h4>Bundler Kurulumu<\/h4>\n<p>Ruby uygulamalar\u0131 i\u00e7in ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6neten Bundler gem&#8217;ini kurman\u0131z gerekmektedir:<\/p>\n<pre><code class=\"language-bash\">gem install bundler\nrbenv rehash<\/code><\/pre>\n<p>Art\u0131k sunucunuzda do\u011fru Ruby s\u00fcr\u00fcm\u00fc ve Bundler y\u00fckl\u00fc. Bu, Rails uygulaman\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netmek i\u00e7in temel olu\u015fturur.<\/p>\n<h3>Veritaban\u0131 Kurulumu<\/h3>\n<p>Rails uygulamalar\u0131 genellikle bir ili\u015fkisel veritaban\u0131na ihtiya\u00e7 duyar. PostgreSQL ve MySQL, Rails uygulamalar\u0131 i\u00e7in en pop\u00fcler iki se\u00e7enektir. Bu rehberde PostgreSQL&#8217;i tercih edece\u011fiz, ancak MySQL i\u00e7in de k\u0131sa bir genel bak\u0131\u015f sunaca\u011f\u0131z.<\/p>\n<h4>PostgreSQL Kurulumu<\/h4>\n<p>PostgreSQL, g\u00fc\u00e7l\u00fc, a\u00e7\u0131k kaynakl\u0131 ve g\u00fcvenilir bir ili\u015fkisel veritaban\u0131 y\u00f6netim sistemidir. Rails uygulamalar\u0131yla m\u00fckemmel bir uyum sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y postgresql postgresql-contrib libpq-dev<\/code><\/pre>\n<p>*   <code>postgresql<\/code>: PostgreSQL sunucu paketidir.<br \/>\n*   <code>postgresql-contrib<\/code>: PostgreSQL i\u00e7in ek mod\u00fcller ve ara\u00e7lar i\u00e7erir.<br \/>\n*   <code>libpq-dev<\/code>: PostgreSQL C k\u00fct\u00fcphanesi geli\u015ftirme ba\u015fl\u0131klar\u0131d\u0131r, <code>pg<\/code> gem&#8217;inin derlenmesi i\u00e7in gereklidir.<\/p>\n<p>Kurulumdan sonra, PostgreSQL varsay\u0131lan olarak <code>postgres<\/code> adl\u0131 bir sistem kullan\u0131c\u0131s\u0131 ve bu kullan\u0131c\u0131ya ait bir rol olu\u015fturur. Uygulaman\u0131z i\u00e7in \u00f6zel bir veritaban\u0131 kullan\u0131c\u0131s\u0131 ve veritaban\u0131 olu\u015fturman\u0131z gerekmektedir.<\/p>\n<pre><code class=\"language-bash\"># postgres kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131n\nsudo -u postgres psql\n\n<h2>Yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 olu\u015fturun<\/h2>\n<h2>Komut isteminde \u015fifre belirlemeniz istenecektir.<\/h2>\nCREATE USER your_app_user WITH PASSWORD 'your_secure_password';\n\n<h2>Yeni bir veritaban\u0131 olu\u015fturun ve sahibini belirleyin<\/h2>\nCREATE DATABASE your_app_production OWNER your_app_user;\n\n<h2>Ba\u011flant\u0131lar\u0131 k\u0131s\u0131tlamak isterseniz, izinleri d\u00fczenleyebilirsiniz.<\/h2>\n<h2>\u00d6rne\u011fin, sadece yerel ba\u011flant\u0131lara izin vermek i\u00e7in:<\/h2>\n<h2>REVOKE ALL ON DATABASE your_app_production FROM PUBLIC;<\/h2>\n<h2>GRANT ALL PRIVILEGES ON DATABASE your_app_production TO your_app_user;<\/h2>\n\n<h2>psql'den \u00e7\u0131k\u0131n<\/h2>\n\\q<\/code><\/pre>\n<p>Veritaban\u0131 kullan\u0131c\u0131n\u0131z ve veritaban\u0131n\u0131z haz\u0131r. Uygulaman\u0131z\u0131n <code>config\/database.yml<\/code> dosyas\u0131n\u0131 bu bilgilerle g\u00fcncelleyeceksiniz.<\/p>\n<h4>MySQL Kurulumu (Alternatif)<\/h4>\n<p>E\u011fer uygulaman\u0131z MySQL kullan\u0131yorsa, a\u015fa\u011f\u0131daki komutlarla MySQL sunucusunu ve gerekli k\u00fct\u00fcphaneleri kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev<\/code><\/pre>\n<p>Kurulum s\u0131ras\u0131nda MySQL root \u015fifresi belirlemeniz istenecektir. Daha sonra, PostgreSQL&#8217;de yapt\u0131\u011f\u0131n\u0131z gibi bir veritaban\u0131 kullan\u0131c\u0131s\u0131 ve veritaban\u0131 olu\u015fturman\u0131z gerekecektir.<\/p>\n<pre><code class=\"language-bash\"># MySQL'e root kullan\u0131c\u0131s\u0131 ile ba\u011flan\u0131n\nsudo mysql -u root -p\n\n<h2>Yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 olu\u015fturun<\/h2>\nCREATE USER 'your_app_user'@'localhost' IDENTIFIED BY 'your_secure_password';\n\n<h2>Yeni bir veritaban\u0131 olu\u015fturun<\/h2>\nCREATE DATABASE your_app_production;\n\n<h2>Kullan\u0131c\u0131ya veritaban\u0131 \u00fczerinde t\u00fcm yetkileri verin<\/h2>\nGRANT ALL PRIVILEGES ON your_app_production.* TO 'your_app_user'@'localhost';\nFLUSH PRIVILEGES;\n\n<h2>MySQL'den \u00e7\u0131k\u0131n<\/h2>\nEXIT;<\/code><\/pre>\n<p>Hangi veritaban\u0131n\u0131 kullan\u0131rsan\u0131z kullan\u0131n, uygulaman\u0131z\u0131n <code>database.yml<\/code> dosyas\u0131n\u0131 \u00fcretim ortam\u0131 i\u00e7in do\u011fru \u015fekilde yap\u0131land\u0131rman\u0131z gerekecektir.<\/p>\n<h3>Rails Uygulamas\u0131n\u0131n Sunucuya Aktar\u0131lmas\u0131<\/h3>\n<p>Art\u0131k sunucunuz haz\u0131r oldu\u011funa g\u00f6re, Rails uygulaman\u0131z\u0131n kodunu sunucuya aktarabilir ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleyebilirsiniz.<\/p>\n<h4>Uygulama Klonlama<\/h4>\n<p>Uygulaman\u0131z\u0131 genellikle <code>\/var\/www<\/code> dizini alt\u0131na klonlamak en yayg\u0131n y\u00f6ntemdir. Bu dizin, web sunucusu taraf\u0131ndan eri\u015filebilir olmas\u0131 gereken web siteleri i\u00e7in standart bir konumdur.<\/p>\n<pre><code class=\"language-bash\"># \/var\/www dizinini olu\u015fturun (e\u011fer yoksa)\nsudo mkdir -p \/var\/www\n\n<h2>Uygulaman\u0131z\u0131 klonlay\u0131n<\/h2>\nsudo git clone <your_repository_url> \/var\/www\/your_app_name\n\n<h2>Klonlanan dizinin sahibini de\u011fi\u015ftirin<\/h2>\n<h2>Bu ad\u0131m, uygulama dosyalar\u0131 \u00fczerinde i\u015flem yapabilmek i\u00e7in \u00f6nemlidir.<\/h2>\n<h2>Genellikle uygulama i\u00e7in ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturmak ve bu kullan\u0131c\u0131ya sahip olmak daha g\u00fcvenlidir.<\/h2>\n<h2>Ancak basit da\u011f\u0131t\u0131mlar i\u00e7in mevcut SSH kullan\u0131c\u0131n\u0131z\u0131 veya www-data'y\u0131 kullanabilirsiniz.<\/h2>\n<h2>Burada, SSH kullan\u0131c\u0131n\u0131za sahip olman\u0131z\u0131 varsay\u0131yoruz:<\/h2>\nsudo chown -R $USER:$USER \/var\/www\/your_app_name\n\n<h2>Uygulama dizinine ge\u00e7i\u015f yap\u0131n<\/h2>\ncd \/var\/www\/your_app_name<\/code><\/pre>\n<p><code><your_repository_url><\/code> yerine uygulaman\u0131z\u0131n Git deposunun URL&#8217;sini (\u00f6rn. <code>git@github.com:kullaniciadi\/uygulama.git<\/code>) ve <code>your_app_name<\/code> yerine uygulaman\u0131z\u0131n ad\u0131n\u0131 yazmal\u0131s\u0131n\u0131z.<\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Y\u00fcklenmesi<\/h4>\n<p>Uygulama dizinine ge\u00e7tikten sonra, <code>bundle install<\/code> komutunu kullanarak uygulaman\u0131z\u0131n Gemfile&#8217;\u0131nda belirtilen t\u00fcm gem&#8217;leri y\u00fcklemelisiniz. \u00dcretim ortam\u0131 i\u00e7in, geli\u015ftirme ve test ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fcklememek \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">bundle install --deployment --without development test<\/code><\/pre>\n<p>*   <code>--deployment<\/code>: Gem&#8217;leri sistem genelinde de\u011fil, uygulama dizini i\u00e7inde <code>vendor\/bundle<\/code> alt\u0131na y\u00fckler. Bu, uygulamalar aras\u0131 \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler ve daha izole bir ortam sa\u011flar.<br \/>\n*   <code>--without development test<\/code>: <code>Gemfile<\/code> dosyas\u0131ndaki <code>development<\/code> ve <code>test<\/code> gruplar\u0131ndaki gem&#8217;leri y\u00fcklemez.<\/p>\n<h4>Veritaban\u0131 Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Uygulaman\u0131z\u0131n <code>config\/database.yml<\/code> dosyas\u0131n\u0131 \u00fcretim ortam\u0131 i\u00e7in do\u011fru veritaban\u0131 bilgileriyle d\u00fczenlemeniz gerekmektedir.<\/p>\n<pre><code class=\"language-yaml\"># config\/database.yml (\u00f6rnek)\nproduction:\n  adapter: postgresql\n  encoding: unicode\n  pool: 5\n  database: your_app_production\n  username: your_app_user\n  password: your_secure_password\n  host: localhost<\/code><\/pre>\n<p>Bu dosyay\u0131 d\u00fczenlemek i\u00e7in <code>nano<\/code> veya <code>vim<\/code> gibi bir metin d\u00fczenleyici kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">nano config\/database.yml<\/code><\/pre>\n<p><code>your_app_production<\/code>, <code>your_app_user<\/code> ve <code>your_secure_password<\/code> de\u011ferlerini kendi veritaban\u0131 ayarlar\u0131n\u0131zla de\u011fi\u015ftirmeyi unutmay\u0131n.<\/p>\n<h4>Ortam De\u011fi\u015fkenleri ve Gizli Anahtarlar<\/h4>\n<p>Rails uygulamalar\u0131, g\u00fcvenlik i\u00e7in <code>SECRET_KEY_BASE<\/code> gibi gizli anahtarlara ihtiya\u00e7 duyar. Ayr\u0131ca, API anahtarlar\u0131 veya di\u011fer hassas bilgiler gibi ortam de\u011fi\u015fkenlerini de y\u00f6netmeniz gerekebilir.<\/p>\n<p><code>SECRET_KEY_BASE<\/code>&#8216;i olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">RAILS_ENV=production bundle exec rake secret<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131n\u0131 kopyalay\u0131n. Ard\u0131ndan, bu anahtar\u0131 uygulaman\u0131z\u0131n <code>config\/secrets.yml<\/code> dosyas\u0131na eklemelisiniz:<\/p>\n<pre><code class=\"language-yaml\"># config\/secrets.yml\nproduction:\n  secret_key_base: <BURAYA_OLU\u015eTURDU\u011eUNUZ_ANAHTARI_YAPI\u015eTIRIN><\/code><\/pre>\n<p>Di\u011fer ortam de\u011fi\u015fkenlerini y\u00f6netmek i\u00e7in, Passenger&#8217;\u0131n Apache yap\u0131land\u0131rmas\u0131nda <code>PassengerAppEnv<\/code> direktifi ile <code>production<\/code> ortam\u0131n\u0131 belirtmenin yan\u0131 s\u0131ra, <code>PassengerEnv<\/code> direktifi ile ek de\u011fi\u015fkenler tan\u0131mlayabilir veya <code>config\/application.yml<\/code> gibi bir dosya kullan\u0131p bunu <code>.gitignore<\/code>&#8216;a ekleyebilirsiniz.<\/p>\n<h4>Asset Precompilation<\/h4>\n<p>Rails uygulamalar\u0131, JavaScript ve CSS dosyalar\u0131n\u0131 (asset&#8217;leri) \u00fcretim ortam\u0131nda performans i\u00e7in derler ve s\u0131k\u0131\u015ft\u0131r\u0131r. Bu i\u015flem, genellikle da\u011f\u0131t\u0131m s\u0131ras\u0131nda yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">RAILS_ENV=production bundle exec rake assets:precompile<\/code><\/pre>\n<p>Bu komut, uygulaman\u0131z\u0131n <code>public\/assets<\/code> dizinine s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ve parmak izli (fingerprinted) asset dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r.<\/p>\n<h4>Veritaban\u0131 Olu\u015fturma ve G\u00f6\u00e7 Etme<\/h4>\n<p>Son olarak, veritaban\u0131n\u0131z\u0131 olu\u015fturman\u0131z ve \u015femay\u0131 uygulaman\u0131z\u0131n model tan\u0131mlar\u0131na g\u00f6re yap\u0131land\u0131rman\u0131z gerekmektedir.<\/p>\n<pre><code class=\"language-bash\">RAILS_ENV=production bundle exec rake db:create\nRAILS_ENV=production bundle exec rake db:migrate<\/code><\/pre>\n<p>E\u011fer uygulaman\u0131zda ba\u015flang\u0131\u00e7 verileri (seed data) varsa, bunlar\u0131 da y\u00fckleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">RAILS_ENV=production bundle exec rake db:seed<\/code><\/pre>\n<h4>Dizin \u0130zinleri<\/h4>\n<p>Web sunucusunun uygulaman\u0131z\u0131n belirli dizinlerine (\u00f6rne\u011fin, <code>public<\/code>, <code>log<\/code>, <code>tmp<\/code>) yazma eri\u015fimine sahip olmas\u0131 gerekebilir. Apache&#8217;nin varsay\u0131lan kullan\u0131c\u0131s\u0131 <code>www-data<\/code>&#8216;d\u0131r.<\/p>\n<pre><code class=\"language-bash\"># Log ve tmp dizinlerine www-data kullan\u0131c\u0131s\u0131na yazma izni verin\nsudo chown -R $USER:www-data \/var\/www\/your_app_name\nsudo chmod -R g+w \/var\/www\/your_app_name\/log\nsudo chmod -R g+w \/var\/www\/your_app_name\/tmp\n\n<h2>public dizininin da www-data taraf\u0131ndan okunabilir oldu\u011fundan emin olun<\/h2>\nsudo chmod -R o+r \/var\/www\/your_app_name\/public<\/code><\/pre>\n<p>Bu ad\u0131m, uygulaman\u0131z\u0131n log dosyalar\u0131n\u0131 yazabilmesi, ge\u00e7ici dosyalar olu\u015fturabilmesi ve web sunucusunun statik asset&#8217;lere eri\u015febilmesi i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Apache Web Sunucusunun Kurulumu ve Yap\u0131land\u0131r\u0131lmas\u0131<\/h3>\n<p>Apache HTTP Sunucusu, d\u00fcnyan\u0131n en pop\u00fcler web sunucular\u0131ndan biridir ve Rails uygulamalar\u0131 i\u00e7in sa\u011flam bir platform sa\u011flar.<\/p>\n<h4>Apache Kurulumu<\/h4>\n<p>Apache&#8217;yi kurmak olduk\u00e7a basittir:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y apache2<\/code><\/pre>\n<p>Kurulumdan sonra Apache otomatik olarak ba\u015flayacakt\u0131r. Taray\u0131c\u0131n\u0131zda sunucunuzun IP adresine giderek varsay\u0131lan Apache &#8220;It works!&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Gerekli Apache Mod\u00fclleri<\/h4>\n<p>Rails uygulamalar\u0131 genellikle URL yeniden yazma (rewrite) ve HTTP ba\u015fl\u0131klar\u0131n\u0131 y\u00f6netme gibi i\u015flevler i\u00e7in belirli Apache mod\u00fcllerine ihtiya\u00e7 duyar.<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod rewrite\nsudo a2enmod headers<\/code><\/pre>\n<p>*   <code>rewrite<\/code>: URL yeniden yazma kurallar\u0131n\u0131 etkinle\u015ftirir. Rails&#8217;in router&#8217;\u0131 i\u00e7in gereklidir.<br \/>\n*   <code>headers<\/code>: HTTP ba\u015fl\u0131klar\u0131n\u0131 ayarlaman\u0131za olanak tan\u0131r. G\u00fcvenlik ba\u015fl\u0131klar\u0131 veya CORS ayarlar\u0131 i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>Mod\u00fclleri etkinle\u015ftirdikten sonra Apache&#8217;yi yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo service apache2 restart<\/code><\/pre>\n<h3>Passenger Kurulumu ve Apache ile Entegrasyonu<\/h3>\n<p>Phusion Passenger, Rails uygulamalar\u0131n\u0131 Apache veya Nginx gibi web sunucular\u0131yla entegre etmek i\u00e7in tasarlanm\u0131\u015f, kullan\u0131m\u0131 kolay bir uygulama sunucusudur.<\/p>\n<h4>Passenger Gem Kurulumu<\/h4>\n<p>Passenger&#8217;\u0131 bir Ruby gem&#8217;i olarak kurman\u0131z gerekmektedir:<\/p>\n<pre><code class=\"language-bash\">gem install passenger\nrbenv rehash<\/code><\/pre>\n<p>Bu komut, Passenger gem&#8217;ini kurar. Ancak bu, hen\u00fcz Apache ile entegre oldu\u011fu anlam\u0131na gelmez.<\/p>\n<h4>Passenger Apache Mod\u00fcl\u00fc Kurulumu<\/h4>\n<p>Passenger&#8217;\u0131 Apache ile entegre etmek i\u00e7in \u00f6zel bir kurulum beti\u011fi \u00e7al\u0131\u015ft\u0131rman\u0131z gerekmektedir:<\/p>\n<pre><code class=\"language-bash\">sudo passenger-install-apache2-module<\/code><\/pre>\n<p>Bu betik, Apache mod\u00fcl\u00fcn\u00fc derleyecek ve yap\u0131land\u0131rma talimatlar\u0131n\u0131 g\u00f6sterecektir. Y\u00fckleyici size bir dizi soru sorabilir; genellikle varsay\u0131lan se\u00e7enekleri kabul edebilirsiniz. Kurulumun sonunda, Passenger Apache mod\u00fcl\u00fcn\u00fc y\u00fcklemek i\u00e7in Apache yap\u0131land\u0131rma dosyas\u0131na eklemeniz gereken bir dizi sat\u0131r g\u00f6sterecektir. Bu \u00e7\u0131kt\u0131y\u0131 dikkatlice kopyalay\u0131n.<\/p>\n<p>\u00d6rnek \u00e7\u0131kt\u0131ya benzer bir \u015fey g\u00f6receksiniz:<\/p>\n<pre><code class=\"language-apache\">LoadModule passenger_module \/home\/your_user\/.rbenv\/versions\/2.3.8\/lib\/ruby\/gems\/2.3.0\/gems\/passenger-5.x.x\/buildout\/apache2\/mod_passenger.so\n<IfModule mod_passenger.so>\n  PassengerRoot \/home\/your_user\/.rbenv\/versions\/2.3.8\/lib\/ruby\/gems\/2.3.0\/gems\/passenger-5.x.x\n  PassengerDefaultRuby \/home\/your_user\/.rbenv\/versions\/2.3.8\/bin\/ruby\n<\/IfModule><\/code><\/pre>\n<p>Bu sat\u0131rlar\u0131 Apache&#8217;nin mod\u00fcl yap\u0131land\u0131rma dizinine yeni bir dosya olarak eklemelisiniz.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/mods-available\/passenger.conf<\/code><\/pre>\n<p>Kopyalad\u0131\u011f\u0131n\u0131z sat\u0131rlar\u0131 bu dosyaya yap\u0131\u015ft\u0131r\u0131n ve kaydedin. Dosyan\u0131n i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olacakt\u0131r (yollar kendi sisteminize g\u00f6re de\u011fi\u015febilir):<\/p>\n<pre><code class=\"language-apache\"># \/etc\/apache2\/mods-available\/passenger.conf\nLoadModule passenger_module \/home\/your_user\/.rbenv\/versions\/2.3.8\/lib\/ruby\/gems\/2.3.0\/gems\/passenger-5.x.x\/buildout\/apache2\/mod_passenger.so\n<IfModule mod_passenger.so>\n  PassengerRoot \/home\/your_user\/.rbenv\/versions\/2.3.8\/lib\/ruby\/gems\/2.3.0\/gems\/passenger-5.x.x\n  PassengerDefaultRuby \/home\/your_user\/.rbenv\/versions\/2.3.8\/bin\/ruby\n<\/IfModule><\/code><\/pre>\n<p>Passenger mod\u00fcl\u00fcn\u00fc Apache i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod passenger<\/code><\/pre>\n<p>Ve Apache&#8217;yi yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service apache2 restart<\/code><\/pre>\n<p>Bu ad\u0131mlarla Passenger, Apache ile ba\u015far\u0131yla entegre edilmi\u015f olmal\u0131d\u0131r.<\/p>\n<h3>Apache Sanal Host Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Uygulaman\u0131z\u0131n belirli bir etki alan\u0131 ad\u0131yla (domain name) eri\u015filebilir olmas\u0131 i\u00e7in Apache&#8217;de bir sanal host (Virtual Host) yap\u0131land\u0131rmas\u0131 olu\u015fturman\u0131z gerekmektedir.<\/p>\n<p>Yeni bir sanal host yap\u0131land\u0131rma dosyas\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/your_app_name.conf<\/code><\/pre>\n<p>Bu dosyaya a\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 ekleyin. Kendi etki alan\u0131 ad\u0131n\u0131z\u0131 ve uygulama dizininizi do\u011fru \u015fekilde de\u011fi\u015ftirdi\u011finizden emin olun.<\/p>\n<pre><code class=\"language-apache\"># \/etc\/apache2\/sites-available\/your_app_name.conf\n<VirtualHost *:80>\n    ServerName your_domain.com\n    ServerAlias www.your_domain.com\n    DocumentRoot \/var\/www\/your_app_name\/public\n\n    # Rails uygulaman\u0131z\u0131n k\u00f6k dizini\n    # Passenger bu dizini kullanarak uygulaman\u0131z\u0131 ba\u015flatacakt\u0131r\n    # PassengerAppRoot \/var\/www\/your_app_name (PassengerDefaultRuby tan\u0131mland\u0131\u011f\u0131 i\u00e7in genellikle gereksizdir)\n\n    # Uygulaman\u0131n \u00e7al\u0131\u015faca\u011f\u0131 Rails ortam\u0131\n    PassengerAppEnv production\n\n    <Directory \/var\/www\/your_app_name\/public>\n        # Apache'nin .htaccess dosyalar\u0131n\u0131 i\u015flemesine izin verir\n        AllowOverride all\n        # Dizindeki dosyalar\u0131n listelenmesini engeller\n        Options -MultiViews\n        # Apache'nin bu dizine eri\u015fmesine izin verir\n        Require all granted\n    <\/Directory>\n\n    # Hata ve eri\u015fim loglar\u0131\n    ErrorLog ${APACHE_LOG_DIR}\/your_app_name_error.log\n    CustomLog ${APACHE_LOG_DIR}\/your_app_name_access.log combined\n<\/VirtualHost><\/code><\/pre>\n<p>*   <code>ServerName<\/code>: Uygulaman\u0131z\u0131n birincil etki alan\u0131 ad\u0131d\u0131r.<br \/>\n*   <code>ServerAlias<\/code>: Uygulaman\u0131z i\u00e7in alternatif etki alan\u0131 adlar\u0131d\u0131r (\u00f6rne\u011fin, <code>www<\/code> \u00f6n eki ile).<br \/>\n*   <code>DocumentRoot<\/code>: Rails uygulaman\u0131z\u0131n <code>public<\/code> dizinini i\u015faret etmelidir. Bu, web sunucusunun statik varl\u0131klara ve uygulaman\u0131n giri\u015f noktas\u0131na eri\u015fmesini sa\u011flar.<br \/>\n*   <code>PassengerAppEnv production<\/code>: Passenger&#8217;a Rails uygulamas\u0131n\u0131 <code>production<\/code> ortam\u0131nda ba\u015flatmas\u0131n\u0131 s\u00f6yler. Bu, Rails&#8217;in \u00fcretim modunda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code><Directory><\/code> blo\u011fu, Apache&#8217;nin <code>public<\/code> dizini i\u00e7in \u00f6zel kurallar\u0131 tan\u0131mlar. <code>AllowOverride all<\/code> Rails&#8217;in <code>.htaccess<\/code> dosyas\u0131ndaki y\u00f6nlendirme kurallar\u0131n\u0131 kullanmas\u0131na izin verir.<\/p>\n<p>Sanal hostu etkinle\u015ftirin ve varsay\u0131lan sanal hostu devre d\u0131\u015f\u0131 b\u0131rak\u0131n (e\u011fer sadece bu uygulamay\u0131 bar\u0131nd\u0131r\u0131yorsan\u0131z):<\/p>\n<pre><code class=\"language-bash\">sudo a2ensite your_app_name.conf\nsudo a2dissite 000-default.conf # Varsay\u0131lan Apache sayfas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131r<\/code><\/pre>\n<p>Son olarak, Apache&#8217;yi yeniden ba\u015flatarak de\u011fi\u015fikliklerin etkili olmas\u0131n\u0131 sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service apache2 restart<\/code><\/pre>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zdan <code>your_domain.com<\/code> adresine giderek Rails uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz!<\/p>\n<h3>G\u00fcvenlik \u0130pu\u00e7lar\u0131 ve Ek Ayarlar<\/h3>\n<p>Uygulaman\u0131z canl\u0131ya al\u0131nd\u0131\u011f\u0131nda, g\u00fcvenlik ve bak\u0131m i\u00e7in baz\u0131 ek ad\u0131mlar atmak \u00f6nemlidir.<\/p>\n<h4>SSL\/TLS Kurulumu (HTTPS)<\/h4>\n<p>T\u00fcm modern web uygulamalar\u0131 i\u00e7in HTTPS kullanmak zorunludur. Let&#8217;s Encrypt ve Certbot, \u00fccretsiz ve otomatikle\u015ftirilmi\u015f SSL sertifikalar\u0131 sa\u011flar. Ubuntu 14.04 i\u00e7in Certbot kurulumu biraz farkl\u0131 olabilir \u00e7\u00fcnk\u00fc varsay\u0131lan depolarda olmayabilir.<\/p>\n<pre><code class=\"language-bash\"># Certbot PPA's\u0131n\u0131 ekleyin\nsudo apt-get install software-properties-common\nsudo add-apt-repository ppa:certbot\/certbot -y\nsudo apt-get update\n\n<h2>Certbot'u ve Apache eklentisini kurun<\/h2>\nsudo apt-get install -y certbot python-certbot-apache\n\n<h2>Sertifikay\u0131 al\u0131n ve Apache yap\u0131land\u0131rmas\u0131n\u0131 otomatik olarak g\u00fcncelleyin<\/h2>\nsudo certbot --apache -d your_domain.com -d www.your_domain.com<\/code><\/pre>\n<p>Certbot, sertifikay\u0131 alacak ve Apache sanal host yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak HTTPS&#8217;ye y\u00f6nlendirecek \u015fekilde g\u00fcncelleyecektir. Ayr\u0131ca sertifikalar\u0131n otomatik yenilenmesini de ayarlayacakt\u0131r.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 (UFW)<\/h4>\n<p>Sunucunuzun g\u00fcvenli\u011fini sa\u011flamak i\u00e7in bir g\u00fcvenlik duvar\u0131 (\u00f6rne\u011fin, UFW &#8211; Uncomplicated Firewall) kullanmak kritik \u00f6neme sahiptir.<\/p>\n<pre><code class=\"language-bash\">sudo ufw enable\nsudo ufw allow ssh # SSH eri\u015fimine izin ver (port 22)\nsudo ufw allow http # HTTP eri\u015fimine izin ver (port 80)\nsudo ufw allow https # HTTPS eri\u015fimine izin ver (port 443)\nsudo ufw status # G\u00fcvenlik duvar\u0131 durumunu kontrol edin<\/code><\/pre>\n<p>Bu, sunucunuza sadece gerekli portlar \u00fczerinden eri\u015filmesini sa\u011flar.<\/p>\n<h4>Log Y\u00f6netimi<\/h4>\n<p>Uygulaman\u0131z\u0131n ve web sunucunuzun loglar\u0131n\u0131 d\u00fczenli olarak kontrol etmek, sorun giderme ve performans izleme i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<p>*   <strong>Rails Uygulama Loglar\u0131:<\/strong> <code>\/var\/www\/your_app_name\/log\/production.log<\/code><br \/>\n*   <strong>Apache Hata Loglar\u0131:<\/strong> <code>\/var\/log\/apache2\/error.log<\/code><br \/>\n*   <strong>Apache Eri\u015fim Loglar\u0131:<\/strong> <code>\/var\/log\/apache2\/access.log<\/code> veya sanal host yap\u0131land\u0131rman\u0131zda belirtti\u011finiz \u00f6zel log dosyalar\u0131 (<code>your_app_name_error.log<\/code>, <code>your_app_name_access.log<\/code>).<\/p>\n<p>Bu log dosyalar\u0131n\u0131 <code>tail -f<\/code> komutuyla canl\u0131 olarak izleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">tail -f \/var\/www\/your_app_name\/log\/production.log<\/code><\/pre>\n<h4>Otomatik Ba\u015flatma<\/h4>\n<p>Apache ve Passenger, sunucunuz yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamal\u0131d\u0131r. Ubuntu 14.04&#8217;te Apache varsay\u0131lan olarak bu \u015fekilde yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Passenger, Apache mod\u00fcl\u00fc olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, Apache ba\u015flad\u0131\u011f\u0131nda o da otomatik olarak \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<h4>Ortam De\u011fi\u015fkenleri<\/h4>\n<p>Hassas bilgileri (veritaban\u0131 \u015fifreleri, API anahtarlar\u0131 vb.) do\u011frudan kod i\u00e7inde tutmak yerine ortam de\u011fi\u015fkenleri olarak y\u00f6netmek daha g\u00fcvenlidir. Passenger, sanal host yap\u0131land\u0131rman\u0131za <code>PassengerEnv<\/code> direktifi ekleyerek ortam de\u011fi\u015fkenlerini ayarlaman\u0131za olanak tan\u0131r:<\/p>\n<pre><code class=\"language-apache\"># \/etc\/apache2\/sites-available\/your_app_name.conf i\u00e7ine\n<VirtualHost *:80>\n    # ... di\u011fer ayarlar ...\n    PassengerAppEnv production\n    PassengerEnv RAILS_MASTER_KEY your_master_key_here # Rails 5.2+ credentials i\u00e7in\n    PassengerEnv AWS_ACCESS_KEY_ID your_aws_access_key\n    # ...\n<\/VirtualHost><\/code><\/pre>\n<p>Veya daha g\u00fcvenli bir y\u00f6ntem olarak, <code>config\/secrets.yml<\/code> dosyas\u0131n\u0131 Rails 5.2+ <code>credentials.yml.enc<\/code> veya <code>dotenv<\/code> gem&#8217;i ile <code>.env<\/code> dosyas\u0131 kullanarak y\u00f6netmek daha iyi bir yakla\u015f\u0131md\u0131r. Passenger, <code>.env<\/code> dosyalar\u0131n\u0131 otomatik olarak y\u00fcklemez, bu nedenle uygulama kodunuzda bu dosyay\u0131 y\u00fcklemeyi sa\u011flaman\u0131z veya ortam de\u011fi\u015fkenlerini Apache yap\u0131land\u0131rmas\u0131nda belirtmeniz gerekir.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Da\u011f\u0131t\u0131m s\u00fcrecinde sorunlarla kar\u015f\u0131la\u015fmak olduk\u00e7a yayg\u0131nd\u0131r. \u0130\u015fte kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcm yollar\u0131:<\/p>\n<p>*   <strong>&#8220;It works!&#8221; sayfas\u0131 g\u00f6r\u00fcn\u00fcyor veya 404 hatas\u0131 al\u0131yorum:<\/strong><br \/>\n    *   Apache sanal host yap\u0131land\u0131rman\u0131z\u0131n do\u011fru oldu\u011fundan emin olun (<code>\/etc\/apache2\/sites-available\/your_app_name.conf<\/code>).<br \/>\n    *   <code>a2ensite your_app_name.conf<\/code> komutuyla sanal hostunuzu etkinle\u015ftirdi\u011finizden emin olun.<br \/>\n    *   <code>000-default.conf<\/code> gibi di\u011fer sanal hostlar\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n (<code>a2dissite 000-default.conf<\/code>).<br \/>\n    *   Apache&#8217;yi yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun (<code>sudo service apache2 restart<\/code>).<br \/>\n    *   <code>DocumentRoot<\/code>&#8216;un <code>\/var\/www\/your_app_name\/public<\/code>&#8216;i i\u015faret etti\u011finden emin olun.<br \/>\n*   <strong>500 Internal Server Error veya Beyaz Sayfa:<\/strong><br \/>\n    *   En olas\u0131 neden, uygulaman\u0131z\u0131n kendisinde bir hatad\u0131r. Rails <code>production.log<\/code> dosyas\u0131n\u0131 kontrol edin: <code>tail -f \/var\/www\/your_app_name\/log\/production.log<\/code>.<br \/>\n    *   Apache <code>error.log<\/code> dosyas\u0131n\u0131 kontrol edin: <code>tail -f \/var\/log\/apache2\/error.log<\/code>.<br \/>\n    *   Dosya izinlerini kontrol edin. <code>www-data<\/code> kullan\u0131c\u0131s\u0131n\u0131n <code>log<\/code>, <code>tmp<\/code> ve <code>public<\/code> dizinlerine yazma ve okuma eri\u015fimi oldu\u011fundan emin olun.<br \/>\n    *   Veritaban\u0131 ba\u011flant\u0131 bilgilerinin <code>config\/database.yml<\/code> dosyas\u0131nda do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <code>SECRET_KEY_BASE<\/code>&#8216;in <code>config\/secrets.yml<\/code> dosyas\u0131nda ayarland\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   <code>bundle install --deployment<\/code> komutunu do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan ve t\u00fcm gem&#8217;lerin y\u00fckl\u00fc oldu\u011fundan emin olun.<br \/>\n    *   <code>RAILS_ENV=production bundle exec rake assets:precompile<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n*   <strong>Passenger ile ilgili hatalar:<\/strong><br \/>\n    *   <code>passenger-install-apache2-module<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 <code>passenger.conf<\/code> dosyas\u0131na do\u011fru kopyalad\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n    *   Passenger mod\u00fcl\u00fcn\u00fc etkinle\u015ftirdi\u011finizden emin olun: <code>sudo a2enmod passenger<\/code>.<br \/>\n    *   Apache&#8217;yi yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n    *   <code>PassengerDefaultRuby<\/code> yolunun do\u011fru Ruby ikili dosyas\u0131n\u0131 i\u015faret etti\u011finden emin olun (\u00f6rne\u011fin, rbenv taraf\u0131ndan kurulan Ruby).<br \/>\n*   <strong>Veritaban\u0131 ba\u011flant\u0131 sorunlar\u0131:<\/strong><br \/>\n    *   Veritaban\u0131 sunucusunun \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun (<code>sudo service postgresql status<\/code> veya <code>sudo service mysql status<\/code>).<br \/>\n    *   Veritaban\u0131 kullan\u0131c\u0131s\u0131 ve \u015fifresinin do\u011fru oldu\u011fundan ve bu kullan\u0131c\u0131n\u0131n veritaban\u0131na eri\u015fim izinlerine sahip oldu\u011fundan emin olun.<br \/>\n    *   <code>libpq-dev<\/code> (PostgreSQL i\u00e7in) veya <code>libmysqlclient-dev<\/code> (MySQL i\u00e7in) gibi geli\u015ftirme ba\u015fl\u0131klar\u0131n\u0131n y\u00fckl\u00fc oldu\u011fundan emin olun.<br \/>\n    *   <code>pg<\/code> veya <code>mysql2<\/code> gem&#8217;lerinin <code>bundle install<\/code> s\u0131ras\u0131nda ba\u015far\u0131yla derlendi\u011finden emin olun.<\/p>\n<p>Bu ad\u0131mlar, \u00e7o\u011fu da\u011f\u0131t\u0131m sorununu te\u015fhis etmenize ve \u00e7\u00f6zmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n, log dosyalar\u0131 en iyi arkada\u015f\u0131n\u0131zd\u0131r!<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Ubuntu 14.04 \u00fczerinde Phusion Passenger ve Apache ile bir Rails uygulamas\u0131 da\u011f\u0131tmak, dikkatli bir planlama ve ad\u0131m ad\u0131m uygulama gerektiren kapsaml\u0131 bir s\u00fcre\u00e7tir. Bu rehberde, sunucunuzu haz\u0131rlamaktan ba\u015flayarak Ruby ve veritaban\u0131 kurulumuna, uygulaman\u0131z\u0131n sunucuya aktar\u0131lmas\u0131na, Apache ve Passenger entegrasyonuna ve son olarak sanal host yap\u0131land\u0131rmas\u0131na kadar t\u00fcm kritik ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. Ayr\u0131ca g\u00fcvenlik ipu\u00e7lar\u0131 ve yayg\u0131n sorun giderme y\u00f6ntemleri hakk\u0131nda da bilgi verdik.<\/p>\n<p>Bu ad\u0131mlar\u0131 dikkatlice takip ederek, Rails uygulaman\u0131z\u0131n \u00fcretim ortam\u0131nda kararl\u0131, performansl\u0131 ve g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz. Da\u011f\u0131t\u0131m, bir uygulaman\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn sadece bir par\u00e7as\u0131d\u0131r. Ba\u015far\u0131l\u0131 bir da\u011f\u0131t\u0131m\u0131n ard\u0131ndan, uygulaman\u0131z\u0131n performans\u0131n\u0131 izlemek, loglar\u0131 takip etmek ve d\u00fczenli g\u00fcvenlik g\u00fcncellemeleri yapmak da ayn\u0131 derecede \u00f6nemlidir.<\/p>\n<p>Unutmay\u0131n ki her uygulama ve sunucu ortam\u0131 kendine \u00f6zg\u00fc zorluklar bar\u0131nd\u0131rabilir. Bu rehber genel bir yol haritas\u0131 sunarken, kendi \u00f6zel durumunuza g\u00f6re ayarlamalar yapman\u0131z gerekebilir. \u0130leriye d\u00f6n\u00fck olarak, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi otomatikle\u015ftirmek (\u00f6rne\u011fin Capistrano veya CI\/CD ara\u00e7lar\u0131 ile) ve sunucu izleme \u00e7\u00f6z\u00fcmlerini entegre etmek, operasyonel y\u00fck\u00fcn\u00fcz\u00fc azaltacak ve uygulaman\u0131z\u0131n istikrar\u0131n\u0131 art\u0131racakt\u0131r. Ba\u015far\u0131l\u0131 bir da\u011f\u0131t\u0131m dile\u011fiyle!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 14.","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-41696","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 14.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-11T05:01:06+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=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2026-05-11T05:01:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\"},\"wordCount\":3295,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\",\"name\":\"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-11T05:01:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber","og_description":"Ubuntu 14.","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-11T05:01:06+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber","datePublished":"2026-05-11T05:01:06+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/"},"wordCount":3295,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/","name":"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-11T05:01:06+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-passenger-ve-apache-ile-rails-uygulamasi-dagitimi-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 14.04 \u00dczerinde Passenger ve Apache ile Rails Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131: Kapsaml\u0131 Bir Rehber"}]},{"@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\/41696","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=41696"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41696\/revisions"}],"predecessor-version":[{"id":41697,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41696\/revisions\/41697"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}