Ruby on Rails

Ruby on Rails -tuki löytyy teoriassa kaikista Nettihotellin webhotellipaketeista, mutta koska Ruby-sovellukset vaativat joka tapauksessa tietokantatuen, on RoR käytettävissä käytännössä oletusarvoisesti ainoastaan Huone, Sviitti, Lukaali ja Palatsi -webhotellipaketeissa (joissa niissäkin Huone-paketissa ainoastaan yhdellä tietokannalla). Vaihtoehtoisesti voit toki hankkia lisätietokantoja myös pienempiin paketteihin.

Mikäli tarvitset kunnollista Ruby on Rails -tukea, suosittelemme vähintään Sviitti 2 GB -webhotellipalvelun hankkimista, jonka kolme tietokantaa riittävät Ruby on Rails -sovellusten testaamiseen ja ajamiseen kaikissa tiloissa: development, test ja production.

RoR-sovellusten asentaminen

Ruby on Rails -sovelluksen asentaminen tapahtuu lataamalla valmis aplikaatiorunko palvelimelle httpdocs/fcgi -hakemistoon.

Huom!Palvelimillamme Ruby on Rails -hakemistot tulee sijoittaa aina httpdocs-hakemiston alla sijaitsevaan fcgi -hakemistoon. Mikäli tätä hakemistoa ei ole luotu valmiiksi, voit luoda sen itse.

Tarvitset siis sovelluksen, jolla voit luoda RoR-aplikaatioita omalla koneellasi, joita ajetaan myöhemmin production tilassa palvelimellamme. Ohjelman tulee olla yhteensopiva palvelimilla olevien seuraavien sovellusversioiden kanssa:

  • Ruby-versio 1.9.3
  • Gems-versio 1.8.23 
  • Rails-versio 2.3.18 tai 3.2.15

Lisäksi palvelimella on käytettävissä seuraavat esiasennetut gemit:

  • actionmailer (3.2.15, 2.3.18)
  • actionpack (3.2.15, 2.3.18)
  • activemodel (3.2.15)
  • activerecord (3.2.15, 2.3.18)
  • activeresource (3.2.15, 2.3.18)
  • activesupport (3.2.15, 2.3.18)
  • arel (3.0.3)
  • atomic (1.1.14)
  • autocomplete (1.0.1)
  • builder (3.1.4, 3.0.4)
  • bundler (1.3.5)
  • climate_control (0.0.3)
  • cocaine (0.5.3)
  • erubis (2.7.0)
  • fcgi (0.9.2.1)
  • hike (1.2.3)
  • i18n (0.6.5)
  • journey (1.0.4)
  • json (1.8.1)
  • mail (2.5.4)
  • mime-types (1.25)
  • minitest (4.7.5)
  • multi_json (1.8.2)
  • paperclip (3.5.2)
  • polyglot (0.3.3)
  • rack (1.4.5, 1.1.6)
  • rack-cache (1.2)
  • rack-ssl (1.3.3)
  • rack-test (0.6.2)
  • rails (3.2.15, 2.3.18)
  • railties (3.2.15)
  • rake (10.1.0)
  • rdoc (3.12.2)
  • sprockets (2.2.2)
  • thor (0.18.1)
  • thread_safe (0.1.3)
  • tilt (1.4.1)
  • treetop (1.4.15)
  • tzinfo (0.3.38)
  • will_paginate (3.0.5)

Sovellusrungon asentaminen palvelimellemme tapahtuu seuraavasti:.

Huom!Ohjeisto koskee Rails 2.3.18 ympäristössä luotuja sovellusrunkoja, ohjeet Rails 3.2.15 -sovellusrunkoihin lisätään tälle sivulle myöhemmin.

  • Luo ohjelmarunko omalla koneellasi komennolla "rails -D -d mysql ohjelma" (korvaa "ohjelma" haluamallasi ohjelmanimellä - tässä ohjeessa käytämme kaikissa kohdissa ohjelmanimenä tätä sanaa, joka täytyy siis korvata valitsemallasi ohjelmanimellä/hakemistolla). Parametri -D luo dispatcher-tiedostot, jotka tarvitaan sovelluksen ajamisessa Fcgi:nä Nettihotellin palvelinympäristössä ja parametri -d mysql asettaa käytettäväksi tietokantatyypiksi MySQL-kannan.

