【问题标题】:nginx and passenger to run my rails applicationnginx 和乘客运行我的 rails 应用程序
【发布时间】:2015-05-19 18:33:24
【问题描述】:

我是 Rails 新手,正在尝试将我的 rails 应用程序(使用 rails server 在我的计算机上完美运行)部署到服务器上。

我的服务器已安装 nginxpassenger 并且工作正常。但是,当我将nginx 配置文件更改为/opt/nginx/conf/nginx.conf 时,如下所示

....
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/ruby1.9.1;
....
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;                                                                                                                                                                                    

    #access_log  logs/host.access.log  main;                                                                                                                                                            

    location / {
        root   /home/path_to_my_app/public;
        index  index.html index.htm;
    }

    passenger_enabled on;
}

它不起作用。我无法调用我的 Rails 代码。它一直说 404 错误。

我使用返回OKservice nginx restart 重新启动了nginx,但仍然没有运气。

谁能告诉我如何调试它。我应该在哪里查看我的乘客正在运行的所有应用程序?我缺少的部分是什么?

编辑:我非常关注documentation

【问题讨论】:

  • 有时当您重新启动nginx 时,一切似乎都正常,但实际上并非如此。尝试查找错误日志(有时位于/var/log/nginx/error.log),看看重启时是否打印出任何错误。
  • @MartinKonecny:该错误未显示任何错误。它只是在网上说PassengerAgent。该日志中没有错误。还有其他地方我应该检查吗??
  • 没有人能告诉我这是怎么回事吗?

标签: ruby-on-rails ruby ruby-on-rails-3 nginx passenger


【解决方案1】:

好像没有/home/path_to_my_app/public目录。

在乘客版本 5.0.7 中,目录访问已更改。现在如果根目录不存在,它会回退到 nginx 搜索 index.html,如果现在有这样的文件,则会给出 404 错误。

[Nginx] Nginx 模块现在查找 index.html 如果路径以 / 这样它就可以直观地工作,而无需使用 try_files。

https://blog.phusion.nl/2015/04/29/passenger-5-0-7/

【讨论】:

    【解决方案2】:

    如果您的服务器日志显示乘客代理在线,并且如果您运行 sudo passenger-status 并看到您的应用程序已列出,则表明该代理已正确设置。

    您是否尝试使用 localhost 访问该站点?如果您尝试从服务器外部访问它,则需要将 server_name 设置为您的域或 IP 地址(并​​在进行任何更改后重新启动 nginx)。如果您在服务器上运行curl http://localhost,您会看到来自您网站的 html,还是只是另一个 404?

    【讨论】:

      【解决方案3】:

      “location /”表示所有 HTTP 请求都将由该位置的处理程序处理,但没有一个,因此您将得到“404 not found”。我猜您的意思是您的主页是 index.html,因此将“location /”更改为“location =/”将解决您的问题。


      更新

      server { listen 80; server_name localhost; root /path/to/public; passenger_enabled on; } 简单应用无需添加位置。

      【讨论】:

      • 这并没有解决问题。它仍然说404错误。如何检查我的 rails 应用程序是否正在运行??
      • passenger 会为你处理所有请求,所以只需设置 public 的根路径。
      猜你喜欢
      • 2015-06-30
      • 2012-03-31
      • 2010-12-14
      • 2023-04-07
      • 2018-05-01
      • 2011-04-26
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多