Jak skonfigurować aplikację Sinatra pod Apache z pasażerem?

Powiedzmy, że mam najprostszą aplikację z pojedynczymi plikami. Wystarczy hello world na ich stronie głównej. Chcę go uruchomić pod Apache z Phusion Passenger, AKA mod_rails.

  • jakiej struktury katalogów potrzebuję?
  • co muszę umieścić w pliku vhost conf?
  • Rozumiem, że potrzebuję pliku. Co się w nim dzieje i dlaczego?
Author: kch, 2010-07-30

2 answers

Podstawowa struktura katalogów:

app
|-- config.ru         # <- rackup file
|-- hello-app.rb      # <- your application
|-- public/           # <- static public files (passenger needs this)
`-- tmp/              
    `-- restart.txt   # <- touch this file to restart app

Plik wirtualnego hosta:

<VirtualHost *:80>
  ServerName    app.example.com
  DocumentRoot  /path/to/app/public
  <Directory    /path/to/app/public>
    Order       allow,deny
    Allow       from all
  </Directory>
</VirtualHost>

Config.ru

# encoding: UTF-8
require './hello-app'
run Sinatra::Application

Hello-app.rb (przykładowe zastosowanie):

#!/usr/bin/env ruby
# encoding: UTF-8
require 'rubygems' # for ruby 1.8
require 'sinatra'

get '/hi' do
  "Hello World!"
end

restart.txt jest pusty.


Lekko przydatne linki:

 70
Author: kch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-02 13:22:48

Przykładowy plik vhost dla aplikacji rack z pasażerem:

<VirtualHost *:80>
 ServerName   server.local
 ServerAlias  *.server.local
 DocumentRoot /dir/public
 RackEnv      development
 <Directory /dir/public>
 Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>

Przykład Config.ru:

require File.expand_path('../boot.rb', __FILE__)
use Rack::Middleware
run Rack::Cascade.new([array])
 2
Author: nicholasklick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-30 16:19:54