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、其实我们不管选择哪一种,主要是针对自己的问题,先要看报错,然后再对症下药,不要这一种试试那一种试试。

  • 相关阅读:
    TCP源码—连接建立
    TCP系列02—连接管理—1、三次握手与四次挥手
    TCP系列01—概述及协议头格式
    ubuntu软件管理apt与dpkg
    318. Maximum Product of Word Lengths
    317. Shortest Distance from All Buildings
    316. Remove Duplicate Letters
    315. Count of Smaller Numbers After Self
    314. Binary Tree Vertical Order Traversal
    313. Super Ugly Number
  • 原文地址:https://www.cnblogs.com/iceman-/p/8558250.html
Copyright © 2011-2022 走看看