我正在NginX和Passenger上组装我的第一个ROR应用程序。我在网上关注教程,当我试图转到主页时,我会遇到以下错误。
我使用命令行创建了一个控制器home_controller.rb。我还在命令行中创建了视图,该命令行构成了默认的ERB文件。
nginx服务正在运行,我通过"乘客启动"手动启动乘客。我可以看到乘客接受传入的HTTP请求,如以下错误所示。奇怪的是,它在我的ruby应用程序的公共文件夹中查找home/index。我使用了"rails generate[controller/view]foo",它在public之外写入文件。
我的nginx-config被配置为指向我的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服务器",一切似乎都很好/编辑0
您使用Phusion Passenger的方式不对。
Phusion Passenger提供3种模式:独立模式(作为独立web服务器运行的模式)、Nginx集成模式和Apache集成模式。通过运行passenger start
,您正在使用它的独立模式。
您也运行Nginx。从你的日志来看,你似乎正在访问Nginx。但这无济于事。乘客是独立运行的,没有在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]