【问题标题】:ruby on rails nginx with passenger can't find viewsruby on rails nginx 与乘客找不到视图
【发布时间】:2013-12-13 21:34:04
【问题描述】:

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

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

nginx 服务正在运行,我通过“passenger start”手动启动乘客。我可以看到乘客接受传入的 HTTP 请求,如以下错误所示。奇怪的是,它正在我的 ruby​​ 应用程序的公共文件夹中查找 home/index.html。我使用了“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"

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

【问题讨论】:

    标签: ruby-on-rails nginx passenger


    【解决方案1】:

    您以错误的方式使用 Phusion Passenger。

    Phusion Passenger 提供3 modes:独立模式(作为独立 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]
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多