zoukankan      html  css  js  c++  java
  • nginx调用php-fpm出错解决方法和nginx配置详解

    装完了nginx和php-5.5,配置好了nginx调用php后,就开始启动php-fpm。

    使用下面的命令


    复制代码 代码如下:


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


    就可以启动了。

    在nginx的目录中创建个php的检测脚本index.php

    结果在打开

    悲剧的发现居然无法打开 。查看日志文件,看了下报错原因


    复制代码 代码如下:


    2013/07/01 22:34:26 [error] 3214#0: *64 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.168.19, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.168.140"


    查看下端口 。看到php-fpm的9000端口已经打开了,说明php-fpm是没什么问题的,问题出在了nginx上了。可能是我的配置文件有问题。

    找到nginx加载php配置的那块。另外参考了下网上nginx的配置文件。

    在第69行有一个调用脚本路径


    复制代码 代码如下:


    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;


    我把路径改下,改成下面的就可以了。

    复制代码 代码如下:


    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


    可以出现php的版本信息了。

    大家还可以参考下面的配置方法

    php-fpm不用再依赖其它的fastcgi启动器,比如lighttpd的spawn-fcgi。
    php-fpm的使用非常方便,配置都是在php-fpm.ini的文件内
    而启动,重启都可以从php/sbin/php-fpm中进行
    更方便的是修改php.ini后可以直接使用php-fpm reload进行加载 无需杀掉进程就可以完成php.ini的修改加载
    结果显示使用php-fpm可以使php有不小的性能提升
    php-fpm控制的进程.cpu回收的速度比较慢.内存分配的很均匀
    而spawn-cgi控制的进程CPU下降的很快.而内存分配的比较不均匀.
    有很多进程似乎未分配到,而另外一些却占用很高.
    可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降
    而php-fpm合理的分配.导致总体响应的提到以及任务的平均
    使用php-fpm需要在php源码上打补丁,然后重新编译php

    一.下载php-fpm
    wget
    wget
    与php-5.2.9在同一级目录
    gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.9 -p1
    补丁打好以后,编译php的时候增加了下面几个参数:
    –enable-fpm 激活fastcgi模式的fpm支持
    –with-fpm-conf php-fpm的配置文件(默认是PREFIX/etc/php-fpm.conf)
    –with-fpm-log php-fpm的日志文件(默认是PREFIX/logs/php-fpm.log)
    –with-fpm-pid php-fpm的pid文件(默认是PREFIX/logs/php-fpm.pid)
    ./configure --prefix=/EBS/php
    --with-config-file-path=/EBS/php/etc
    --enable-fastcgi
    --enable-fpm
    --OTHERS
    注:--enable-fastcgi 需要在--enable-fpm 的前面,否则,fpm不能编译上。

    二.编译好php后,修改配置文件

    vi /EBS/php/etc/php-fpm.conf
    需要注意下面几处配置
    <value>127.0.0.1:9000</value>
    这个表示php的fastcgi进程监听的ip地址以及端口
    <value>nobody</value>
    <value>nobody</value>
    表示php的fastcgi进程以什么用户以及用户组来运行,默认该行是注释掉的,需要打开
    <value>0</value>
    是否显示php错误信息
    <value>5</value>
    最大的子进程数目
    运行php-fpm:
    php-fpm用一个程序来控制fastcgi进程,这个文件在$PREFIX/sbin/php-fpm
    /usr/local/php/sbin/php-fpm
    该程序有如下参数:
    start 启动php的fastcgi进程
    stop 强制终止php的fastcgi进程
    quit 平滑终止php的fastcgi进程
    restart 重启php的fastcgi进程
    reload 重新加载php的php.ini
    logrotate 重新启用log文件
    也就是说,在修改了php.ini之后,我们可以使用
    /usr/local/php/sbin/php-fpm reload
    这样,就保持了在php的fastcgi进程持续运行的状态下,又重新加载了php.ini。


    复制代码 代码如下:


    user www www;
    worker_processes 10;
    error_log logs/error.log notice;
    pid logs/nginx.pid;
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 51200;
    events
    {
    use epoll;
    worker_connections 51200;
    }
    http
    {
    include mime.types;
    default_type application/octet-stream;
    charset gb2312;
    server_names_hash_bucket_size 128;
    #sendfile on;
    #tcp_nopush on;
    keepalive_timeout 60;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/html application/xml;
    {
    listen 80;
    server_name 192.168.1.2;
    index index.html index.htm index.php;
    root /EBS/www;
    if (-d $request_filename)
    {
    rewrite ^/(.*)([^/])$ $host/$1$2/ permanent;
    }
    location ~ .*.php?$
    {
    include fcgi.conf

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    }
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" $http_x_forwarded_for';
    access_log logs/access.log access;
    }
    }

  • 相关阅读:
    寒假补习记录_4
    寒假补习记录_3
    寒假补习记录_2
    寒假补习记录_1
    公文流转系统编程
    Javaweb编程
    转:在静态方法中访问类的实例成员
    Java字段初始化规律
    原码,反码,补码浅谈
    java第二节课课后
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8334695.html
Copyright © 2011-2022 走看看