Nginx和乘客运行我的Rails应用程序

问题描述 投票:0回答:3

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

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

....
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错误。

我使用service nginx restart重新启动了nginxservice nginx restart返回OK ,但是还是没有运气。

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

编辑 :我正在密切关注此文档

ruby-on-rails ruby ruby-on-rails-3 nginx passenger
3个回答
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/


0
投票

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


更新

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.