阿里云Linux下Nginx服务器整合php
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
本文以php-fpm为例介绍如何使nginx支持PHP
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的,具体选项含义可以查看这里。
一、安装前准备
centos下执行
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel \
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
二、安装php
下载地址:http://php.net/downloads.php 可以选择适合你的版本、这里选择5.6.13。
1、wget http://cn2.php.net/distributions/php-5.6.13.tar.gz
2、tar zvxf php-5.6.13.tar.gz
3、cd php-5.6.13
4、./configure --prefix=/usr/local/php--enable-fpm --with-mcrypt \
--enable-mbstring --disable-pdo --with-curl --disable-debug--disable-rpath \
--enable-inline-optimization --with-bz2--with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
--with-gd --with-jpeg-dir --disable-fileinfo
5、make
6、makeinstall
三、启动php服务五、启动服务
启动php-fpm
/usr/local/php/sbin/php-fpm start
检测是否启动 ps -ef|grep php,如果出现以下说明启动成功。
四、nginx整合php- fpm
新建 phpfpm.conf文件 加入:
fastcgi_connect_timeout 300; #指定连接到后端FastCGI的超时时间
fastcgi_send_timeout 300; #向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout 300; #接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收#FastCGI应答的超时时间。
fastcgi_buffer_size 64k;#这里可以设置为fastcgi_buffers指令指定的缓冲区大小
fastcgi_buffers 16 16k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答
fastcgi_busy_buffers_size 128k;#建议为fastcgi_buffers的两倍
fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,设置上述数值设置太小时若负载上来时可能报 502 Bad Gateway
fastcgi_cache dingtm; #开启FastCGI缓存并且为其制定一个名称,有效降低CPU负载,并且防止#502错误
fastcgi_cache_valid 200 302 1h; #指定应答代码缓存时间为1小时
fastcgi_cache_valid 301 1d; #1天
fastcgi_cache_valid any 1m; #其它为1分钟
fastcgi_cache_min_uses 1; #缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数将phpfpm.conf导入nginx.conf的http模块中。
includephpfpm.conf最后导入 server
server {
listen 80;
server_nameweixin.52itstyle.com;
charset utf8;
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#error_page404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504/50x.html;
location = /50x.html {
root html;
}
}新建 index.php文件 放到nginx的html目录下:
<?php
date_default_timezone_set('Asia/Shanghai');
echo phpinfo();?>
重启Nginx ./nginx -s reload
演示地址:http://weixin.52itstyle.com/index.php
如果出现以上画面 说明配置成功。
页:
[1]