多虚拟主机环境下PHP-FPM仅生成单个Socket文件的问题求助
多虚拟主机环境下PHP-FPM仅生成单个Socket文件的问题求助
各位大佬好,我最近在配置Nginx+PHP8.1-FPM的多虚拟主机环境时遇到了一个棘手的问题,想请大家帮忙排查下:
我给每个虚拟主机都配置了独立的域名、系统用户、网站根目录,同时为每个站点单独创建了PHP-FPM池配置文件。举个例子,其中一个站点的FPM池配置(/etc/php/8.1/fpm/pool.d/domain.com.conf)内容如下:
user = domainuser group = domainuser listen = /var/run/php/php8.1-domain.com-fpm.sock
对应的Nginx虚拟主机配置(/etc/nginx/sites-available/domain.com.vhost)是这样的:
server { listen 80; listen [::]:80; root /var/www/domain.com; index index.php index.html index.htm; server_name domain.com www.domain.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php8.1-domain.com-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } access_log /var/log/nginx/domain.com.access.log; error_log /var/log/nginx/domain.com.error.log; }
所有站点的配置逻辑都是一致的,只是替换了对应的域名、用户名、Socket路径和根目录。而且我已经把每个站点的系统用户都添加到了www-data组里。
现在的问题是:当我执行ls -l /var/run/php查看Socket文件时,发现只有一个站点的Socket文件存在,其他5个站点的Socket完全缺失,命令输出如下:
srw-rw---- 1 www-data www-data 0 Oct 29 12:48 php8.1-domain.com-fpm.sock
访问那些缺失Socket的站点时,Nginx会抛出如下错误:
2023/10/29 12:56:50 [crit] 627#627: *3 connect() to unix:/var/run/php/php8.1-domain.com-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 20.163.15.11, server: domain.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php8.1-domain.com-fpm.sock:", host: "domain.com"
我已经重启过PHP-FPM和Nginx好几次了,但问题依然存在。有没有大佬能帮我分析下可能的原因,或者给出排查方向?
备注:内容来源于stack exchange,提问作者Dev Guy
相关产品推荐
相关产品推荐

