Nodeta OyEtusivu

Ruby on Rails

Perustietoa

Tästä osiosta löytyy perustietoa Ruby on Rails -sovelluskehyksen käyttämiseksi Nodetan palvelimilla.

Jokaiseen Nodetan webhotellipakettiin sisältyy pääsy palvelimen shell-tilaan ssh-yhteyden kautta. Tässä ohjeessa annetut komennot annetaan shell-tilassa. $-merkki tarkoittaa komentokehoitetta, eikä ole osa itse komentoa.

Ruby on Rails -sovellukset ajetaan FastCGI-tilassa asiakkaan omalla käyttäjätunnuksella. Näin sovellukset toimivat nopeasti ja turvallisesti.

Uuden Rails-rungon luominen

Rails-runko uudelle Rails-projektille saadaan luotua seuraavalla komennolla:

	$ rails hakemisto
			
Annettu hakemisto ei saa olla näkyvissä julkisesti webiin, kuten public_html-hakemiston alla. Katso julkaisusta tarkemmin kohdasta Rails-sovelluksen julkaisu.

Tietokanta-asetukset

Tietokanta-asetukset määritellään database.yml-tiedostossa, joka sijaitsee Rails-hakemistosi alla olevassa config-alihakemistossa. Täytä saamasi tietokanta-asetukset production-sarakkeen alle.

production:
  adapter: mysql
  database: project_production
  username: username
  password: password
  host: db.nodeta.fi
Tiedostossa voi niin halutessaan määritellä myös development- ja test-tietokannat. Test-tietokanta ei koskaan saa olla sama kuin development tai production-tietokanta, sillä se luodaan aina uudelleen development-kannasta.

Rails-sovelluksen julkaisu

Saadaksesi Rails-sovelluksesi näkymään webissä, sinun tulee luoda symbolinen linkki Rails-hakemistosi public-alihakemistoon esimerkiksi ajamalla seuraavan komennon kotihakemistossasi:
	$ ln -s ~/<rails-hakemistosi>/public ~/public_html/<railssovellus>
Tällöin sovellus tulee näkyviin verkkotunnuksesi alihakemistoon <railssovellus>, esimerkiksi http://www.esimerkki.tld/<railssovellus>

Jos haluat rails-sovelluksen näkyvän suoraan verkkotunnuksesi juuressa, poista (tai uudelleennimeä) public_html-hakemisto ensin kotihakemistostasi ja komenna:
	$ ln -s ~/<rails-hakemistosi>/public ~/public_html

Development ja production-tilat

Oletuksena sovellukset ajetaan production-tilassa. Jos sovellusta on tarkoitus kehittää palvelimella, on suositeltavaa ottaa kehityksen ajaksi käyttöön development-tila. Development-tilassa fastcgi-prosessi täytyy käynnistää uudelleen harvemmin ja virhetilanteissa rails tulostaa kunnollisia virheilmoituksia. Development-tilan voi ottaa käyttöön asettamalla seuraavan rivin config/environment.rb-tiedoston alkuun:

	ENV['RAILS_ENV'] = 'development'
Kun sovellus on valmis tuotantokäyttöön, tulee tila vaihtaa takaisin production tilaan, kommentoimalla yllä mainittu rivi pois tai vaihtamalla siihen arvoksi 'production'. Production-tilassa sovellus toimii selvästi nopeammin, käyttää vähemmän resursseja eikä paljasta liiallisia tietoja käyttäjille virhetilanteissa.

Muutoksien tekeminen julkaistuun Rails-sovellukseen

Jos teet muutoksia julkaistuun Rails-sovellukseen, ne eivät (muutoksesta riippuen) välttämättä näy heti ohjelmiston käyttäjälle. Saadaksesi kaikki muutokset näkyviin välittömästi, sinun täytyy lopettaa sovellusta käynnissä pitävä FastCGI-prosessi. Löytääksesi kyseisen prosessin komenna ensin:

	$ ps -C dispatch.fcgi
Tällöin ruudulle pitäisi tulostua listaus prosessista. Esimerkiksi:
	  PID TTY          TIME CMD
	25956 ?        00:00:01 dispatch.fcgi
