我是Rails的新手,并尝试将我的rails应用程序(可以使用rails server
在我的计算机上完美运行)部署到服务器上。
我的服务器已安装nginx
和passenger
,并且工作正常。 但是,当我在/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
重新启动了nginx
该service nginx restart
返回OK
,但是还是没有运气。
谁能告诉我如何调试。 我应该在哪里查看乘客正在运行的所有应用程序? 我缺少什么部分?
编辑 :我正在密切关注此文档
似乎没有/home/path_to_my_app/public
目录。
在旅客版本5.0.7中,目录访问已更改。 现在,如果根目录不存在,它会退回到nginx来搜索index.html,如果现在有这样的文件,则会给出404错误。
[Nginx]现在,如果路径以/结尾,则Nginx模块将查找index.html,以便直观地工作,而无需使用try_files。
“位置/”表示所有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; }
无需为简单应用添加位置。
如果您的服务器日志显示旅客代理在线,并且您运行sudo passenger-status
并看到列出了您的应用程序,则表明该代理已正确安装。
您是否正在尝试使用localhost访问站点? 如果尝试从服务器外部访问它,则需要将server_name
设置为您的域或IP地址(并在进行任何更改后重新启动nginx)。 如果在服务器上运行curl http://localhost
,您是否看到站点中的html,还是看到另一个404?