понеділок, 3 травня 2010 р.

Запуск web-додатку на Sinatra з Phusion Passenger

На сьогоднішній день одним з найпростіших способів запуску Rails і Rack web-додатків є Phusion Passenger, що представляє собою модуль для Apache і Nginx. Фреймворк Sinatra базується на Rack, отже, додатки на його основі Passenger здатний легко запускати.

Для програми необхідна базова структура директорій:
APP_DIRECTORY/
  |-- app.rb       <-- безпосередньо додаток
  |-- config.ru    <-- Rackup файл для запуску
  |-- public/      <-- директорія для статичних файлів (зображення, css, javascript)
  |-- tmp/         <-- тимчасова директорія

Встановлюємо Apache2:
$ sudo apt-get install apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev

Встановлюємо Phusion Passenger:
$ sudo gem1.9.1 install passenger

Налаштування модуля для Apache:
$ sudo /opt/ruby191/bin/passenger-install-apache2-module

Далі слідуємо інструкції.
Створюємо файл /etc/apache2/mods-available/passenger.load і додаємо наступні рядки:
LoadModule passenger_module /opt/ruby191/lib/ruby/gems/1.9.1/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby191/lib/ruby/gems/1.9.1/gems/passenger-2.2.11
PassengerRuby /opt/ruby191/bin/ruby

Застосовуємо зміни і перезапускаємо сервіс:
$ sudo a2enmod passenger
$ sudo service apache2 restart

Припустимо наш додаток Sinatra знаходиться у /somewhere. Додамо віртуальний хост до конфігурації Apache і встановимо DocumentRoot у /somewhere/public
# /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
  ServerName www.yourhost.com
  DocumentRoot /somewhere/public
  <Directory /somewhere/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

Для запуску додатку із статті Привіт, Sinatra! створимо Rackup файл config.ru:
require 'sinatra'
require 'app.rb'

run Sinatra::Application

# app.rb
require 'rubygems'
require 'sinatra'

get '/' do
 "Привіт, Sinatra!"
end

Немає коментарів: