在Web服务区和PHP代码之间, mod_php5 模块和php-cgi 的作用和位置定义是什么?

发布于 2022-09-06 15:37:04 字数 515 浏览 24 评论 0

我在学习的时候:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月隐月明月朦胧 2022-09-13 15:37:04

首先, 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 支持等)。而通过通用的网关协议,把这些层分开,各自就可以更关注自己的领域,实现更稳定,强大的服务质量。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文