zoukankan      html  css  js  c++  java
  • php php-fpm安装 nginx配置php

    centos 6.2 linux下安装php5.6.6源码

    PHP在 5.3.3 之后已经把php-fpm并入到php的核心代码中了。 所以php-fpm不需要单独的下载安装。
    要想php支持php-fpm,只需要在编译php源码的时候带上 --enable-fpm 就可以了

    一:yum安装php的依赖库

    yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel

    二:下载 php5.6 源码

    wget http://cn2.php.net/distributions/php-5.6.6.tar.gz

    tar -zxvf php-5.6.6.tar.gz
    cd ./php-5.6.6/

    三:php配置安装

    # 配置php的编译参数
    ./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-freetype-dir=/usr/lib64

    # 开始编译安装
    make
    make install

    然后就安装到了 /usr/local/php 目录下

    四:配置php.ini和php-fpm

    php.ini配置

    首先我们需要配置的是php.ini这个文件

    安装目录有2个文件:php.ini-development和php.ini-production

    php.ini-production 线上版本使用

    php.ini-development 开发版本使用

    我们选择development进行配置

    # cp php.ini-development /usr/local/php/lib/php.ini

    php-fpm配置

    首先启动php-fpm:

    /usr/local/php/sbin/php-fpm

    报错了
    ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
    ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
    ERROR: FPM initialization failed

    错误信息说是找不到php-fpm.conf

    到php的配置目录
    cd /usr/local/php/etc
    有一个php-fpm.conf.default的文件,cp复制
    cp php-fpm.conf.default php-fpm.conf

    编辑 php-fpm.conf
    找到以下配置项, 配置如下

    pid = run/php-fpm.pid
    user = www
    group = www

    再次运行
    /usr/local/php/sbin/php-fpm
    报错了:
    ERROR: [pool www] cannot get uid for user 'www'
    ERROR: FPM initialization failed

    说www用户不存在,那么建立www用户和用户组

    groupadd www
    useradd -g www www

    再次启动

    /usr/local/php/sbin/php-fpm

    没有任何报错,说明运行成功了

    验证是否成功

    ps aux|grep php-fpm

    出现了 php-fpm进程:
    root 15448 0.0 0.2 210972 4856 ? Ss 16:10 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
    www 15449 0.0 0.2 213056 4768 ? S 16:10 0:00 php-fpm: pool www
    www 15450 0.0 0.2 213056 4768 ? S 16:10 0:00 php-fpm: pool www
    root 15492 0.0 0.0 112648 964 pts/0 R+ 16:11 0:00 grep --color=auto php-fpm

    五:加入开机启动

    开机启动的配置文件是:/etc/rc.local
    # vi /etc/rc.local

    /usr/local/php/sbin/php-fpm  # 添加进来

    六:php-fpm的一些命令

    我们在新安装扩展后,是需要重新php-fpm的,已使扩展生效。
    最简单粗暴的重新php-fpm的方式是:
    先找到php-fpm的进程号,kill 掉,再用/usr/local/php/sbin/php-fpm 这样启动。
    其实还有更多温和的方法,就是使用信号。
    INT, TERM 立刻终止
    QUIT 平滑终止
    USR1 重新打开日志文件
    USR2 平滑重载所有worker进程并重新载入配置和二进制模块

    示例:

    php-fpm 关闭:
    kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
    
    php-fpm 重启:
    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

    七:nginx配置解析php

    nginx的配置安装见前面文章:http://www.cnblogs.com/starlion/p/8875982.html

    1、进入nginx目录
    cd /usr/local/nginx

    2、编辑配置文件
    vi ./conf/nginx.conf

    在 server 下找到

    location / {
        root html;
        index index.html index.htm index.php; # 加上 index.php
    }

    去掉前面注释 #

    location ~ .php$ {
        root /usr/local/nginx/html; # 绝对路径配置到html下
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #验证时候解析php出错,/scripts需要换成$document_root, 下面有解释
    include fastcgi_params;
    }

    3、然后平滑重启nginx
    ./sbin/nginx -s reload
    没有报错,说明重启成功

    八:验证php是否配置成功

    在 /usr/local/nginx/html 目录下编辑 vi index.php

    <?php
    echo phpinfo();
    ?>

    在浏览器上输入 http://ip:80/index.php 然后出现了错误
    File not found

    查看nginx的日志,配置日志在 ./logs 目录下
    首先查看access.log 日志,出现了如下错误信息
    FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.107.***.138, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "1**.24.**.115"

    在看 error.log 日志信息出现了下面信息
    [error] 16403#0: *42 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.107.***.138, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "1**.24.**.115"

    根据上面的 FastCGI sent in stderr: "Primary script unknown"
    这是在配置nginx解析php脚本时候出现了错误

    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

    修改成如下方式($document_root):

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    $document_root 代表当前请求在root指令中指定的值:

    修改之后重启nginx
    ./sbin/nginx -s reload
    重新刷新浏览器,出现如下图所示,说明配置成功了

     

  • 相关阅读:
    快捷键
    mongoose--------ORM数据操作框架
    restful-----------------------------接口设计方式(一种风格)
    yarn========================(类似于node)
    npm
    nodejs笔记
    事件委托添加与移除
    JSON基础知识
    json字符串转换为json对象
    CSS3弹性盒模型
  • 原文地址:https://www.cnblogs.com/jiujuan/p/8884465.html
Copyright © 2011-2022 走看看