在Web服务区和PHP代码之间, mod_php5 模块和php-cgi 的作用和位置定义是什么?
我在学习的时候:
http://www.runoob.com/nodejs/...
这里有一句:
如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。
我们知道 Apache, Nginx 这些都是 Web 服务器。我们用 PHP 写的程序运行在 PHP 的运行环境中,那么 mode_php5
, php-cgi
这些 PHP 的模块的作用是什么呢?
那么如果这里是 Python/Django 写的后端代码,那么这里是不是也需要有一个与 Apache 或者 Nginx 这样的 Web 服务器相联系的,作为 Python/Django 代码的中间件?
它的具体定义是什么? 作用是什么呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先, apache 的
mode_php5
,这点我不太确定,我猜,可能是像 java 的 servlet 一样, apache + mode_php5 更像是一个“容器”的角色,提供了直接运行 php 的能力。然后, php-cgi ,这个,可能是 php 的 cgi 协议实现?现在已经基本不用 cgi ,而是 fastcgi 这些, Django 也多是 fastcgi 方式部署。 fastcgi 是一个通用的网关协议, nginx 通过 fastcgi 协议与后面的 Python, php 等应用层通信。(类似的, Python 方面,有 wsgi , Java 的 servlet 我觉得也算)
网关协议(cgi , fastcgi 等),的作用,就是把 web 服务器抽出来,分离“应用”。
因为在各个语言上,实现 cgi 或 fastcgi ,要比实现一套完整的 http 要容易得多(最重要的一点是不用关心访问的“调度”了)。进一步说, Python 中的 Tornado 虽然自己有实现 http ,正式环境部署的时候,也会在前端部署 nginx ,从这里也可以看到, nginx 这类 web 服务器,除了实现 http 协议,还有其它相关的功能(反向代理,负载均衡,fastcgi 支持,uwsgi 支持等)。而通过通用的网关协议,把这些层分开,各自就可以更关注自己的领域,实现更稳定,强大的服务质量。