Nyt voit lopettaa prosessin antamalla komennon:
	$ kill 25956
Uusi FastCGI-prosessi käynnistyy, kun rails-sovelluksesi alla oleva sivu seuraavan kerran ladataan.

UTF-8-merkistö käyttöön Ruby on Rails -sovelluksessa

Palvelin lähettää html- ja tekstityyppiset sivut oletuksena käyttäen ISO-8859-1-merkistöä. Jos Rails-sovelluksesi kuitenkin käyttää hiljalleen yleistyvää UTF-8-merkistöä, ei skandinaaviset merkit, kuten ä, ö tai å, välttämättä näy oikein.

Oletusmerkistön vaihtaminen onnistuu lisäämällä Rails-sovelluksen public-hakemistossa olevaan .htaccess-tiedostoon seuraavan rivin:

AddDefaultCharset UTF-8

Muualla luodun rails-sovelluksen siirto Nodetan palvelimille

Kun toisessa järjestelmässä luotu rails-sovellus siirretään Nodetan palvelimille, täytyy muutamia asioita ottaa huomioon, jotta sovellus toimisi.

  • Tiedosto-oikeudet: Sovellus ajetaan aina käyttäjän omalla tunnuksella. Tästä syystä millekään tiedostolle tai hakemistolle ei ole tarvetta eikä saa antaa kirjoitusoikeutta muille kuin käyttäjälle itselleen.

    Erityisesti kannattaa tarkastaa public-hakemiston ja dispatch-tiedoston (public/dispatch.fcgi) oikeudet; Kirjoitusoikeutta ei saa olla kuin käyttäjällä itsellään ja dispatch.fcgi:hin tulee ainakin käyttäjällä itsellään olla ajo-oikeudet (u+x).

    Yleensä ottaen sopivat oikeudet tiedostoille on 744 ja hakemistoille 711.

    Oikeuksia voi muuttaa komennolla chmod, esimerkiksi:
    	$ chmod 744 railssovellus/public
    
  • Dispatch-tiedostossa oleva ruby:n polku: Eri järjestelmissä ruby-tulkki saattaa sijaita eri paikoissa. Nodetan palvelimilla ruby sijaitsee polussa /usr/bin/ruby. Jos public/dispatch.fcgin ensimmäisellä rivillä #!:n jälkeen, on jokin muu polku, tulee se muuttaa oikeaksi. Jos polku on väärin eikä ruby-tulkkia löydy, on tuloksena Application Error -virheilmoitus, ilman mitään selventävää tietoa lokitiedostoissa.

  • CGI-tila: Rails-sovellukset kannattaa ajaa FastCGI-tilassa, sillä se on CGI-tilaa huomattavasti nopeampi. Tila, jota käytetään määritellään tiedostossa public/.htaccess. Tiedoston loppupuolella pitäisi olla seuraavanlainen rivi, jos FastCGI-tila on käytössä:
    	RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
    
    Jos rivillä lukee dispatch.fcgi:n sijaan dispatch.cgi, on käytössä tavallinen CGI-tila ja se kannattaa muuttaa käyttämään FastCGI:tä.

Capistranon käyttö julkaisuun

Capistranon käyttö rails-sovelluksen julkaisuun Nodetan palvelimilla on täysin mahdollista eikä vaadi erityistoimenpiteitä. Capistranoa käyttöönotettaessa ja deploy.rb:tä konfiguroitaessa on kuitenkin huomioitava, että sovelluksen uudelleen käynnistäminen komennolla "apachectl graceful" ei ole mahdollista vaan tämä tulee korvata komennolla "killall dispatch.fcgi || true". Komento tappaa kaikki kyseisellä käyttäjätunnuksella ajossa olevat FastCGI-prosessit, jos sellaisia on ajossa.

Katso myös kohta Muualla luodun rails-sovelluksen siirto Nodetan palvelimille.

Esimerkki config/deploy.rb:stä löytyy tästä.

Enemmän ohjeita Capistranon käyttöön löytyy täältä.


Nodeta Oy • Osoite: Kutomotie 9 C, 00380 Helsinki • Y-tunnus: 1880029-2 • nodeta@nodeta.fiLisää yhteystietoja »