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

Ruby on rails Rails 4仅为生产环境更改端口号,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我以前发现过这个问题: 然而,我真正想要的是只为生产环境更改端口号。我正在使用ROR4。如果我能在config/environments中的production.rb上键入一些东西,那就太好了。有没有办法做到这一点?答案很简单 rails堆栈包含您的应用程序,然后是运行您的应用程序的服务器(也称为“应用程序服务器”)。这个服务器可能是webrick(在生产中不是一个好主意)、thin、gunicorn、passenger等 您应该告诉服务器在哪个端口下运行。您(可能)需要在Rails外部指定此

我以前发现过这个问题:

然而,我真正想要的是只为生产环境更改端口号。我正在使用ROR4。如果我能在
config/environments
中的
production.rb
上键入一些东西,那就太好了。有没有办法做到这一点?

答案很简单 rails堆栈包含您的应用程序,然后是运行您的应用程序的服务器(也称为“应用程序服务器”)。这个服务器可能是webrick(在生产中不是一个好主意)、thin、gunicorn、passenger等

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

下面是一个更深入的潜水示例: 让我们以Heroku为例,因为那里的端口号基本上是随机的(至少从我们观察的角度来看)

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

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
请看这里,我们使用
-p$PORT
告诉unicorn(本例中的应用服务器)在Heroku给我们的某个端口上运行

回到你的问题:
无论您如何在生产环境中启动应用程序服务过程,都应该告诉它指定web服务器的端口号。有很多方法可以在生产级别启动应用程序服务过程:从upstart(内置于Ubuntu中)、supervisord到god。。。所有这些方法都会运行命令并确保流程正常运行(这是生产级部署的一个重要部分)。

这不应该是应用程序设置的问题,而应该是服务器配置的问题。如何在生产环境中运行应用程序?