ruby-on-rails - rails : What is the use of web servers (Apache/nginx/passenger)?

标签 ruby-on-rails

嗨,我在过去的半年里一直在学习 Rails,并且在 Heroku 上有一些应用程序。所以对我来说,我认为将应用程序部署到万维网上就像 heroku push 一样简单。 .但是,我刚刚获得了第一个 Rails 实习机会,我的一位前辈正在谈论 Apache 和 Nginx,我不确定它们在图片中的位置,因为我认为应用程序仅由 Rails + 云应用程序平台组成。我已经查过了,但我仍然不明白它如何以及在何处影响我的应用程序生命周期。有人可以解释一下使用网络服务器的内容/地点/时间吗?

最佳答案

所以你已经有了你的 Rails 应用程序,而且你知道你有 Controller 、 Action 和 View ,还有什么没有。

当浏览器中的用户在 Heroku 上访问您的应用程序时,他们会输入指向 Heroku 服务器的 URL。

Heroku 服务器是 Web 服务器,它监听您输入 URL 的用户并将他们连接到您的 Rails 应用程序。 rails 应用程序完成它的工作(获取博客文章列表或其他内容),服务器将此信息发送回用户的浏览器。

您一直在使用 Web 服务器,只是它从您那里抽象出来,并且由于 Heroku 变得非常简单。

所以生命周期有点像这样:

当您在开发机器上构建应用程序时,您可能会遇到命令 rails server .这将启动一个名为 WEBrick 的程序,它是一个 Web 服务器,并监听端口 3000。您通过 http://localhost:3000 进入您的应用程序。 .

WEBrick 监听端口 3000 并响应用户的请求,例如“嘿给我一个帖子列表”命令。

当您将代码投入生产时(根据您通过 heroku push 的经验),您将您的代码发送给负责生产等效于 rails server 的提供商。为你。

生产设置(您的高级开发人员正在谈论)比您本地的要复杂一些 rails server在您的开发机器上设置。

在生产环境中,您有自己的 Rails 服务器(通常是 Unicorn、Passenger 之类的东西),它取代了 WEBrick。

在许多生产设置中,还会使用另一台服务器,例如 Apache 或 nginx,并且是用户在访问您的应用程序时连接到的服务器。

该服务器通常作为一个路由器存在,用于确定应如何处理不同类型的请求。例如,对存储在服务器上的静态文件(css、图像、javascript 等)的请求可能只是由 Apache 或 nginx 直接处理,因为它在将静态 Assets 发送回客户端方面做得非常出色(而且速度很快)。

其他请求,例如“给我一份所有博客文章的列表”被传递到 Rails 服务器(Unicorn、Passenger 等),后者依次执行所需的工作并将响应发送给 Apache/nginx,后者将其发送回客户端.

Heroku 在一个很好的易于使用的包中为您完成所有这些,但听起来您工作的地方自己管理这些,而不是使用 Heroku。他们已经设置了自己的一堆网络服务器,并且会以自己的方式做相当于 heroku push 的事情。这会将代码发送到服务器,并确保它们已启动并准备好响应用户请求。

希望有帮助!

关于ruby-on-rails - rails : What is the use of web servers (Apache/nginx/passenger)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187233/

相关文章:

ruby-on-rails - Octopus 可以保留数据库连接池吗?

javascript - 为日期时间选择器设置 slider 的默认值

ruby-on-rails - RAILS - assert_raise 检查异常的深度

ruby-on-rails - 如何使用命令 "heroku pg:transfer"?

ruby-on-rails - Rails 标记和标记列表

javascript - Rails Leaflet Webpack 空白页

ruby-on-rails - activeadmin 表单中所需的输入不起作用

ruby-on-rails - 我怎样才能返回 nil 而不是丢失哈希键的错误?

ruby-on-rails - Rails i18n 字符串自动小写?

ruby-on-rails - Apple 推送通知/Ruby OpenSSL 错误