6 Aralık 2016 Salı

Ruby on Rails ile Ubuntu Server Üzerinde Basit WEB Uygulaması

Kullanılan Programlar

Oracle VM VirtualBox 5.1.8 : Bilgisayarınızda aynı anda birden fazla işletim sistemi çalıştırabilmenizi sağlayan programdır.

Ubuntu Server 16.10 : Ubuntu, Linux tabanlı özgür ve ücretsiz bir işletim sistemidir. Ubuntu Server ise sunucu bilgisayarlar için özelleştirilmiş ubuntu türevidir.

Ruby 2.3.1 : Ruby, nesneye yönelik, dinamik bir programlama dilidir. 

Ruby on Rails 4.2.6 : Ruby On Rails, Ruby diliyle yazılmış, açık kaynak kodlu bir web uygulama geliştirme çatısıdır.



Kurulum

VirtualBox'ı kuruyoruz.

Yeni işletim sistemi kurmak için, gelen VirtualBox Yöneticisi ekranında sol üstte bulunan yeni butonuna tıklayarak kuracağımız işletim sisteminin özelliklerini ayarlıyoruz ve işletim sisteminin iso kalıbını göstererek Ubuntu Server kurulumunu yapıyoruz.

Kurulumu yaptıktan sonra ağ yapılandırmasını yapmak için Shutdown now komutu ile makineyi kapatıyoruz. VirtualBox Yöneticisi'nde kurduğumuz makinenin ayarlar kısmını açıyoruz. Ağ bölümüne geliyoruz.


B.noktası Yönlendirme'ye tıklıyoruz.


Açılan ekranda sağ taraftaki yeni bağlantı kuralı ekleme işaretine basarak yeni bir bağlantı kuralı ekliyoruz.

Adı kısmına bağlantı kuralının adını yazıyoruz buraya istediğimiz herhangi bir şeyi yazabiliriz.

Protokol, Anamakine IP ve Misafir IP kısmını değiştirmemize gerek yok.

Misafir B.Noktası kısmına oluşturduğumuz yeni makinenin yönlendirilecek olan Portunu yazıyoruz. Ruby on Rails varsayılan olarak 3000 Portunu kullanır. Ancak bunu değiştirebiliriz. 
Kısacası kullanacağımız Portu yazıyoruz.

Anamakine B.Noktası kısmına ise anamakinemizden gireceğimiz Portu yazıyoruz. Buraya gireceğimiz Portu, yaptığımız WEB uygulamasına girerken kullanacağız.



Güncelleme-Yükseltme ve Gerekli Programlar

Ağ ayarlarını  yaptıktan sonra makinemizi başlatalım. Güncelleme ve Yükseltmeleri yapalım

sudo apt-get update ile güncelleyelim.

   sudo apt-get upgrade ile makinemizi yükseltelim.
    



Şimdi Ruby ve Ruby on Rails kuralım. Bu sitedeki kurulum ile Ruby'i ve Ruby on Rails'i kuruyoruz.


sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev 
libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev 
python-software-properties libffi-dev
ile Ruby gereksinimlerini yüklüyoruz.



Rbenv Kurulumunu yapıyoruz. Rbenv, Ruby için versiyon yönetim sistemidir.Basit bir şekilde birden çok Ruby versiyonunu birlikte kullanmanızı sağlar.
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
komutlarını sırası ile çalıştırıyoruz.


rbenv install 2.3.1
rbenv global 2.3.1
ruby -v




Bundler kurulumunu yapıyoruz.
gem install bundler
rbenv rehash


Ruby on Rails Kurulumunu yapıyoruz.

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
ve
sudo apt-get install -y nodejs
ile Ruby on Rails için gerekli olan NodeJs'yi kuruyoruz.



gem install rails -v 4.2.6
ile Rails'i kuruyoruz.


Uygulamayı Oluşturma

rails new uygulama
ile yeni Ruby on Rails uygulaması oluşturuyoruz.
"uygulama" uygulamamızın adıdır. Değiştirebilirsiniz.

cd uygulama
ile uygulamamızın olduğu klasöre giriyoruz.

