Rails 部署,bundle exec rails s vs Nginx 和 Passenger

Rails deployment, bundle exec rails s vs Nginx and Passenger

我最近将 rails 应用程序部署到 AWS 上的 ec2 实例。这是我第一次做这样的部署。

我四处阅读,大多数消息来源似乎都建议 rails 使用 Nginx 和 Passenger 进行部署。

现在我 运行 bundle exec rails s -p 80 -b 0.0.0.0 和我的应用程序 运行 当我去我的 ec2 url 时非常棒。

我想知道 运行ning bundle exec rails s -p 80 -b 0.0.0.0 VS 使用 Nginx 和 Passenger 的优点和缺点是什么?

  1. Nginx 和 passenger 将有助于负载平衡,您可以在其中减少 passenger 对服务器的请求。
  2. 如果 passenger 死亡,nginx 将启动新的 passenger。
  3. 对于部署 nginx 和 passenger 是很好的方式,使用 'rails s' 和端口号启动服务器有利于开发而不是部署。
    1. Https 和其他更多选项可用于 nginx。
    2. Web 服务器和应用程序服务器是部署的良好组合。

rails s 相比,在您的生产环境中使用 NGINXPassenger 有很多优势。

如果您使用的是 WEBrick::HTTPServer 标准 rails s,您会注意到性能提升,因为 NGINX 和 Passenger 针对此类事物进行了高度优化。

NGINX 提供了几个配置文件,您可以在其中控制虚拟主机并将其用作反向代理服务器 (http://nginx.org/en/docs/beginners_guide.html)。它在服务静态资产方面非常快。如前所述——它提供了几个选项(负载平衡、gzip 选项、SSL 和非安全服务器块设置、缓存、代理请求)。

将 NGINX 与 Passenger 一起使用非常高效,因为您可以在 NGINX 配置中包含 Passenger,以使用 Passenger 所需的一组选项自动启动服务器。 Passenger 提供了几种您可以使用的配置,例如,maximum/minimum 您可以拥有的应用程序和 RAM 限制的分叉数量 processes/threads。访问 https://www.phusionpassenger.com/library/config/nginx/reference/ 以获得所有这些人的列表。它还可以在您的应用程序崩溃时重新启动它,这也是一个很大的好处。