admin 发表于 2015-9-8 20:08

阿里云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]
查看完整版本: 阿里云Linux下Nginx服务器整合php