На сьогоднішній день одним з найпростіших способів запуску 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