Takip et

CentOS 6 Üzerinde Apache ve Passenger ile Rails 4 Uygulaması Kurulumu

CentOS 6 Üzerinde Apache ve Passenger ile Rails 4 Uygulaması Kurulumu Giriş Web uygulaması geliştirme dünyasında Ruby on Rails (Rails), hızlı prototipleme ve sağlam, ölçeklenebilir uygulamalar oluşturma yeteneğiyle öne çıkan popüler bir çerçevedir.

CentOS 6 Üzerinde Apache ve Passenger ile Rails 4 Uygulaması Kurulumu

Giriş

Web uygulaması geliştirme dünyasında Ruby on Rails (Rails), hızlı prototipleme ve sağlam, ölçeklenebilir uygulamalar oluşturma yeteneğiyle öne çıkan popüler bir çerçevedir. Ancak bir Rails uygulamasını geliştirmenin yanı sıra, onu canlı bir sunucuda dağıtmak da önemli bir adımdır. Bu makalede, CentOS 6 işletim sistemi üzerinde Apache web sunucusu ve Phusion Passenger uygulama sunucusu kullanarak bir Rails 4 uygulamasının nasıl kurulacağını adım adım ele alacağız. CentOS 6, kararlılığı ve uzun süreli desteği ile bilinen bir sunucu işletim sistemidir. Apache, dünyanın en yaygın kullanılan web sunucularından biridir ve Passenger, Rails uygulamalarını Apache üzerinde kolayca çalıştırmayı sağlayan güçlü bir modüldür. Bu kombinasyon, üretim ortamları için güvenilir ve performanslı bir çözüm sunar.

Ön Gereksinimler

Kuruluma başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olun:

  • CentOS 6 yüklü bir sunucu (fiziksel veya sanal).
  • SSH erişimi olan bir kullanıcı (tercihen sudo yetkilerine sahip veya root kullanıcısı).
  • Temel Linux komut satırı bilgisi.
  • Minimum 1 GB RAM (tercihen 2 GB veya daha fazla).
  • Stabil bir internet bağlantısı.

Bu makalede, tüm komutların root kullanıcısı olarak veya sudo önekiyle çalıştırıldığı varsayılacaktır. Güvenlik nedeniyle sudo kullanılması önerilir.

Sistem Güncelleme ve Temel Araçların Kurulumu

CentOS 6 sisteminizi güncelleyerek ve gerekli temel geliştirme araçlarını kurarak başlayalım. Bu, olası bağımlılık sorunlarını önlemeye yardımcı olacaktır.

Sistemi Güncelleme

İlk olarak, sisteminizdeki tüm paketleri en son sürümlerine güncelleyin:

sudo yum update -y

Bu işlem biraz zaman alabilir. Tamamlandıktan sonra, sistemin yeniden başlatılması gerekebilir, ancak bu makale için zorunlu değildir.

Gerekli Geliştirme Araçlarını Kurma

Ruby ve diğer bağımlılıkları derlemek için bazı geliştirme araçlarına ihtiyacımız olacak:

sudo yum groupinstall "Development Tools" -y
sudo yum install curl wget git libyaml-devel libffi-devel readline-devel zlib-devel openssl-devel -y
  • Development Tools: Derleyiciler (gcc, g++), make ve diğer temel geliştirme araçlarını içerir.
  • curl, wget, git: Dosya indirme ve versiyon kontrolü için kullanılır.
  • libyaml-devel, libffi-devel, readline-devel, zlib-devel, openssl-devel: Ruby ve bazı gem’lerin derlenmesi için gerekli olan kütüphane başlık dosyalarıdır.

Ruby Kurulumu (RVM ile)

Sistem Ruby’sini kullanmak yerine, Ruby Version Manager (RVM) veya rbenv gibi bir araç kullanarak Ruby’yi kurmak en iyi uygulamadır. Bu, birden fazla Ruby sürümünü yönetmenize ve sistem paketlerinizle çakışmaları önlemenize olanak tanır. Bu makalede RVM kullanacağız.

RVM Kurulumu

RVM’yi kurmak için aşağıdaki adımları izleyin:

1. GPG Anahtarını İçe Aktarma:
RVM’nin bütünlüğünü doğrulamak için GPG anahtarını içe aktarın:

sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Eğer gpg komutu bulunamazsa, sudo yum install gnupg2 -y komutu ile kurun.

2. RVM Kurulum Betiğini Çalıştırma:
RVM’yi kurmak için resmi kurulum betiğini çalıştırın:

