【问题标题】:How to run Sinatra App in Passenger with Nginx?如何使用 Nginx 在乘客中运行 Sinatra 应用程序?
【发布时间】:2018-07-02 19:57:31
【问题描述】:

我正在尝试使用我现有的 Nginx 和乘客设置运行一个非常简单的 Sinatra 应用程序。我熟悉在乘客上运行 Rails,但这是我第一次设置 Sinatra。

我已经通过捆绑器和 RVM 安装了 Sinatra。看看我的配置,告诉我我做错了什么。

Nginx 配置:

server {
  listen       80;
  server_name  demo.my-example.com;
  root /home/user/demo.my-example.com/sinatra;     

  passenger_ruby /usr/local/rvm/wrappers/ruby-2.3.1@my_gemset/ruby;
  passenger_enabled on;
}

/home/user/demo.my-example.com/sinatra/config.ru

require 'rubygems'
Gem.clear_paths
disable :run, :reload
set :environment, :production

require "./stripe"
run StripeApp

/home/user/demo.my-example.com/sinatra/stripe.rb

require 'sinatra/base'
class StripeApp < Sinatra::Base
  get '/' do 
   "Hello world"
  end
end

【问题讨论】:

  • 你的问题是什么?你有错误吗?错误信息是什么?
  • Nginx 错误日志显示:[error] 21037#0: *7 directory index of "/home/user/demo.my-example.com/sinatra/" is disabled, server: demo. my-example.com,请求:“GET / HTTP/1.1”,主机:“demo.my-example.com”
  • 不应该是您的应用程序public 目录中的root 入口点,而不是应用程序顶级目录吗?
  • 谢谢@matt 我以为我不需要 Sinatra 的公用文件夹,但是当我创建一个时,事情就到位了。我还必须从 config.ru 中删除 disable :run, :reload 和 set :environment, :production。
  • 这个问题解决了吗?请发送正确的答案。 @MarkRobinson

标签: ruby nginx sinatra passenger


【解决方案1】:

/home/user/demo.my-example.com/sinatra/config.ru

require 'rubygems'
Gem.clear_paths

require "./stripe"
run StripeApp

【讨论】:

  • 好的,感谢您的更新。是针对 CentOS 的吗?我在centOS 上有一个问题。有没有具体的配置?
  • @harsh4u 开发中的配置与生产中的配置相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2018-11-29
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 2010-12-03
  • 2015-10-19
相关资源
最近更新 更多