ruby on rails nginx与乘客无法找到意见

时间:2013-12-13 21:34:05

标签: ruby-on-rails nginx passenger

我正在将我的第一个ROR应用程序放在NginX和Passenger上。我正在关注整个网络上的教程,当我尝试访问我的主页时,我遇到以下错误。

我使用命令行创建了一个控制器home_controller.rb。我还在命令行创建了视图,它创建了一个默认的ERB文件。

nginx服务正在运行,我通过“乘客启动”手动启动乘客。我可以看到乘客接受传入的HTTP请求,如以下错误。但奇怪的是,它正在查看我的ruby应用程序的公共文件夹中的home / index。我使用了“rails generate [controller / view] foo”,它将文件写在公共区域之外。

我的nginx配置配置为指向我的ROR项目的公共文件夹。

我使用的是ROR 2.0.0,Phusion Passenger 4.0.29和nginx 1.1.19。

我在Passenger中遗漏了一些东西,告诉它控制器/视图/等等。是

MJ

2013/12/13 15:20:12 [error] 18305#0: *4 "/usr/development/sandbox/app/public/index.html" 
is not found (2: No such file or directory), client: 127.0.0.1, server: _, request:     "HEAD / 
HTTP/1.1", host: "0.0.0.0"

2013/12/13 15:20:13 [error] 18305#0: *5 "/usr/development/sandbox/app/public/index.html" 
is not found (2: No such file or directory), client: 127.0.0.1, server: _, request: "GET  
HTTP/1.1", host: "localhost:3000"

2013/12/13 15:20:18 [error] 18305#0: *5 open() 
"/usr/development/sandbox/app/public/home/index" failed (2: No such file or directory), 
client: 127.0.0.1, server: _, request: "GET /home/index HTTP/1.1", host: "localhost:3000"

2013/12/13 15:27:11 [error] 18305#0: *13 open() 
"/usr/development/sandbox/app/public/home/index" failed (2: No such file or directory), 
client: 127.0.0.1, server: _, request: "GET /home/index HTTP/1.1", host: "localhost:3000"

编辑0 - 如果我使用“rails server”,一切似乎都正常工作/编辑0

1 个答案:

答案 0 :(得分:0)

你正在以错误的方式使用Phusion Passenger。

Phusion Passenger提供3 modes:一种独立模式(一种作为独立的Web服务器运行),一种Nginx集成模式和一种Apache集成模式。通过运行passenger start,您正在使用其独立模式。

正在运行Nginx。从您的日志中,您似乎正在访问Nginx。但这没有任何作用。 Passenger独立运行,不在Nginx内部运行。

在图表中:

         Nginx  <--------------------- [Your request]
(Not integrated with Passenger,
 so doesn't know what to do with
 your request)


Passenger Standalone
(waiting for your request,
 but you never sent one
 to it)

所以,如果你使用rails server

,这就是它的样子
       Nginx
 (not receiving any
  requests from you)


    rails server <--------------- [Your request]

你真正想要的是访问Passenger Standalone,它就像rails server一样 - 侦听端口3000.实际上,Passenger Standalone在启动时告诉你它正在侦听端口3000。

       Nginx
 (not receiving any
  requests from you;
  so you may as well
  disable it)


 Passenger Standalone <--------------- [Your request]