【问题标题】:How do I set up a Sinatra app under Apache with Passenger?如何在 Apache 下使用 Passenger 设置 Sinatra 应用程序?
【发布时间】:2011-03-23 05:19:29
【问题描述】:

假设我有一个最简单的单文件 Sinatra 应用程序。他们主页上的hello world 就可以了。我想在 Apache 下使用 Phusion Passenger,AKA mod_rails 运行它。

  • 我需要什么目录结构?
  • 我必须在 vhost conf 文件中添加什么?
  • 我知道我需要一个机架文件。里面有什么,为什么?

【问题讨论】:

    标签: ruby apache sinatra passenger rack


    【解决方案1】:

    基本目录结构:

    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
    

    虚拟主机文件:

    <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(示例应用程序):

    #!/usr/bin/env ruby
    # encoding: UTF-8
    require 'rubygems' # for ruby 1.8
    require 'sinatra'
    
    get '/hi' do
      "Hello World!"
    end
    

    restart.txt 为空。


    比较有用的链接:

    【讨论】:

    • 我正在尝试实现同样的目标,但我有一个现有的虚拟主机配置。在他们的网站上有文档,但准确地遵循,会导致错误提示:
    【解决方案2】:

    带有乘客的机架应用程序的示例 vhost 文件:

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

    示例 Config.ru:

    require File.expand_path('../boot.rb', __FILE__)
    use Rack::Middleware
    run Rack::Cascade.new([array])
    

    【讨论】:

    • config.ru 中的 boot.rb 和 Cascade 是什么?
    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 2013-10-26
    • 2017-07-03
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多