Nginx与PHP(FastCGI)的安装、配置和优化

什么是FastCGI

FastCGI是一种可伸缩的、高速的在HTTP server和动态脚本语言间通信的接口。FastCGI也被众多脚本语言支持,包括PHP。

FastCGI是从CGI发展而来的。FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分离开,同时在脚本解析服务器上启动一个或多个脚本解析守护进程。

当HTTP服务器每次遇到动态城区时,直接交付给FastCGI进程执行,然后返回结果给浏览器,提高了系统的整体性能。


Nginx+FastCGI运行原理

Nginx并不支持对外部程序的直接调用或解析,所有外部程序都要通过FastCGI接口来调用。为了调用CGI程序,还需要一个FastCGI的wrapper,可以理解为用于启动另一个程序的程序。

这个wrapper绑定在某个固定的socket上,如端口或文件socket。当Nginx将CGI请求发送给socket时,通过FastCGI接口,wrapper接收到请求,派生一个新的线程,此线程调用解释器或外部程序处理脚本并读取返回数据,接着wrapper将返回数据通过FastCGI接口传给Nginx,最后Nginx再返回给客户端。


spawn-fcgi与PHP-FPM

FastCGI接口在脚本解析服务器上启动一个或多个守护进程动态解析脚本,这也成为FastCGI进程管理器,spawn-fcgi与PHP-FPM就是两个进程管理器。

spawn-fcgi:是HTTP服务器lighttpd的一部分,目前已是独立成为一个项目,一般与lighttpd配合使用来支持PHP。但是spawn-fcgi在高并发的时候会出现内存泄漏甚至自动重启FastCGI。

PHP-FPM:第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的。在安装过程中也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核,因此性能方面更加优秀。同时其处理高并发方面能力也好很多。

因为FastCGI的优点是把动态语言和HTTP server分离开,所以Nginx与PHP/PHP-FPM经常被部署到不通的服务器上,以分担Nginx前端的压力,使Nginx专注处理静态请求,PHP/PHP-FPM解析PHP动态请求。


PHP与PHP-FPM安装与优化

下载安装包

下载php包:www.php.net,这里使用php-5.2.13.tar.gz

下载php-fpm包:php-fpm.org,这里使用php-5.2.13-fpm-0.5.13.diff.gz

注意:最好php和php-fpm版本一致,否则可能会出现兼容性问题。

配置安装环境

需要的依赖包包括:

gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel等

根据系统版本的不同,可能依赖的包也不同。

编译安装php和php-fpm

解压缩php的源码包并将php-fpm当做补丁打入php源码中。

tar zxf php-5.2.13.tar.gz
gzip -cd php-5.2.13-fpm-0.5.13
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值