rails generate scaffold Kullanici ad:text yas:integer mesaj:text
komutu ile sayfa yapımızı oluşturuyoruz. 
rails generate scaffold kımsı sabittir. Bu yapı sayfamızı açtığımızda da görebileceğiniz gibi bize 
new-edit-show-destroy gibi özellikler sağlayan özel bir yapıdır.
Kullanici'yi sayfamıza girmek için kullanacağız.
ad,yas,mesaj kısmını kendimize göre oluşturuyoruz.
Yapımız oluştu.



rails generate model db uygulama_id:integer ad:text yas:integer mesaj:text
ile veritabanı modelimizi oluşturuyoruz.



rake db:migrate
komutu ile modelimizin veritabanını oluşturuyoruz ve sayfa tasarımımız ile birleştiriyoruz.
Sayfadaki new-edit-show gibi butonları otomatik olarak veritabanına veri ekleyecek, silecek .. şekilde ayarlıyor.
uygulama/config içerisine bir SQLite veritabanı ekledi.
schema.rb dosyasından ise yapısını görebiliriz.



Uygulamamızı çalıştıralım.
rails server -b 10.0.2.15
ile server'imizi başlatıyoruz.
Burada -b 10.0.2.15 başlatılacak IP dir.
Bunu yazmazsak varsayılan olacak localhost ile başlıyor ve port yönlendirmede bir sorun oluyor. Sizde de port yönlendirmede bir sorun olursa böyle deneyebilirsiniz.
Normal olarak rails server komutu ile de başlatabilirsiniz.
Farklı Port ile başlatmayı isterseniz rails server -p XXXX ile istediğiniz Port ile başlatabilirsniz.

Serverimiz çalıştı. Sayfamıza girebiliriz.



tarayıcımıza  http://localhost:3000/ yazıyoruz ve bizi böyle bir sayfa karşılıyor.
3000 yerine sizin yönlendirdiğiniz ve başlattığınız Portu yazmalısınız.





http://localhost:3000/kullanicis yazarak ad,yas,mesaj eklediğimiz sayfaya geliyoruz.
Buradaki /kullanicis rails generate scaffold kısmında sayfaya girmek için kullanacağız dediğimiz kısımdır. Sonuna 's' koyarak giriyoruz.



New Kullanici'ya basarak bu kısma geliyoruz. Ad,Yas,Mesaj kımsını doldurup Create Kullanici'ya bas
arak veritabanımıza veri ekleyebiliryoruz.



  
Ekledik.


Burdan eklediğimiz kullaniciları silebilir, editleyebilir, gösterebiliriz.




Karşılaşılan Sorunlar ve Çözümleri

Server'i başlattıktan sonra çalışmasına ve B.Noktası Yönlendirme kısmında misafir IP boş bırakılmasına rağmen anamakineden yönlendirilmiş Porta girildiğinde sayfanın gelmemesi. Çözümü için rails server ' in yanına -b 10.0.2.15 yazılarak bu IPden çalıştırılması gerekmektedir. Diğer IPler için yönlendirme yapmamaktadır. Ruby'e özgü bir sorun sanırım.

SQLite yi apt-get ile kurmama rağmen Rails'de eksik gibi bir hata veriyor. Ruby'e özel olarak Gem ile kurmamız gerekmektedir.  gem install sqlite3 -v '1.3.8'


Kaynaklar

https://www.ruby-lang.org/tr/

https://gorails.com/

http://rubyonrails.org/

http://uguryilmaz.xyz/ruby-on-rails/1-ruby-on-rails-kurulumu-ubuntu-rbenv-ile.html

http://stackoverflow.com/questions/30771172/rails-bundle-install-fails

http://stackoverflow.com/questions/17787525/an-error-occurred-while-installing-sqlite3-1-3-7-and-bundler-cannot-continue

http://askubuntu.com/questions/386707/how-to-access-ruby-on-rails-assets-from-a-host-machine











1 yorum:

  1. Çok güzel olmuş, eline sağlık.

    "-b 10.0.2.15" kısmı sırun değil, network mantığı gereği ve hemen hemen tüm dillerin tercihidir. IP adresi belirtilmeden başlatıldığında, development durumundaki bir yazılım sadece localhost'a cevap verecek şekilde başlatılır. Herkese cevap vermesi istenirse; 0.0.0.0 adresi üzerine bind edilir.

    YanıtlaSil