\curl -sSL https://get.rvm.io | bash -s stable

Bu komut, RVM’nin en kararlı sürümünü indirecek ve kuracaktır.

3. RVM Ortamını Yükleme:
Kurulumdan sonra, RVM’nin shell oturumunuza yüklenmesi gerekir. Bunun için mevcut oturumu kapatıp yeniden açabilir veya aşağıdaki komutu çalıştırabilirsiniz:

source /etc/profile.d/rvm.sh

Bu komutu her yeni terminal oturumunda çalıştırmak yerine, kalıcı olması için .bashrc veya .bash_profile dosyanıza ekleyebilirsiniz. Ancak bu makale için şimdilik yeterlidir.

Ruby Kurulumu

Rails 4, Ruby 2.0 veya daha yeni bir sürümünü gerektirir. Ruby 2.1.x serisi, Rails 4 ile iyi çalışır. Bu makalede Ruby 2.1.10 sürümünü kuracağız.

1. Ruby’yi Kurma:

rvm install ruby-2.1.10

Bu işlem biraz zaman alabilir, çünkü Ruby kaynak koddan derlenecektir.

2. Varsayılan Ruby Sürümünü Ayarlama:
Kurulum tamamlandıktan sonra, bu Ruby sürümünü varsayılan olarak ayarlayın:

rvm use ruby-2.1.10 --default

3. Kurulumu Doğrulama:
Ruby ve gem’in doğru bir şekilde kurulduğunu doğrulayın:

ruby -v
    gem -v

Çıktıda ruby 2.1.10p... ve gem sürümünü görmelisiniz.

4. Bundler Kurulumu:
Rails uygulamalarının bağımlılıklarını yönetmek için Bundler’a ihtiyacımız var:

gem install bundler

Rails Kurulumu

Ruby ve Bundler kurulduktan sonra, Rails çerçevesini kurabiliriz. Rails 4’ün en son kararlı sürümünü kuracağız.

1. Rails’i Kurma:

gem install rails -v 4.2.11

Bu, Rails 4.2 serisinin son sürümüdür. Belirli bir sürüm belirtmek, bağımlılık çakışmalarını önlemeye yardımcı olur.

2. Kurulumu Doğrulama:
Rails’in doğru bir şekilde kurulduğunu doğrulayın:

rails -v

Çıktıda Rails 4.2.11 veya kurduğunuz sürümü görmelisiniz.

Veritabanı Kurulumu (PostgreSQL)

Rails uygulamaları genellikle bir veritabanına ihtiyaç duyar. Bu makalede, PostgreSQL’i örnek olarak kullanacağız. MySQL veya SQLite gibi başka bir veritabanı da kullanabilirsiniz.

PostgreSQL Kurulumu

1. PostgreSQL Paketlerini Kurma:

sudo yum install postgresql-server postgresql-devel -y
  • postgresql-server: PostgreSQL veritabanı sunucusunu içerir.
  • postgresql-devel: Ruby pg gem’inin derlenmesi için gerekli olan geliştirme dosyalarını içerir.

2. Veritabanını Başlatma ve Yapılandırma:
PostgreSQL’i ilk kez kullanmadan önce veritabanı kümesini başlatmanız gerekir:

sudo service postgresql initdb

Ardından, PostgreSQL hizmetini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin:

sudo service postgresql start
    sudo chkconfig postgresql on

3. PostgreSQL Kullanıcısı ve Veritabanı Oluşturma:
Rails uygulamanız için bir veritabanı kullanıcısı ve veritabanı oluşturmanız gerekecek. postgres kullanıcısı olarak oturum açın ve gerekli komutları çalıştırın:

sudo -u postgres psql

psql komut isteminde aşağıdaki komutları girin (kullanıcı adını ve şifreyi kendi tercihlerinize göre değiştirin):

CREATE USER myapp_user WITH PASSWORD 'your_password';
    CREATE DATABASE myapp_production OWNER myapp_user;
    \q

Bu, myapp_user adında bir kullanıcı ve myapp_production adında bir veritabanı oluşturacaktır.

Rails Uygulaması Oluşturma

Şimdi bir Rails uygulaması oluşturabilir ve temel kurulumunu yapabiliriz.

1. Uygulama Oluşturma:
/var/www dizini genellikle web uygulamaları için kullanılır. Bu dizini oluşturun ve içine uygulamanızı oluşturun:

sudo mkdir -p /var/www
    cd /var/www
    rails new myapp -d postgresql

