CentOS 7 Üzerine rbenv ile Ruby on Rails Kurulumu
Ruby on Rails (genellikle “Rails” olarak anılır), Ruby programlama dili ile yazılmış, web uygulamaları geliştirmek için açık kaynaklı bir sunucu tarafı web uygulama çatısıdır. “Convention over Configuration” (Yapılandırma Üzerine Anlaşma) ve “Don’t Repeat Yourself” (Kendini Tekrar Etme) prensipleriyle hızlı ve verimli geliştirme imkanı sunar. Bu rehberde, CentOS 7 işletim sistemi üzerine, farklı Ruby versiyonlarını kolayca yönetmenizi sağlayan rbenv aracıyla Ruby on Rails’i nasıl kuracağınızı adım adım öğreneceksiniz.
rbenv, sisteminizde birden fazla Ruby versiyonunu izole bir şekilde kurmanıza ve projelerinize özel Ruby versiyonlarını belirlemenize olanak tanıyan hafif bir Ruby versiyon yöneticisidir. Bu, farklı Rails projelerinin farklı Ruby versiyonları gerektirdiği durumlarda büyük bir kolaylık sağlar. CentOS 7 ise, stabilite ve güvenlik odaklı, kurumsal düzeyde bir Linux dağıtımıdır ve sunucu ortamlarında sıkça tercih edilir.
Bu rehberin sonunda, CentOS 7 sunucunuzda çalışan bir Ruby on Rails ortamına sahip olacak ve ilk Rails projenizi başlatmaya hazır hale geleceksiniz.
Sistem Hazırlığı ve Gerekli Bağımlılıkların Kurulumu
Rails ve Ruby’yi derlemek ve çalıştırmak için çeşitli sistem araçlarına ve kütüphanelerine ihtiyacımız var. İlk adım olarak, sisteminizi güncelleyelim ve gerekli paketleri kuralım.
Öncelikle, sisteminizdeki paket listesini güncelleyin ve yüklü paketleri en son versiyonlarına yükseltin:
sudo yum update -y
Ardından, Ruby’yi kaynak koddan derlemek için gerekli olan “Development Tools” grubunu ve diğer temel kütüphaneleri kuralım. Bu araçlar, derleme işlemi sırasında ihtiyaç duyulan C/C++ derleyicilerini ve ilgili araçları içerir.
sudo yum groupinstall "Development Tools" -y
Şimdi de Ruby’nin ve bazı Ruby gem’lerinin (paketlerinin) düzgün çalışması için kritik olan bağımlılıkları yükleyelim. Bu kütüphaneler, OpenSSL (güvenli bağlantılar için), YAML (yapılandırma dosyaları için), FFI (harici fonksiyon arayüzü), Readline (konsol etkileşimi için), zlib (sıkıştırma için) gibi temel bileşenleri sağlar.
sudo yum install openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel git -y
git paketi, rbenv ve ruby-build eklentisini GitHub’dan klonlamak için gereklidir. Bu adımları tamamladıktan sonra, sisteminiz Ruby kurulumu için gerekli temel altyapıya sahip olacaktır.
rbenv Kurulumu ve Kabuk Yapılandırması
rbenv, sisteminizde birden fazla Ruby versiyonunu yönetmenin en iyi yollarından biridir. Her projenin kendi Ruby versiyonuna sahip olmasını sağlayarak bağımlılık çakışmalarını önler.
rbenv ve ruby-build’in Yüklenmesi
rbenv ve onun en önemli eklentisi olan ruby-build‘i (Ruby versiyonlarını derlemek için kullanılır) kullanıcının ana dizinine klonlayacağız. Bu, rbenv‘in sadece bu kullanıcı için erişilebilir olmasını sağlar.
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Kabuk Ortamının Yapılandırılması
rbenv‘i kullanabilmek için, kabuğunuzun (shell) rbenv komutlarını tanıyacak şekilde yapılandırılması gerekir. Bu genellikle ~/.bash_profile veya ~/.bashrc dosyasına bazı satırlar ekleyerek yapılır. CentOS’ta genellikle ~/.bash_profile kullanılır.
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
Bu komutlar, rbenv yürütülebilir dosyasının yolunu PATH değişkeninize ekler ve rbenv init - komutunu çalıştırarak kabuğunuzu rbenv ile başlatır. Değişikliklerin etkili olması için mevcut kabuk oturumunuzu yeniden yüklemeniz gerekir:
source ~/.bash_profile
Kurulumun başarılı olduğunu doğrulamak için rbenv‘in versiyonunu kontrol edebilirsiniz:
rbenv --version
Eğer bir versiyon numarası görüyorsanız, rbenv başarıyla kurulmuştur.
Ruby ve Rails Kurulumu
rbenv ve ruby-build hazır olduğuna göre, artık Ruby’yi kurabilir ve ardından Rails’i yükleyebiliriz.
Ruby Versiyonunun Kurulumu
İlk olarak, ruby-build‘in kurabileceği tüm mevcut Ruby versiyonlarını listeleyelim:
rbenv install -l
Bu liste arasından, projeniz için uygun olan veya en güncel stabil Ruby versiyonunu seçin. Bu rehber için, örneğin Ruby 3.2.2 versiyonunu kuracağız. Kurulum işlemi, Ruby’yi kaynak koddan derleyeceği için biraz zaman alabilir (10-20 dakika veya daha fazla, sunucunuzun performansına bağlı olarak).
rbenv install 3.2.2
Kurulum tamamlandığında, bu Ruby versiyonunu sistem genelinde veya belirli bir proje dizininde varsayılan olarak ayarlayabilirsiniz. Biz şimdilik global olarak ayarlayacağız:
rbenv global 3.2.2
Değişikliklerin uygulandığından emin olmak için rbenv rehash komutunu çalıştırın. Bu komut, rbenv‘in yeni yürütülebilir dosyalar için shim’leri (geçici dosyaları) oluşturmasını sağlar.
rbenv rehash
Şimdi Ruby’nin doğru versiyonunun yüklendiğini doğrulayalım:
ruby -v
Komutun çıktısı ruby 3.2.2p... şeklinde olmalıdır.
Bundler ve Rails’in Kurulumu
Ruby gem’lerini (paketlerini) kurarken, dokümantasyon oluşturma işlemini atlamak, kurulum süresini önemli ölçüde hızlandırabilir. Bunu ~/.gemrc dosyasına bir ayar ekleyerek yapabiliriz:
echo "gem: --no-document" > ~/.gemrc
Şimdi sıra Bundler ve Rails’i kurmaya geldi. Bundler, Ruby projelerinin bağımlılıklarını yönetmek için kullanılan bir gem yöneticisidir. Rails projeleri için vazgeçilmezdir.
gem install bundler
Bundler kurulduktan sonra, Rails gem’ini kurabiliriz. En son stabil versiyonu kurmak için basitçe gem install rails komutunu kullanabilirsiniz. Belirli bir Rails versiyonunu kurmak isterseniz (örneğin Rails 7.0.4), komutu gem install rails -v 7.0.4 şeklinde kullanabilirsiniz.
gem install rails
Kurulum tamamlandıktan sonra, Rails’in doğru versiyonunun yüklendiğini doğrulayalım:
rails -v
Eğer bir Rails versiyon numarası görüyorsanız (örneğin Rails 7.x.x), Ruby on Rails başarıyla kurulmuştur!
Veritabanı Kurulumu ve İlk Rails Projesi
Rails uygulamaları genellikle bir veritabanına ihtiyaç duyar. PostgreSQL, Rails ile sıkça kullanılan güçlü ve açık kaynaklı bir veritabanı sistemidir. Bu bölümde PostgreSQL’i kuracak ve basit bir Rails projesi oluşturarak kurulumu test edeceğiz.
PostgreSQL Veritabanının Kurulumu
CentOS 7 üzerine PostgreSQL sunucusunu ve ilgili araçları kuralım:
sudo yum install postgresql-server postgresql-contrib -y
Veritabanı kümesini başlatın ve PostgreSQL servisini başlatıp sistem başlangıcında otomatik olarak başlamasını sağlayın:
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
Rails uygulamalarının PostgreSQL ile iletişim kurabilmesi için pg gem’inin derlenmesi sırasında gerekli olan geliştirme kütüphanesine ihtiyacımız var:
sudo yum install postgresql-devel -y
Varsayılan olarak, PostgreSQL yerel kimlik doğrulama için ident veya peer kimlik doğrulama yöntemlerini kullanır. Rails uygulamaları genellikle password kimlik doğrulaması bekler. Bu ayarı pg_hba.conf dosyasını düzenleyerek değiştirebiliriz. Ancak, ilk kurulumda genellikle bir Rails uygulaması için varsayılan postgres kullanıcısı yeterli olur.
İsteğe bağlı olarak, postgres kullanıcısına bir parola atayabilir veya yeni bir veritabanı kullanıcısı oluşturabilirsiniz:
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'sifreniz';
\q
sifreniz yerine güçlü bir parola belirlemeyi unutmayın.
İlk Rails Projesinin Oluşturulması ve Test Edilmesi
Şimdi yeni bir Rails projesi oluşturalım ve veritabanı olarak PostgreSQL’i belirtelim:
rails new myapp -d postgresql
Oluşturulan proje dizinine geçin:
cd myapp
Rails uygulamasının Gemfile‘ında belirtilen tüm bağımlılıkları yükleyin:
bundle install
Bu adım, pg gem’ini ve diğer tüm Rails bağımlılıklarını kuracaktır.
Veritabanını oluşturun. Rails, config/database.yml dosyasındaki ayarlara göre veritabanını oluşturacaktır:
rails db:create
Son olarak, Rails sunucusunu başlatın. Bir sunucu ortamında çalıştığımız için, uygulamanın dışarıdan erişilebilir olması için 0.0.0.0 IP adresine bağlanmasını sağlamalıyız:
rails s -b 0.0.0.0
CentOS 7’de güvenlik duvarı (firewalld) varsayılan olarak etkindir. Rails uygulamanıza dışarıdan erişebilmek için 3000 numaralı portu açmanız gerekebilir:
sudo firewall-cmd --add-port=3000/tcp --permanent
sudo firewall-cmd --reload
Artık sunucunuzun IP adresini veya alan adını (örneğin, http://sunucu_ip_adresi:3000) bir web tarayıcısında ziyaret ederek Rails uygulamanızın başarıyla çalıştığını görebilirsiniz. “Yay! You’re on Rails!” mesajını görmelisiniz.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, CentOS 7 işletim sistemi üzerine rbenv kullanarak Ruby ve Ruby on Rails’i başarılı bir şekilde kurdunuz. Ayrıca PostgreSQL veritabanını entegre ettiniz ve ilk Rails projenizi çalıştırdınız. Bu kurulum, Rails projelerinizi geliştirmek ve dağıtmak için sağlam bir temel sağlar. rbenv sayesinde, farklı projeler için farklı Ruby versiyonlarını kolayca yönetebilir, böylece bağımlılık çakışmalarını önleyebilirsiniz.
Geliştirme sürecinizde bu yapılandırmanın size esneklik ve verimlilik katacağından emin olabilirsiniz. Unutmayın ki, Rails ekosistemi sürekli gelişmektedir, bu nedenle güncel kalmak ve yeni versiyonları takip etmek önemlidir.
Sıkça Sorulan Sorular (SSS)
Q: rbenv install komutu neden çok uzun sürüyor?
A: rbenv install komutu, Ruby’nin kaynak kodunu indirir ve sisteminizde derler. Bu işlem, sunucunuzun işlemci gücüne ve internet hızına bağlı olarak 10-20 dakika veya daha fazla sürebilir. Bu normal bir durumdur.
Q: Farklı Ruby versiyonlarını nasıl kullanırım?
A: rbenv global komutu ile tüm sistem için varsayılan Ruby versiyonunu ayarlayabilirsiniz. Belirli bir proje dizini için farklı bir versiyon kullanmak isterseniz, o dizine gidip rbenv local komutunu çalıştırabilirsiniz. Bu, dizinde .ruby-version adında bir dosya oluşturur.
Q: gem install komutu hata veriyor, ne yapmalıyım?
A: Genellikle bu tür hatalar eksik sistem bağımlılıklarından kaynaklanır. Rehberin “Sistem Hazırlığı ve Gerekli Bağımlılıkların Kurulumu” bölümündeki tüm yum install komutlarını tekrar çalıştığınızdan emin olun. Özellikle openssl-devel, libffi-devel ve veritabanı için postgresql-devel gibi paketlerin yüklü olduğundan emin olun. Ayrıca rbenv rehash komutunu çalıştırmayı deneyin.
Q: Rails sunucusuna uzaktan erişemiyorum?
A: İki ana nedeni olabilir:
1. Rails sunucusunu rails s -b 0.0.0.0 komutuyla başlatmadınız. Varsayılan olarak Rails, yalnızca yerel makineden erişilebilir olan localhost‘a bağlanır.
2. CentOS güvenlik duvarı (firewalld) 3000 numaralı portu engelliyor. Rehberdeki firewall-cmd komutlarını çalıştırdığınızdan emin olun.
Q: Veritabanı bağlantı hatası alıyorum?
A: Bu sorun genellikle şu nedenlerden kaynaklanır:
1. PostgreSQL servisi çalışmıyor. sudo systemctl status postgresql komutuyla durumunu kontrol edin ve gerekirse sudo systemctl start postgresql ile başlatın.
2. config/database.yml dosyasındaki veritabanı yapılandırması yanlış. Kullanıcı adı, parola veya host ayarlarını kontrol edin. Varsayılan olarak Rails, postgres kullanıcısını parola olmadan kullanmaya çalışabilir. Eğer postgres kullanıcısına parola atadıysanız, bu bilgiyi database.yml‘e eklemeniz gerekir.
3. postgresql-devel paketi yüklü değil, bu da pg gem’inin doğru derlenmesini engeller. Tekrar yüklediğinizden emin olun ve bundle install‘ı tekrar çalıştırın.