Huom!Mikäli sovellusrungossasi ei synny sijaintiin /ohjelma/public/dispatch.fcgi -tiedostoa (esim. unohdit -D -parametrin), voit luoda tarvittavat dispatch-tiedostot komennolla:
rake rails:update:generate_dispatchers

  • Muokkaa ohjelmarungon /ohjelma/config/database.yml -tiedoston tietokantamääritykset oikeiksi. Käytettävien tietokantatyyppien tulee olla MySQL-muotoisia (ei esim. SQLite). Luo ensin tarvittavat tietokannat ja niiden käyttäjätunnukset hallintapaneelin kautta (ks. tarkemmat ohjeet tämän tekemiseksi tarvittaessa tästä). Aseta tämän jälkeen kyseiset luodut tietokannat database.yml -tiedostoon, esim:

production:
  adapter: mysql
  database: kayttajatun_kannannimi
  username: kayttaj_kayttajanimi
  password: määrittelemäsisalasana
  host: localhost

Mikäli käytettävissäsi on useampia tietokantoja, voit luoda omat tietokannat myös test ja production -kohtiin. Älä kuitenkaan laita samaa tietokantaa näihin kohtiin, sillä muuten kannan sisältö katoaa.

  • Muokkaa tiedostoa /ohjelma/config/environment.rb ja tarkista, että siinä mainittu RAILS_GEM_VERSION -rivi on versio 2.3.18. Tarvittaessa muokkaa rivi seuraavaksi:

RAILS_GEM_VERSION = '2.3.18' unless defined? RAILS_GEM_VERSION

  • Lisäksi lisää tiedoston loppuun rivi:

ActionController::Base.relative_url_root = "/ohjelma"

vaihtaen hakemistopolkuun kohtaan "ohjelma" ohjelmarunkosi hakemiston. (Em. rivit lisätään, jotta Rails osaa reitittää kyselyt oikein alihakemistossa olevalle ohjelmalle. Mikäli ohjelma on httpdocs-hakemiston juuressa, komentoriviä ei tarvitse lisätä.)

Huom!Lisäksi mikäli olet päivittämässä aikaisemmin vanhemmalla Ruby on Rails -alustalla ajettua sovellusta, kommentoi tai poista tiedoston lopusta mahdollinen vanhentunut komentorivi: ActionController::AbstractRequest.relative_url_root = "/ohjelma" - tämä ei toimi enää Ruby 2.3.x:n kanssa.

  • Tämän lisäksi config-hakemistoon tulee luoda uusi preinitializer.rb -niminen tiedosto, jonka oikeudet määritetään muotoon 0755 ja sisällöksi:

Gem::Deprecate.skip = true

  • Muokkaa vielä samasta hakemistosta tiedostoa routes.rb ja mukauta rivit:

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

muotoon:

map.connect '/fcgi/ohjelma/:controller/:action/:id'
map.connect '/fcgi/ohjelma/:controller/:action/:id.:format'

jossa vastaavasti korvaat ohjelma-kohdan sovellusrunkosi nimellä.

  • Muokkaa seuraavaksi tiedostoa /ohjelma/public/dispatch.fcgi ja muuta sen ensimmäinen rivi seuraavaksi:

#!/usr/bin/ruby

Lisää vielä tämän jälkeen samaan tiedostoon seuraavalle riville (eli tiedoston toiseksi riviksi):

RAILS_ENV = 'production'; File.open(__FILE__ + '.pid', 'w') {|f| f.write($$)}

Tämän tarkoituksena on sekä määritellä palvelimella ajettavan aplikaation tilaksi production että myös tallentaa käynnistyvän prosessin PID-tiedostoon myöhempää mahdollista SSH:n kautta tehtävää hallintaa varten (esim. prosessin killaamista SSH-yhteyden kautta - selitetään myöhempänä).

  • Muokkaa vielä dispatch.fcgi -tiedostosta rivi:

require File.dirname(__FILE__) + "/../config/environment"

muotoon:

require File.absolute_path(__FILE__) + '/../../config/environment'

  • Avaa FTP-yhteys kotisivutilaasi Nettihotellin palvelimelle ja siirrä juuri konfiguroimasi RoR-sovellus palvelimen httpdocs-hakemistoon. Hakemistopolun sovelluksesi ajettavaan dispatch.fcgi-tiedostoon tulisi tällöin olla siis esim. /httpdocs/fcgi/ohjelma/public/dispatch.fcgi
  • Luo siihen hakemistoon, jossa ohjelma sijaitsee (esim. /httpdocs/fcgi/ohjelma) ".htaccess" -niminen tiedosto, jonka sisältö määritetään seuraavaksi (korvaa koodista ohjelma-nimiset viitteet valitsemasi ohjelman/hakemiston nimellä):