myapp yerine kendi uygulama adınızı kullanabilirsiniz. -d postgresql seçeneği, uygulamanın PostgreSQL veritabanı kullanacağını belirtir.

2. Uygulama Dizinini Kullanıcıya Atama:
Uygulama dizininin sahipliğini kendi kullanıcınıza atayın, böylece dosyaları düzenleyebilirsiniz:

sudo chown -R $USER:$USER /var/www/myapp

$USER yerine kendi kullanıcı adınızı yazın.

3. Uygulama Bağımlılıklarını Yükleme:
Uygulama dizinine gidin ve bundle install komutunu çalıştırarak tüm gem bağımlılıklarını yükleyin:

cd /var/www/myapp
    bundle install

4. Veritabanı Yapılandırması:
config/database.yml dosyasını açın ve üretim ortamı için veritabanı kimlik bilgilerini yapılandırın:

nano config/database.yml

production bloğunu aşağıdaki gibi düzenleyin:

production:
      adapter: postgresql
      encoding: unicode
      database: myapp_production
      pool: 5
      username: myapp_user
      password: your_password
      host: localhost

myapp_production, myapp_user ve your_password değerlerini daha önce oluşturduğunuz değerlerle değiştirin.

5. Veritabanı Oluşturma ve Göç Etme:
Veritabanını oluşturun ve varsa göçleri çalıştırın:

RAILS_ENV=production bundle exec rake db:create
    RAILS_ENV=production bundle exec rake db:migrate

Bu komutlar, üretim ortamı için veritabanını hazırlar.

6. Secret Key Base Oluşturma:
Rails 4.1 ve üzeri için secret_key_base gereklidir. Bunu config/secrets.yml dosyasında tanımlayın veya otomatik olarak oluşturun:

RAILS_ENV=production bundle exec rake secret

Çıktıdaki anahtarı config/secrets.yml dosyasındaki production bloğuna ekleyin:

production:
      secret_key_base: [çıktıdaki anahtar]

7. Varlıkların Ön Derlenmesi (Asset Precompilation):
Üretim ortamı için Rails varlıklarını (CSS, JavaScript, resimler) ön derlemeniz gerekir:

RAILS_ENV=production bundle exec rake assets:precompile

Apache Kurulumu

Apache web sunucusunu kurup temel yapılandırmasını yapalım.

1. Apache Kurulumu:

sudo yum install httpd -y

2. Apache’yi Başlatma ve Otomatik Başlatmayı Etkinleştirme:

sudo service httpd start
    sudo chkconfig httpd on

3. Güvenlik Duvarını Yapılandırma:
CentOS 6’da varsayılan güvenlik duvarı (iptables) Apache’nin 80. porttan gelen bağlantıları kabul etmesini engelleyebilir. HTTP trafiğine izin vermek için güvenlik duvarını yapılandırmanız gerekir:

sudo nano /etc/sysconfig/iptables

Aşağıdaki satırı -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT satırının altına ekleyin:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Dosyayı kaydedin ve kapatın, ardından iptables hizmetini yeniden başlatın:

sudo service iptables restart

Artık sunucunuzun IP adresine web tarayıcınızdan eriştiğinizde Apache’nin varsayılan karşılama sayfasını görmelisiniz.

Passenger Kurulumu

Phusion Passenger, Rails uygulamalarını Apache üzerinde çalıştırmanın en kolay ve en performanslı yollarından biridir.

1. Passenger Deposu Ekleme:
Phusion Passenger’ın kendi yum deposunu eklemeniz gerekir:

sudo yum install epel-release -y
    sudo yum install passenger-release -y

epel-release paketi, bazı ek bağımlılıklar için EPEL deposunu ekler.

2. Passenger ve Apache Modülünü Kurma:
Depo eklendikten sonra Passenger’ı kurabiliriz:

sudo yum install mod_passenger -y

Bu komut, Passenger’ı ve Apache için gerekli modülü kuracaktır. Kurulum, Apache yapılandırmasına gerekli LoadModule, PassengerRoot ve PassengerRuby direktiflerini otomatik olarak ekleyecektir (/etc/httpd/conf.d/passenger.conf dosyasına bakabilirsiniz).

3. PassengerRuby Yolu Doğrulama:
Passenger’ın doğru Ruby sürümünü kullandığından emin olmak için passenger.conf dosyasını kontrol edin.

sudo nano /etc/httpd/conf.d/passenger.conf

