Rails 4仅为生产环境更改端口号

时间:2014-08-24 15:09:03

标签: ruby-on-rails ruby ruby-on-rails-4

之前我发现了这个问题: How to change Rails 3 server default port in develoment?

但我真正想要的只是改变生产环境的端口号。我正在使用RoR 4.如果我可以在production.rb的{​​{1}}上输入内容,那将是非常好的。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

答案简述

rails stack包含您的应用程序,然后是运行您的应用程序的服务器(也称为“应用程序服务器”)。这个服务器可能是webrick(在制作中不是一个好主意),瘦,枪,乘客等等。

你应该告诉服务器在哪个端口下运行。您(可能)需要在Rails之外指定它 - 而不是在config/production.rb中,因为当Rails启动时它已经在某个应用程序服务器中运行。

使用示例进行更深入的潜水:

让我们以Heroku为例,因为那里的端口号基本上是随机的(至少从我们看到的视图中)。

Heroku将为我们选择一个随机端口,然后通过PORT环境变量告诉我们。使用Heroku,您需要一个Procfile来告诉它要启动哪些服务,并且您的Procfile可能如下所示:

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

看到这里,我们使用-p $PORT告诉独角兽 - 本例中的应用服务器 - 在Heroku给我们的某个端口上运行。

回到你的问题:

但是,如果您在生产环境中启动应用程序服务流程,则应告诉它为Web服务器指定端口号。有很多方法可以在生产级别启动应用程序服务流程:从upstart(内置到Ubuntu)到supervisord到god ......所有这些方法都运行命令并确保流程保持正常(生产的一个重要部分)级别部署;))