使用 socket 管道套接字进行 PHP 的通信

闲来无事,研究了一下别人的 PHP,发现很多人的 php-fpm 弃用了端口模式,于是我也改造了一下。


PHP 的配置

修改 php-fpm 配置,将原来的端口监听改为 socket 方式。注意需要指定监听使用的用户和对应权限

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

修改好后重启 php-fpm 服务即可

service php-fpm restart

Nginx 的配置

修改站点模板,将 fastcgi_pass 127.0.0.1:9000 注释掉,并添加 fastcgi_pass unix:/var/run/php-fpm.sock 对应 php-fpm 的 socket 文件配置。注意此文件权限必须为 nginx 可访问的权限。例配如下所示

location ~ \.php$ {
    root /website;
    # fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
 }

配置好后重启 Nginx 即可。

systemctl restart nginx.service

其他配置

第一个当然是配置一下 sock 文件的权限,当然,如果你选择重启,会删除重建,此时就不用管权限了

 chown nginx:nginx /var/run/php-fpm.sock

最后顺便贴一份别人在 nginx 配置中针对 php 的优化

 # 添加 fastcgi 关于 50*错误的快速转发
 fastcgi_intercept_errors on;
 
 fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 fastcgi_buffer_size 64k;
 fastcgi_buffers 4 64k;
 fastcgi_busy_buffers_size 128k;
 fastcgi_temp_file_write_size 128k;
点赞