在PHP中,你只需要Apache或Nginx。为什么Ruby on Rails还需要像Puma或Unicorn这样的东西,当已经安装了Nginx?
这并不是完全正确的,要在Apache上运行PHP,则需要使用Apache mod_php 或者将其作为FastCGI模块运行。对于Nginx来说,后者似乎是惯例。
对于Ruby来说,有一个名为Phusion Passenger 的工具可以发挥该作用,并支持apache和nginx。在apache上,它像mod_php一样作为插件模块运行。对于Nginx,我不确定。
但是,您可能希望使用专用应用程序服务器运行Ruby应用程序。这就是Unicorn、Puma等工具派上用场的地方。没有什么阻止您为PHP执行类似的设置,但这种情况较少见。
在许多情况下,使PHP更易于部署的另一件事是,大多数发行版和服务器安装都已经设置好了处理PHP的apache和nginx,而对于Ruby,您需要自己进行设置。
一旦设置好了,Passenger使得部署Ruby应用程序几乎(但并非完全)与部署PHP应用程序一样简单。
既然您已经从事过php后端开发,我认为您应该熟悉modphp或fcgi模块。它们是编译和运行php代码的实际引擎。 Ruby on Rails不能像php一样独立运行。因此需要像puma或phusion passenger这样的东西来运行它。它们被称为应用服务器。 您可以使用应用服务器直接提供网站服务,但这是不推荐的方法。有更适合的替代方案,比如nginx,它专门为此目的而演变。
我在这里找到了一篇很棒的文章 https://www.rubyguides.com/2019/08/puma-app-server/
我还制作了这张图表,列出了Web服务器、应用服务器和Web框架的职责列表。