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

原创
2020/04/25 17:30
阅读数 164

一.首先你的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要开启的进程数


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

    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文件,你也可以写个测试的文件

        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那里)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部