Rails: 部署第一个应用程序 - 生产模式

4

我对rails部署这件事感到非常困惑。在开发整个应用程序时,它一直处于development模式,这很好。现在我要部署它,我是否需要修改文件以将rails应用程序更改为production模式,还是部署会自动完成这一步骤?

我想知道如何切换环境?

2个回答

5

不需要更改任何文件,只需在您的服务器上设置shell变量RAILS_ENV=production


我应该如何在终端中准确地执行这个操作? - Muhammed Bhikha
1
export RAILS_ENV=production。我建议您不要在生产环境中使用rails s。请尝试使用Passenger服务器(https://www.phusionpassenger.com/)或其他服务器。 - Anatoliy Kukul
我运行了命令,但没有收到任何确认信息。我怎么知道它是否完成了呢? - Muhammed Bhikha
2
如果您的服务器重新启动,您需要再次运行export RAILS_ENV=production。 您应该将其放在其中一个配置文件中,例如.bashrc.zshrc。 此外,我建议使用thin或unicorn而不是passenger。 使用rails s运行没有问题,只需知道它运行webrick即可。 您可以始终指定要运行的服务器,例如您可以仅运行此命令rails server thin -e production,假设您的Gemfile中有thin,这将启动thin并在一个命令中将rails设置为生产模式。 - mwoods79

2

rails server -e production 命令会使你进入生产模式。

此外...

从 Rails 3.1 开始,资产文件默认由资源管道处理。因此,你需要运行 rake assets:precompile 或在 config/environments/production.rb 中开启资产服务。

# config/environments/production.rb
config.assets.compile = true

除此之外,您需要确保在config/database.yml中正确设置生产数据库。

除此之外,您已经准备就绪 :)

如果这真的是一个生产环境的服务器,您还可以设置一个环境变量为'production',正如Anatoliy Kukul在另一个答案中所解释的那样。


嘿,mwoods79。你绝对不应该设置config.assets.compile = true。使用rake assets:precompile。考虑更改你的答案。请参阅此帖子:https://dev59.com/CWoy5IYBdhLWcg3wBJkx - Benjamin
@Ben 我的回答仍然是正确的。是否是一个好主意是另一回事。经过多年的咨询,我可以想到至少有两个大型企业应用程序这样做,并且做得很好。这两个应用程序还将asset_host设置为使用CDN。这是一个很好的策略。第一个请求编译资产并将其存储在CDN中。之后的所有资产请求都从CDN提供服务。效果非常好。 - mwoods79

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