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.
Ruby on Rails -sovelluksen asentaminen tapahtuu lataamalla valmis aplikaatiorunko palvelimelle httpdocs/fcgi -hakemistoon.
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:
Lisäksi palvelimella on käytettävissä seuraavat esiasennetut gemit:
|
|
Sovellusrungon asentaminen palvelimellemme tapahtuu seuraavasti:.
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.
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
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.
RAILS_GEM_VERSION = '2.3.18' unless defined? RAILS_GEM_VERSION
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ä.)
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.
Gem::Deprecate.skip = true
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ä.
#!/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ä).
require File.dirname(__FILE__) + "/../config/environment"
muotoon:
require File.absolute_path(__FILE__) + '/../../config/environment'
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]
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).
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.
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:
RAILS_ENV = 'production'; File.open(__FILE__ + '.pid', 'w') {|f| f.write($$)}
Kun sovellus ajetaan, tallentuu sovelluksen PID-numero tiedostoon /public/dispatch.fcgi.pid
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.