问题描述

在尝试用wsl替代homestead进行php开发中,遇到一个坑:安装完成lnmp,部署好应用后,访问报错:Nginx 502 Bad Gateway

问题分析

1.查看nginx错误日志
一般错误日志目录为/var/log/nginx/error.log

sudo cat /var/log/nginx/error.log

内容如下:

2019/10/08 17:37:35 [error] 25958#25958: *67 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1:8080"
2019/10/08 17:40:55 [crit] 25989#25989: *70 connect() to unix:/run/php/php7.2-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.2-fpm.sock:", host: "127.0.0.1:8080"

2.查看nginx对应的配置如下:

location ~ \.php$ {
        root           /mnt/c/www/demo/public;
        fastcgi_pass   unix:/run/php/php7.2-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

问题可能是php-fpm的问题

解决过程

1.可能是php-fpm没有运行 ,重新运行下

service php7.2-fpm start

查看运行状态:

service php7.2-fpm status

2.可能是php-fpm队列满了,修改下`
配置文件路径:/etc/php/7.2/fpm/pool.d/www.conf

pm.max_children = 50 #可以大点哈

修改后,记得重启php-fpm哦。

service php7.2-fpm reload

3.可能是nginx配置fastcgi_passphp-fpmFastCGI求情接口不一致:
一般php-fpm的配置文件www.conf里的listen的默认配置是127.0.0.1:9000,
但是也可能是listen = /run/php/php7.2-fpm.sock(Unix套接字)
需要将listen的地址配置成和nginx的配置文件一致,同时保证这个路径已经存在
然后,重启php-fpmnginx即可

Last modification:October 8th, 2019 at 10:29 pm