zoukankan      html  css  js  c++  java
  • LNMP一键安装包配置YII2.0

    备注:php我用的版本是7.1.4的,最新的版本,之前用5.6版本的时候没有出现过这个问题

    使用lnmp一键安装包搭建lnmp环境后,使用yii2.0框架测试时出现502报错,看到这个问题,

    我立刻想到是php-fpm没有起来,但是我用 ps -ef | grep php-fpm 截取 php-fpm 的进程,发现是有的

    按照YII2.0官网的Nginx 配置如下

     1 server {
     2     charset utf-8;
     3     client_max_body_size 128M;
     4 
     5     listen 80; ## listen for ipv4
     6     #listen [::]:80 default_server ipv6only=on; ## listen for ipv6
     7 
     8     server_name mysite.local;
     9     root        /path/to/basic/web;
    10     index       index.php;
    11 
    12     access_log  /path/to/basic/log/access.log;
    13     error_log   /path/to/basic/log/error.log;
    14 
    15     location / {
    16         # Redirect everything that isn't a real file to index.php
    17         try_files $uri $uri/ /index.php$is_args$args;
    18     }
    19 
    20     # uncomment to avoid processing of calls to non-existing static files by Yii
    21     #location ~ .(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    22     #    try_files $uri =404;
    23     #}
    24     #error_page 404 /404.html;
    25 
    26     location ~ .php$ {
    27         include fastcgi_params;
    28         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    29         fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
    30 #fastcgi_pass unix:/tmp/php-cgi.sock;
    31      try_files $uri =404;
    32 }
    33
    34 location ~* /. { 35 deny all; 36 } 37 }

    其实问题就出现在  fastcgi_pass 127.0.0.1:9000; 

    备注:php我用的版本是7.1.4的,最新的版本,之前用5.6版本的时候没有出现过这个问题

    思路:发现php-fpm的listen是unix sock方式运行的,问题可能出在php-fpm上。

    1、打开  /user/local/php/etc/php-fpm.conf 其中配置如下

     1 [global]
     2 pid = /usr/local/php/var/run/php-fpm.pid
     3 error_log = /usr/local/php/var/log/php-fpm.log
     4 log_level = notice
     5 
     6 [www]
     7 listen = /tmp/php-cgi.sock
     8 listen.backlog = -1
     9 listen.allowed_clients = 127.0.0.1
    10 listen.owner = www
    11 listen.group = www
    12 listen.mode = 0666
    13 user = www
    14 group = www
    15 pm = dynamic
    16 pm.max_children = 20
    17 pm.start_servers = 10
    18 pm.min_spare_servers = 10
    19 pm.max_spare_servers = 20
    20 request_terminate_timeout = 100
    21 request_slowlog_timeout = 0
    22 slowlog = var/log/slow.log
    
    

    2、我在网上也查看了下,说是其中 
    fastcgi_pass为配置nginx与php-fpm的交互路径,一般有两种方式 
    sock方式:fastcgi_pass unix:/tmp/php-cgi.sock; 
    http方式:fastcgi_pass 127.0.0.1:9000; 
    任选其中一种即可,

    但必须和php-fpm的配置一致。 

    但必须和php-fpm的配置一致。

    但必须和php-fpm的配置一致。
    后来我就在nginx的配置文件中加上一下代码

    location ~ .php$ {
             include fastcgi_params;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_pass unix:/tmp/php-cgi.sock;
         fastcgi_index index.php; try_files
    $uri =404; 32 }

    3、同时修改php-fpm的配置文件php-fpm.conf,将listen = 127.0.0.1:9000改为

    listen = /tmp/php-cgi.sock
    #这个是设置 /tmp/php-cgi.sock 权限用的
    listen.owner = www
    listen.group = www
    listen.mode = 0660

    再次重启ngix和php-fpm,问题解决 
    这里写图片描述

    总结: 
    1、其实这个问题总体就是nginx与php-fpm的交互问题,看我们选择是sock方式还是http方式,但是不管选择哪一种,我们都需要统一 
    2、我在网上看到有人说将max_children 进程改大,其实这种情况我之前遇到过,它适用于本来php运行正常,突然出现502的问题,这个问题是php-fpm队列满了,出现连接拒绝的错误。
    3、还有人说将php-fpm配置文件里有backlog,backlog是linux服务器在socket处理连接数的定义,phpfpm默认为-1,将-1改为4096,重启php-fpm问题。 
    4、其实我们不管选择哪一种,主要是针对自己的问题,先要看报错,然后再对症下药,不要这一种试试那一种试试。

  • 相关阅读:
    NIO通道的学习笔记
    Struts学习笔记(启动过程)
    Struts2学习笔记(ResultType)
    11
    编写类String的构造函数、析构函数和赋值函数(转载)
    new与malloc的区别
    不用判断语句,求两个数中大的那个
    delete p和delete[] p的区别(转)
    (转)虚函数和纯虚函数区别
    不借助第三个变量交换两个整数的值
  • 原文地址:https://www.cnblogs.com/iceman-/p/8558250.html
Copyright © 2011-2022 走看看