前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx是如何与php-fpm进行结合通信的【nginx】

nginx是如何与php-fpm进行结合通信的【nginx】

作者头像
sinnoo
发布2020-11-13 14:21:39
6560
发布2020-11-13 14:21:39
举报
文章被收录于专栏:技术人生

一.首先你的nginx服务和php服务已经安装并启动

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

PHP-FPM是一个实现了Fastcgi的程序,被PHP官方收了。

备注:

php-fpm的管理对象是php-cgi。但不能说php-fpm是fastcgi进程的管理器,因为前面说了fastcgi是个协议。

修改php.ini之后,php-cgi进程的确是没办法平滑重启的。php-fpm对此的处理机制是新的worker用新的配置,已经存在的worker处理完手上的活就可以歇着了,通过这种机制来平滑过度。

如果涉及php安装和nginx安装,请参考的另外两篇文章

centos系统下php7.3安装

centos系统下安装nginx

二.配置nginx.conf文件

1.找到nginx安装目录下的conf目录下nginx.conf文件

2.文件的顶部相关信息配置

worker_processes默认情况下为1,一般情况下不用修改,但考虑到实际情况,可以修改这个数值,以提高性能;

官方的建议是修改成CPU的内核数,这里引用一段翻译过的文章:

worker_processes指明了nginx要开启的进程数

代码语言:javascript
复制
user  www www;
worker_processes  4;  
error_log  /var/log/nginx/error.log  warn;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}

3.http下的基本配置

log_format main (注意这个main是后面配置访问日志路径是需要用到的,这里说明了使用这个格式)

upstream web 分配方式,指向php-fpm.sock的文件位置,我这里叫www.sock

代码语言:javascript
复制
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
        
    sendfile        on; 
    keepalive_timeout  65; 

    upstream web {
        server   unix:/run/php-fpm/www.sock weight=100 max_fails=10 fail_timeout=30;
    } 

4.server对象里面的配置

fastcgi_pass web 这里的web就是http下的upstream方式

access_log /var/log/buxingjie/access.log main 这里的main也是在http那里定义了

root /var/www/www.buxingjie.com/public/ 网站根路径 ,里面包含index.php文件,你也可以写个测试的文件

代码语言:javascript
复制
        listen       80; 
        server_name  39.47.108.154;
        root /var/www/www.buxingjie.com/public/;
        index index.php index.html index.htm;

        access_log  /var/log/buxingjie/access.log  main;
        error_log   /var/log/buxingjie/error.log;
            
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   

        location / { 
            fastcgi_pass   web;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
            rewrite ^(.*)$ /index.php$1 break;
        }

5.www.sock文件如何寻找

ps -ef | grep 'php-fpm' (查看服务)

vim /etc/php-fpm.conf (master主进程里面会有这个路径的提示,打开后找到这行include=/etc/php-fpm.d/*.conf)

cd /etc/php-fpm.d/ (一般会有个www.conf的文件)

vim www.conf (找到listen,这里的listen = /run/php-fpm/www.sock ,就是php监听的文件,把这个路径配置在nginx那里)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档