个别站点需要单独设置PHP-FPM进程池_LNMP_山海自留地

山海自留地

个别站点需要单独设置PHP-FPM进程池

LNMP
2025-06-13 10:56:48

在 LNMP一键安装包 环境中,PHP-FPM 的进程池配置文件路径与标准安装略有不同。以下是具体位置和配置方法:

一、PHP-FPM 进程池配置文件路径

主配置文件目录
LNMP 的 PHP-FPM 配置位于独立目录中:

/usr/local/php/etc/php-fpm.conf          # 主配置文件
/usr/local/php/etc/php-fpm.d/            # 进程池配置目录

默认进程池文件
默认站点(如 localhost)的池配置文件:

/usr/local/php/etc/php-fpm.d/www.conf    # 默认进程池配置

新增站点池文件
当您通过 LNMP 命令添加站点时,会自动生成独立进程池配置:

lnmp vhost add       # 添加站点命令

生成的配置文件路径示例:

/usr/local/php/etc/php-fpm.d/example.com.conf   # 站点域名命名的配置

二、手动为站点创建独立进程池

若需手动配置(如未使用 lnmp vhost add),步骤如下:

1. 创建进程池配置文件

# 进入进程池配置目录

cd /usr/local/php/etc/php-fpm.d/

# 复制默认配置并修改(以站点 example.com 为例)

cp www.conf example.com.conf
vim example.com.conf

2. 修改关键配置项

ini

[example.com]  ; 池名称(必须唯一);

 修改监听方式(推荐Unix Socket)

listen = /tmp/php-cgi-example.com.sock  ;

 注意路径格式; 设置用户/组(需与Nginx用户一致)

user = www
group = www;

进程管理参数

pm = dynamicpm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8;

安全限制(重要!)

security.limit_extensions = .php
php_admin_value[open_basedir] = /home/wwwroot/example.com:/tmp

? LNMP 默认使用 www 用户(非 www-data),请保持统一。

三、配置 Nginx 匹配进程池

编辑站点 Nginx 配置(位于 /usr/local/nginx/conf/vhost/example.com.conf):

server {
    server_name example.com;
    root /home/wwwroot/example.com;
    location ~ \.php$ {
        # 指向自定义的Socket路径
        fastcgi_pass unix:/tmp/php-cgi-example.com.sock;
        include fastcgi.conf;
    }
   }

四、重启服务生效

# 重启PHP-FPM(LNMP专用命令)
lnmp php-fpm restart
# 或传统方式/etc/init.d/php-fpm restart
# 重启Nginxlnmp nginx restart

五、验证配置是否生效

检查进程池

ps aux | grep php-fpm

输出应包含池名称:

www       1234  0.0  1.2 123456 7890 ?  S    Jun13  0:00 php-fpm: pool example.com

测试Socket文件

ls -l /tmp/php-cgi-*.sock

应显示新创建的Socket文件,权限为 srw-rw----。

六、LNMP 环境注意事项

默认监听方式
LNMP 默认使用 Unix Socket 而非 TCP 端口,路径格式为 /tmp/php-cgi.sock(默认池)或自定义路径。

用户权限
必须保持统一:

PHP-FPM 进程池用户:www

Nginx 用户:www(在 nginx.conf 中确认)

网站文件所有者:www(建议)

日志位置
PHP-FPM 错误日志:

/usr/local/php/var/log/php-fpm.log

站点错误日志:

/home/wwwlogs/example.com_error.log

常见问题解决

问题:502 Bad Gateway

检查 Nginx 的 fastcgi_pass 路径是否与 FPM 配置的 listen 完全一致

确认 /tmp/ 目录权限:chmod 1777 /tmp

查看错误日志:tail -f /home/wwwlogs/example.com_error.log

问题:进程池未启动

检查配置语法:/usr/local/php/sbin/php-fpm -t

确保没有重复的池名称([example.com] 必须唯一)

通过以上步骤,您可以在 LNMP 环境中为每个站点配置独立的 PHP-FPM 进程池,实现资源隔离和安全控制。