之前我发现了这个问题: How to change Rails 3 server default port in develoment?
但我真正想要的只是改变生产环境的端口号。我正在使用RoR 4.如果我可以在production.rb
的{{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 ......所有这些方法都运行命令并确保流程保持正常(生产的一个重要部分)级别部署;))