Web服务器处理动态程序三种方式及Apache配置

时间:2023-01-08 15:52:01

模块、CGI、FastCGI三种方式介绍

Web服务器处理动态程序三种方式及Apache配置

以PHP脚本为例:

模块方式是指Web服务器通过libphp5.so模块调用PHP服务,模块将相关函数嵌入Web服务请求处理流程,不需要额外解释器进程。注意,libphp5.so是PHP提供的,不是apache自带的。

CGI模式是指Web服务器在本地启动一个解释器进程执行PHP脚本,解释完毕后关闭进程。这种方式只适用于本地,并且是串行执行,效率较低。

FastCGI模式是指由单独的进程管理器如PHP-FPM启动并管理多个解释器进程,Web服务器只需将脚本传给相应端口即可执行,解释完毕后解释器进程不关闭,等待下一个请求。这种方式既适用于本地,也适用于分布式架构,并且多个进程并行处理,效率较高。

简单总结:假设Web服务器是一家公司,模块方式是自己有多个部门,遇到问题能自己解决;CGI模式是自己部门不多,遇到事情就临时成立工作组,完成后就解散;FastCGI模式是自己专做擅长的事情,遇到其他问题选择外包给其他公司。你看,这和公司的演变很像吧!

我一直觉得不论是技术还是社会都有一个基本的思维范式:分层、分类、分工。

用Apache实现这三种方式

1.PHP模块

vim /etc/httpd/conf/httpd.conf  

DirectoryIndex index.php index.html index.html.var
LoadModule php5_module modules/libphp5.so
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType applicaiton/x-httpd-php-source .phps /etc/init.d/httpd restart

Web服务器处理动态程序三种方式及Apache配置

2.CGI模式

vim /etc/httpd/conf/httpd.conf 

#LoadModule php5_module modules/libphp5.so
Action application/x-httpd-php /cgi-bin/php-cgi cp /usr/bin/php-cgi /var/www/cgi-bin/
/etc/init.d/httpd restart

3.FastCGI模式

待续