PassengerRuby direktifinin RVM tarafından kurulan Ruby sürümünüze işaret ettiğinden emin olun. Genellikle RVM ile kurulan Ruby yolları /usr/local/rvm/gems/ruby-2.1.10/wrappers/ruby gibi olacaktır.
Eğer PassengerRuby yolu yanlışsa veya eksikse, manuel olarak düzeltin:

PassengerRoot /usr/share/passenger
    PassengerRuby /usr/local/rvm/gems/ruby-2.1.10/wrappers/ruby

Not: Yukarıdaki yol, RVM’nin Ruby’yi kurduğu yere ve Ruby sürümüne göre değişebilir. Kendi sisteminizdeki doğru yolu bulmak için rvm which ruby komutunu çalıştırabilirsiniz.

Apache Sanal Host (Virtual Host) Yapılandırması

Uygulamamız için bir Apache sanal host yapılandırması oluşturalım. Bu, Apache’ye Rails uygulamanızı nerede bulacağını ve nasıl sunacağını söyler.

1. Sanal Host Dosyası Oluşturma:
/etc/httpd/conf.d/ dizininde uygulamanız için bir .conf dosyası oluşturun:

sudo nano /etc/httpd/conf.d/myapp.conf

2. Sanal Host Yapılandırmasını Ekleme:
Aşağıdaki içeriği myapp.conf dosyasına yapıştırın ve kendi uygulama adınıza göre düzenleyin:


       ServerName example.com
       # Eğer uygulamanıza bir alan adı atadıysanız, buraya yazın.
       # Aksi takdirde, sunucunuzun IP adresini kullanabilirsiniz.
       # ServerAlias www.example.com

       DocumentRoot /var/www/myapp/public

       RailsEnv production

       
          Allow from all
          Options -MultiViews
          # Apache 2.4 için: Require all granted
       

       ErrorLog /var/log/httpd/myapp_error.log
       CustomLog /var/log/httpd/myapp_access.log combined
    
  • ServerName: Uygulamanıza erişmek için kullanacağınız alan adını veya IP adresini belirtin.
  • DocumentRoot: Rails uygulamanızın public dizinini işaret etmelidir.
  • RailsEnv: Uygulamanın hangi Rails ortamında (production, development) çalışacağını belirtir. production olarak ayarlayın.
  • bloğu: Apache’ye public dizini için izinler verir. CentOS 6’daki Apache 2.2 için Allow from all ve Options -MultiViews yeterlidir.
  • ErrorLog ve CustomLog: Uygulamanızın hata ve erişim günlüklerini tutar.

Uygulama İzinleri ve Ortam Ayarları

Apache’nin Rails uygulama dosyalarına erişebilmesi için doğru dosya izinlerini ayarlamanız çok önemlidir. Ayrıca SELinux’u da dikkate almalısınız.

1. Dosya İzinlerini Ayarlama:
Apache, apache kullanıcısı altında çalışır. Bu kullanıcının uygulamanızın dosyalarına okuma/yazma erişimi olması gerekir, özellikle tmp, log ve public/assets dizinleri için.

sudo chown -R apache:apache /var/www/myapp
    sudo chmod -R 775 /var/www/myapp/tmp
    sudo chmod -R 775 /var/www/myapp/log
    sudo chmod -R 775 /var/www/myapp/public/assets # Eğer varlıklar ön derlenmişse

Tüm uygulama dizininin sahipliğini apache kullanıcısına ve grubuna atamak en kolayıdır.

2. SELinux Yapılandırması (Önemli!):
CentOS’ta SELinux (Security-Enhanced Linux) varsayılan olarak etkindir ve bazen Rails uygulamalarının çalışmasını engelleyebilir.
SELinux’u kalıcı olarak devre dışı bırakmak iyi bir uygulama değildir, ancak geçici olarak test etmek için devre dışı bırakabilirsiniz:

sudo setenforce 0

Kalıcı olarak devre dışı bırakmak için /etc/selinux/config dosyasını düzenleyin:

sudo nano /etc/selinux/config

SELINUX=enforcing satırını SELINUX=disabled olarak değiştirin ve sistemi yeniden başlatın.
Alternatif ve Daha Güvenli Yaklaşım: SELinux’u devre dışı bırakmak yerine, Apache’nin Rails uygulamasına erişmesine izin veren kurallar tanımlayabilirsiniz:

sudo yum install policycoreutils-python -y
    sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?"
    sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/myapp/tmp(/.*)?"
    sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/myapp/log(/.*)?"
    sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/myapp/public/assets(/.*)?"
    sudo restorecon -Rv /var/www/myapp

