How do I set up a Sinatra app under Apache with Passenger?
Basic directory structure:
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
Virtual host file:
<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-8require './hello-app'run Sinatra::Application
hello-app.rb (sample application):
#!/usr/bin/env ruby# encoding: UTF-8require 'rubygems' # for ruby 1.8require 'sinatra'get '/hi' do "Hello World!"end
restart.txt
is empty.
Mildly useful links:
Example vhost file for rack app with passenger:
<VirtualHost *:80> ServerName server.local ServerAlias *.server.local DocumentRoot /dir/public RackEnv development <Directory /dir/public> Order allow,deny Allow from all </Directory></VirtualHost>
Example Config.ru:
require File.expand_path('../boot.rb', __FILE__)use Rack::Middlewarerun Rack::Cascade.new([array])