FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,
FastCGI的工作原理是:
(1) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。启动php-cgi FastCGI进程的两种方式:TCP和UNIX套接字。
(2)当客户端请求到达Web服务器(Nginx)时,Web服务器将请求采用TCP协议或UNIX套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
(3) FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器(Nginx)。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。
所以,你可以想象普通的CGI模式有多慢。每一个Web请求PHP都必须重新解析php.ini,重新载入全部扩展并重新初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。 PHP FastCGI的优点:
(1) PHP脚本运行速度更快。PHP解释程序被载入内存而不用每次需要时从存储器读取,此举极大提升了依靠脚本运行站点的性能。
(2)须要使用的系统资源更少。由于服务器不用在每次需要时都载入PHP解释程序,你可以将站点的传输速度提升很多而不必增加CPU负担。
(3)不需要对现有的代码作任何改变。运行在Apache+PHP上的程序,无须修改印可适用于PHP的FastCGI。
安装 php
(1)若服务器为centos,升级以下软件包
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
(2)编译安装 php5.2.10 所需的支持库
libiconv-1.13.tar.gz
libmcrypt-2.5.8.tar.gz
mhash-mhash-0.9.9.9.tar.gz
mcrypt-2.6.8.tar.gz
(3)编译安装php5.2.10(fastCGI模式)
php-5.2.10.tar.gz
(4)编译安装php5扩展模块
memcache-2.2.5.tgz
eaccelerator-0.9.5.3.tar.bz2
PDO_MYSQL-1.0.2.tgz
ImageMagick.tar.gz
imagick-2.2.2.tgz
(5)修改php.ini文件:
增加以下几行并保存
(6)配置eaccelerator加速php
(7)创建www用户和组,以及供blog.domain.com和www.domian.com虚拟主机使用的目录
(8)创建php-fpm配置文件(php-fpm是php的一个fastCGI管理补丁,可以平滑变更php.ini配置而无须重启php-cgi)
(9)启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www
ulimit -SHn 65535
/usr/local/php/sbin/php-fpm start
编译安装mysql
如果你想在这台服务器上运行MySQL数据库,则执行以下几步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下几步无需执行。
1、创建MySQL数据库存放目录
2、以mysql用户帐号的身份建立数据表:
3、创建my.cnf配置文件:
4、创建管理mysql数据库的shell脚本
5、赋予shell脚本可执行的权限
6、启动mysql
7、通过命令行登陆管理mysql服务器(提示输入密码时直接回车)
8、输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '12345678';
9、(可选)停止mysql
编译安装nginx
1)安装Nginx所需的pcre库:
pcre-8.10.tar.gz
2)安装Nginx
nginx-0.8.46.tar.gz
3) 创建Nginx日志目录
mkdir -p /data1/logs
chmod +w /data1/logs
chown -R www:www /data1/logs
4) 创建Nginx配置文件
1、在/usr/local/nginx/conf/目录中创建nginx.conf文件:
2、在/usr/local/nginx/conf/目录中创建fcgi.conf文件:
5)启动Nginx
ulimit -SHn 65535
/usr/local/nginx/sbin/nginx
转载于:https://blog.51cto.com/19001989/702921