Bu komutlar, Apache’ye uygulamanızın dosyalarına erişim ve belirli dizinlere yazma izni verirken SELinux’un diğer korumalarını sürdürür. Bu daha güvenli bir yaklaşımdır.

Apache Yeniden Başlatma

Tüm yapılandırmalar tamamlandıktan sonra, Apache hizmetini yeniden başlatın:

sudo service httpd restart

Eğer bir hata alırsanız, /var/log/httpd/error_log dosyasını kontrol edin. Passenger veya Apache yapılandırmasında bir sorun olabilir.

Uygulamayı Test Etme

Artık web tarayıcınızı açıp sunucunuzun IP adresine veya yapılandırdığınız alan adına (http://example.com veya http://sunucu_ip_adresi) giderek Rails uygulamanıza erişmeyi deneyebilirsiniz. Uygulamanızın ana sayfasını görmelisiniz. Eğer bir hata sayfası alırsanız, aşağıdaki sorun giderme bölümüne bakın.

Sorun Giderme ve İpuçları

Kurulum sırasında veya sonrasında sorunlarla karşılaşmanız oldukça olasıdır. İşte bazı yaygın sorunlar ve çözümleri:

1. Apache Hata Günlükleri:
En önemli hata ayıklama aracı Apache hata günlükleridir:

sudo tail -f /var/log/httpd/error_log

Burada genellikle Passenger veya Rails uygulamanızla ilgili ayrıntılı hata mesajları bulabilirsiniz.

2. Passenger Günlükleri:
Passenger’ın kendi iç günlükleri de olabilir. Bunlar genellikle Apache hata günlüğüne entegre edilmiştir veya uygulamanızın log dizininde (log/production.log) bulunabilir.

3. Dosya İzinleri:
Yanlış dosya izinleri, en yaygın sorunlardan biridir. Apache’nin apache kullanıcısı altında çalıştığını ve uygulamanızın tüm dosyalarına okuma erişimi olması gerektiğini unutmayın. tmp, log ve public/assets gibi dizinlere yazma erişimi de olmalıdır. chown ve chmod komutlarını dikkatlice uygulayın.

4. SELinux:
Yukarıda belirtildiği gibi, SELinux kısıtlamaları uygulamaların çalışmasını engelleyebilir. Geçici olarak devre dışı bırakıp test etmek (sudo setenforce 0) veya doğru SELinux kurallarını uygulamak önemlidir.

5. Ruby/Gem Yolları:
Passenger’ın doğru Ruby ve gem yollarını kullandığından emin olun. passenger.conf dosyasındaki PassengerRuby direktifinin RVM ile kurduğunuz Ruby sürümünüze işaret ettiğinden emin olun.

6. Veritabanı Bağlantısı:
config/database.yml dosyasındaki veritabanı kimlik bilgilerinizin doğru olduğundan ve PostgreSQL hizmetinin çalıştığından emin olun.

7. Rails Hata Sayfaları:
Eğer Rails uygulaması bir hata veriyorsa, genellikle tarayıcıda bir hata sayfası görürsünüz. Bu sayfadaki hata mesajlarını dikkatlice okuyun. Uygulamanızın log/production.log dosyası da ayrıntılı hata bilgileri içerecektir.

8. Apache Yapılandırma Sözdizimi:
Apache yapılandırma dosyalarınızda bir sözdizimi hatası olup olmadığını kontrol edin:

sudo httpd -t

Bu komut, yapılandırma dosyalarınızda bir hata olup olmadığını size söyleyecektir.

Sonuç

Bu makalede, CentOS 6 sunucusu üzerinde Apache ve Phusion Passenger kullanarak bir Rails 4 uygulamasını nasıl kuracağınızı ayrıntılı olarak ele aldık. Temel sistem güncellemelerinden başlayarak, RVM ile Ruby ve Rails kurulumuna, PostgreSQL veritabanı yapılandırmasına, Apache ve Passenger entegrasyonuna kadar tüm adımları adım adım uyguladık. Doğru yapılandırma ve dikkatli sorun giderme ile Rails 4 uygulamanızın üretim ortamında sorunsuz bir şekilde çalışmasını sağlayabilirsiniz. Unutmayın, her dağıtım benzersiz olabilir ve bu kılavuz genel bir yol haritası sunar. Kendi özel ihtiyaçlarınıza göre ayarlamalar yapmanız gerekebilir. Güvenlik, performans optimizasyonu ve sürekli entegrasyon gibi konular, uygulamanızı daha da iyileştirmek için sonraki adımlar olabilir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.