zoukankan      html  css  js  c++  java
  • LNMP搭建04 -- 配置Nginx支持PHP

    首先建立存放网页文件的目录,执行 mkdri /usr/local/server/www 
    然后进入到该目录中 cd /usr/local/server/www
    然后创建一个测试文件: phpinfo.php
     
    然后,开始配置Nginx,进入 /usr/local/server/nginx/conf
    将nginx.conf 复制一份命名为:nginx.conf.rxbak
     
    然后修改 nginx.conf:
    index  index.html index.htm;
    改为:
    index  index.html index.htm index.php;

    #location ~ .php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
    #}
    改为:

    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;
    }



    《2015年12月24日 修正》

    安装完成后发现没有curl,参考 http://www.centoscn.com/image-text/config/2015/0521/5490.html

    整理如下:

    ##源码编译安装curl:

    安装cURL

    wget http://curl.haxx.se/download/curl-7.42.1.tar.gz

     tar -zxf curl-7.42.1.tar.gz

    ./configure --prefix=/usr/local/curl(可选,默认安装在/usr/local/bin目录下)

    make & make install

    解压PHP源码包,并进入到ext/curl目录
    安装
     /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-curl=DIR(默认路径时无需指定)
    make&&make install
    会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525生成curl.so文件

    进入/usr/local/php,将源码包的php.ini-development 复制到/usr/local/php/php.ini
    然后再php.ini 最后加入一行:extension=curl.so 就可以了。 

     

     


    接下来,安装memcache 和 memcached
    本来要用编译安装的,但最后还是失败。幸运的是,我自己找出了一个很好的办法。如下:
    可参考:http://www.111cn.net/sys/linux/64048.htm 

    安装memcache:
    进入php安装好的目录bin下执行:
    ./pecl install memcache

    可能会出错:
    Cannot find autoconf. Please check your autoconf installation and the
    $PHP_AUTOCONF environment variable. Then, rerun this script.
    ERROR: `phpize' failed
    解决办法:sudo apt-get install autoconf

    然后再执行刚才的命令:

    输入 yes

    这里提示要在 php.ini 添加 extension=memcache.so

    注意:此时需要知道php.ini 应该在什么位置,在phpinfo中可以查看到:

     

    php.ini-development和php.ini-production是系统推荐的php.ini设置参数,前者是为开发环境推荐的,允许调试、少占资源的原则,后者是为实际上线后的产品环境推荐的,禁止报错、提高性能的原则。

    在之前编译的源码包中,找到 php.ini-production

    复制到 /usr/local/server/php

    如果有问题,试试: 复制 /etc/php5/cli/php.ini 到 /usr/local/server/php/php.ini

    现在开始给php.ini 最后添加 extension=memcache.so
    保存退出。
    然后重启 php-fpm 和 nginx

    查看 phpinfo


    接下来,同样的,很简单,安装 memcached:
    进入php安装好的目录bin下执行:
    ./pecl install memcached
    之后一系列出错,可上次明明成功。哎,无语!

    最后没办法,编译安装吧!
    先把下面这些乱七八糟的先安装了再说:
    apt-get install -y build-essential gcc g++ make m4 libpcre3 libpcre3-dev libcurl4-gnutls-dev libjpeg62-dev libpng12-dev libmemcached-dev
    sudo apt-get install libevent-dev
    sudo apt-get install libsasl2-dev
    sudo apt-get install m4
     
    ① 安装 libevent
    tar zxvf libevent-2.0.20-stable.tar.gz
    cd libevent-2.0.20-stable/
    sudo ./configure --prefix=/usr/local/libevent
    make
    make install

    ② 安装 libmemcached
    tar zxvf libmemcached-0.42.tar.gz
    cd libmemcached-0.42/
    ./configure --prefix=/usr/local/libmemcached --with-memcached --enable-sasl
    make
    make install

    ③ 安装 memcached
    tar zxvf memcached-2.2.0.tgz
    cd memcached-2.2.0/
    /usr/local/php/bin/phpize
    ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl
    make
    make install

    安装完成:

    有的说是,在php.ini 后面添加上面截图的。但是我加了  extension=memcached.so ,也成功了!真的很无语!!!


    配置nginx 支持 ThinkPHP
    在 nginx 下面用 ThinkPHP 做开发,每次输入 类似 /test/tp/index.php/Index/index 的 URI , 提示没有找到该页
    在网上搜了一下,原来 nginx 原来不支持 pathinfo 模式,需要自己配置
    在配置文件的 server 块中,加入以下内容:

    # ThinkPHP 的 pathinfo 支持 -------------- BEGIN  
    location /qgzs_apiv2/app/ {  
        index index.php;  
        if (!-e $request_filename) {  
            rewrite ^/qgzs_apiv2/app/(.*)$/qgzs_apiv2/app/index.php/$1 last;  
            break;  
       }  
    }  
    location ~ .+.php($|/) {  
        set $script $uri;  
        set $path_info "/";  
        if ($uri ~ "^(.+.php)(/.+)") {  
            set $script     $1;  
            set $path_info  $2;  
        }  
          
        fastcgi_pass 127.0.0.1:9000;  
        fastcgi_index index.php?IF_REWRITE=1;  
        include fastcgi_params;  
        fastcgi_param PATH_INFO $path_info;  
        fastcgi_param SCRIPT_FILENAME $document_root/$script;  
        fastcgi_param SCRIPT_NAME $script;  
    }  
    # ThinkPHP 的 pathinfo 支持 -------------- END  


    其中 /qgzs_apiv2/app/ 是我项目的路径
    保存配置之后,重启 nginx ,配置成功
    直接支持类似于 /Index.html 这样的伪静态模式

  • 相关阅读:
    h5唤起app
    app唤起的完美解决方案,及阻止浏览器的默认弹窗行为
    cdn
    函数声明和函数表达式的区别
    基础系列(7)—— 结构
    基础系列(4)—— C#装箱和拆箱
    重温软件工程——对软件工程的初步了解
    基础系列(9)—— 抽象方法和接口
    自学系列--git的基础简介
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/rxbook/p/5993272.html
Copyright © 2011-2022 走看看