无法配置Passenger和Nginx用于Rails应用程序部署。

4
我将在CentOS VPS上部署一个Rails应用程序。我已经通过gem install passenger安装了Passenger,为了安装Nginx,我使用了rvmsudo passenger-install-nginx-module命令。
在Nginx配置文件中,我设置了:
server { 
        listen       80; 
        server_name  my-ip-address;  

       location / { 
            root   /home/deploy/repos/application-name/public; 
            passenger_enabled on; 
            rails_env production;  
        }
        ...
}

当我执行sudo service nginx status时,我得到以下结果:

nginx (pid 21015 21014) is running...

这显示nginx正在运行。

但是在浏览器上我得到了此网页不可用的错误。

即使我在开发模式下使用rails s启动rails服务器,并尝试使用我的IP地址:3000在浏览器中检查,也会得到相同的结果。

有人可以帮忙解决问题吗?

当我运行命令passenger-config restart-app时,结果为:

Phusion Passenger is currently not serving any applications

我需要建议,这个问题是与nginx还是passenger有关?
还有一个问题是-
如果我的passenger没有正确安装,但nginx已经正确安装,那么我是否能够看到“欢迎来到nginx页面”?
更新:
我尝试运行passenger start -p 3000 -d -e production,通过这种方式,passenger在后台提供服务。现在,如果我运行passenger-status,我会得到两个passenger实例,其中一个显示Phusion Passenger is currently not serving any applications,另一个则显示:
Version : 5.0.21
Date    : 2016-01-16 10:42:42 +0530
Instance: feOajf7V (nginx/1.8.0 Phusion_Passenger/5.0.21)

----------- General information -----------
Max pool size : 6
App groups    : 1
Processes     : 1
Requests in top-level queue : 0

----------- Application groups -----------
/home/deploy/repos/application-name/public (production):
  App root: /home/deploy/repos/application-name
  Requests in queue: 0
  * PID: 22003   Sessions: 0       Processed: 0       Uptime: 4m 17s
    CPU: 0%      Memory  : 36M     Last used: 4m 17s ago

如果我运行passenger-config restart-app,结果如下:

Please select the application to restart.
 ‣   /home/deploy/repos/application-name/public (production)
     Cancel

这是否意味着Passenger正在正常工作?但是我在浏览器中看到“网页不可用”。

认真阅读一遍这个链接,你就会明白如何使用Passenger和Nginx在CentOS 6.5上部署Rails应用程序了:https://www.digitalocean.com/community/tutorials/how-to-deploy-rails-apps-using-passenger-with-nginx-on-centos-6-5 - sidegeeks
抱歉,我在问题中没有提到,但我已经按照同一篇文章安装了nginx和passenger,并包括了nginx管理脚本。 - Swati Yamgar
2个回答

1
我认为您还没有在项目目录中运行passenger。在您的项目根目录中键入以下命令:
passenger start -p <port>

其中<port>是您希望运行应用程序的端口号(例如:8000)。

更新

根据您问题的更新和下面的评论,问题似乎不在nginx或passenger的配置中。由于您尝试访问真实VPS IP而不是本地IP,存在这样的可能性,即相关端口未打开。您可以在此处检查是否已打开。


我已经根据您的建议更新了我的问题,并附上了结果。但仍然无法正常工作。这可能与nginx有关吗? - Swati Yamgar
我只是在浏览器中输入了IP地址。 - Swati Yamgar
好的,我看到问题在哪了。你必须输入IP地址端口,即127.0.0.1:3000或者只是localhost:3000。 - Brozorec
谢谢您的回复,但是当我启动独立的Passenger时,我尝试使用您提到的端口,但是在使用nginx时,我只尝试了我的IPAddress。我之前在问题中提到过:“即使我使用rails s在开发模式下启动rails服务器,并尝试在浏览器中使用my-ip-address:3000进行检查,结果也是一样的”。 - Swati Yamgar
不是真的。在虚拟专用服务器上,我运行了“rails s”来尝试我的应用程序。我也尝试了你建议的那个方法。对于这两种情况,我都运行了VPS-IP-Address:3000。 - Swati Yamgar
显示剩余5条评论

0

我不是大师,但在我的(工作中的 ;))安装中,我有:

keepalive_timeout 10;
passenger_enabled on;
root /var/www/org/current/public;

在服务器块中,而不是位置块。希望这有所帮助。
快速查看文档告诉我相同的事情: https://www.phusionpassenger.com/library/deploy/nginx/deploy/ruby/ 我不知道这是否能为您解决问题,因为我记得让nginx和passenger工作有点棘手,而我使用Chef,但这应该会有所帮助。

谢谢您的快速回复。我也尝试了那个方法,但是仍然出现了“网页不可用”的提示。 - Swati Yamgar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接