Ruby on Rails oldalak futtatása Apache kiszolgálóval (Phusion Passenger)

RoR képes Apache szerverünk telepítésének előfeltétele a következő cikkben leírtak teljesítése:
Ruby és RubyGems telepítése forrásból Debian rendszerre

Amennyiben ezeket már elvégeztük, és rendelkezünk friss ruby és rubygems alkalmazásokkal, megkezdődhet a RoR webkiszolgáló környezet telepítése, mely az alábbi három alkalmazást jelöli:

  • Apache2 kiszolgáló
  • MySQL kiszolgáló
  • Phusion Passenger

Telepítsük az Apache2-t:

apt-get install apache2

Majd a MySQL-t:

apt-get install mysql-server

Itt tudjuk megadni a MySQL szerver root jelszavát. Ez különbözhet (és különbözzön) a rendszer root felhasználójának jelszavától.

Ezután a RubyGems segítségével a passenger -t:

gem install passenger

Megjegyzés: A Phusion Passenger -ről a következő címen érhetünk el további információt:
http://www.modrails.com/

A passenger apache2 modul telepítéséhez szükség van bizonyos csomagokra, először telepítsük ezeket:

apt-get install libssl-dev
apt-get install libaprutil1-dev
apt-get install apache2-prefork-dev
apt-get install libcurl4-openssl-dev
apt-get install g++

A következő ponton szükségünk van a forrásból telepített Ruby forráskódjára. A forráskód könyvtárába belépve adjuk ki a következő parancsokat:

cd ext/openssl
ruby ./extconf.rb
make
make install

Ezzel minden készen áll a Passenger telepítésére.

passenger-install-apache2-module

Ha mindent jól csináltunk, ezzel el is kezdi fordítani az apache2 rails modult, majd a következő üzenet fogad minket:

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.4/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.4
PassengerRuby /usr/local/bin/ruby

Megjegyzés: A verziószámok itt eltérhetnek. NE innen, hanem a telepítés során kiírt üzenetből másoljuk a konfigurációs beállításokat.
Illesszük be ezt a három sort a httpd.conf-ba:

pico /etc/apache2/httpd.conf

Indítsuk újra az Apache2 kiszolgálót:

/etc/init.d/apache2 restart

Telepítsük a rails-t a gépünkre:

gem install rails

Nincs más hátra, hozzunk létre egy rails alkalmazást (jelen esetben testapp lesz a neve), amit beállíthatunk az Apache2-nek, hogy szolgálja ki azt:

cd /var/www
rails new testapp -d mysql

A MySQL-hez való kapcsolódáshoz szükségünk van a ruby mysql támogatására:

gem install mysql2

Hozzuk létre a rails alkalmazáshoz szükséges adatbázisokat. Ehhez a MySQL konzolt fogjuk használni.:

mysql -p

Megjegyzés: A MySQL root felhasználójának jelszavát kéri tőlünk a program, nem a rendszerfelhasználó jelszavát.

Az adatbázisok létrehozása:

mysql> CREATE DATABASE testapp_development;
mysql> CREATE DATABASE testapp_test;
mysql> CREATE DATABASE testapp_production;
mysql> exit

Majd szerkesszük tesztalkalmazásunk database.yml fájlját:

pico testapp/config/database.yml

Adjuk meg a root felhasználó jelszavát. a 3db (development, test, production) password: sorba.

FONTOS! Ez egy teszt alkalmazás, ahol zárt, teszt környezetben megengedhető a root felhasználó nevében való működés. ÉLES környezetben minden felhasználónak külön, dedikált felhasználó szükséges, egyedi, biztonságos jelszavakkal! Ehhez használhatjuk a konzolos mysql klienst (mint a fenti példában), vagy telepíthetjük a phpmyadmint:

apt-get install phpmyadmin

Végül állítsuk be az Apache default vhost-ját a tesztalkalmazásra.

pico /etc/apache2/sites-available/default

Tartalma legyen a következő:


ServerAdmin webmaster@localhost

DocumentRoot /var/www/testapp/public

Options FollowSymLinks
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
Options -MultiViews
RailsBaseURI /
RailsEnv "development"

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"

Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128


FONTOS! Természetesen nem muszáj a default vhost fájlt módosítanunk, létrehozhatunk saját vhost fájlt is!

Amire ügyeljünk, hogy a DocumentRoot Directory opciói között az alábbi három sor szerepeljen:

Options -MultiViews
RailsBaseURI /
RailsEnv "development"

Állítsuk be a fájl jogokat és tulajdonost, majd indítsuk újra az apache szerver:

chown www-data:www-data ./testapp/ -R
chmod 755 ./testapp/ -R
/etc/init.d/apache2 restart

Teszteljük az oldalt: A böngészőnkben a szerver IP címét (vagy domain nevét) beírva a rails kezdőoldala kell hogy megjelenjen.
Ha a "About your application’s environment" linkre kattintva kiírja a Ruby és a telepített gem-ek verziószámát. mindent helyesen csináltunk és az interpreter működik.