RewriteEngine On
RewriteRule ^$ public/index.html [L]
RewriteCond %{REQUEST_URI} !^/fcgi/ohjelma/public
RewriteRule ^(.*)$ public/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/dispatch.fcgi/$1 [QSA,L]

  • Poista ylimääräinen (mahdollisesti oletusarvoisesti Railsin luoma) htaccess-tiedosto sijainnista /httpdocs/fcgi/ohjelma/public/.htaccess
  • Tarkista vielä lopuksi että sekä hakemiston, jossa ohjelma sijaitsee (/httpdocs/fcgi/ohjelma) sekä ajettavan dispatch.fcgi:n (/httpdocs/fcgi/ohjelma/public/dispatch.fcgi) tiedoston oikeudet ovat oikeat (chmod 755). RoR-sovellukset eivät toimi jos esim. ohjelmahakemisto on chmodattu muotoon 777!

Tämän jälkeen RoR-sovelluksesi pitäisi avautua sijainnista http://www.omadomainisi.com/fcgi/ohjelma (tai siitä kotisivuosoitteesi alihakemistosta, jonka nimisen ohjelman/hakemiston olet määrittänyt). Näet "Welcome aboard - you're riding ruby on rails" -otsikoidun etusivun. (Huomaa kuitenkin, että esimerkiksi ohjelman ympäristömuuttujasivu ei avaudu linkistä "About your application's environment" tai suoralla osoitteella http://www.omadomainisi.com/fcgi/ohjelma/rails/info/properties, koska aplikaatio on jo production tilassa. Jos haluat ajaa applikaatiota esim. test- tai development -tilassa, muuta RAILS_ENV = 'production' -riviä yllä (sekä tee vastaava muutos myös tietokanta-asetuksiin tiedostossa /ohjelma/config/database.yml).

Huom!Mikäli sovellusrunkosi on generoitu uudemmalla sovellusversiolla, kuin palvelimellamme oleva ja sovelluksesi ei suostu toimimaan palvelimen antaa virheilmoituksen 500, kommentoi tiedostosta config/initializers/new_rails_defaults.rb rivi: ActionController::Routing.generate_best_match = false

Lisäksi mikäli sovellusrungossasi on tiedosto app/controllers/application_controller.rb tämä tulee uudelleennimetä muotoon app/controllers/application.rb jotta sovellus toimii myös 'production' tilassa.

RoR-applikaation asetusmuutokset

Kun asentamasi RoR-ohjelma ladataan ensimmäistä kertaa dispatch.fcgi:n kautta, RoR -sovelluskonfiguraatio latautuu palvelimen muistiin. Mikäli teet muutoksia sovelluksen asetuksiin, ne eivät päivity reaaliaikaisena ajettavaan sovellukseen, vaan vasta Fcgi-prosessin IdleTimeout arvon täyttyessä (tällä hetkellä 1 tunti). Tämä edellyttää siis sitä, ettei sovellusta yritetä aja tuntiin, jolloin se sammuu ja käynnistyy uudelleen seuraavalla ajokerralla.

Kuitenkin, koska tietyissä tilanteissa - esimerkiksi asetusmuutoksia tehtäessä tai sovelluksen uudemman version päivityksen yhteydessä voi olla tarpeen tappaa prosessi myös halutulla hetkellä, tähän on olemassa seuraava tapa:

  • Pyydä ensimmäiseksi Nettihotellin asiakaspalvelusta käyttöösi SSH-yhteys, ellei sinulla sitä vielä ole. (Tarvitset SSH-yhteyden käyttäessäsi tätä tapaa.)

  • Aikaisemmassa kohdassa teit sovelluskonfiguraatioon /ohjelma/public/dispatch.fcgi muutoksen lisäämällä sen ensimmäiseksi riviksi rivin:

RAILS_ENV = 'production'; File.open(__FILE__ + '.pid', 'w') {|f| f.write($$)}

Kun sovellus ajetaan, tallentuu sovelluksen PID-numero tiedostoon /public/dispatch.fcgi.pid

  • Kirjaudu palvelimelle SSH-yhteydellä, siirry RoR-ohjelmasi juurihakemistoon (cd /httpdocs/ohjelma) ja kirjoita shellissä seuraava komento:

kill `cat public/dispatch.fcgi.pid`

Komento "tappaa" muistiin ladatun RoR-sovelluksesi, jonka jälkeen se ladataan uusilla, päivittämilläsi asetuksilla uudelleen, heti kun sovellusta koetetaan ajaa sijainnista www.omadomainisi.com/fcgi/ohjelma

Tällä mahdollistetaan se, että voit hallita sovellustasi palvelimella ja tehdä siihen asetusmuutoksia/päivityksiä haluamanasi ajankohtana.

Takaisin Lue lisää