LNMP架构原理

要了解LNMP架构原理,首先你得知道LNMP架构是啥?

LNMP = Linux +Nginx + MySQL + PHP

现在有两种主流得架构,一个是今天要讲的 LNMP , 还有一个就是 LAMP。简单说明一下, LAMP = Linux + Apache + MySQL +PHP

先来讲一下 LNMP 大概的一个原理,先有一个整体的感知:

LNMP架构原理_第1张图片

其实上图已经说得挺清楚了,可能会有一些核心概念不太懂,比如什么是FastCGI,什么是wrapper之类的,请听我细细讲来:

FastCGI : 一句话来说的话就是 Http服务器和动态脚本语言实现高速通信的接口。FastCGI 是 C/S结构,可以将http服务器和脚本解析服务器分离开,同时在脚本解析服务器上开启一个或多个解析守护进程。这样可以使http服务器专注于处理静态请求,遇到".php"之类的动态请求直接通过FastCGI 往脚本解析服务器扔,极大的提高了系统的性能。

  • 在这可能有一个概念不太清楚,什么是守护进程?
    守护进程就是一个特殊的进程,这个进程特殊在哪里呢?一般的进程都需要终端去控制,而守护进程却是独立于终端的 ,一般来说系统启动的时候守护进程就启动了,直到系统关机。当然如果认为的强制干预的话,也是能关闭它的。守护进程会按照周期性去执行某个任务或着等待处理将会发生的某个任务。比如httpd、mysqld之类的,就是守护进程。

Nginx + php-fpm:

php-fpm 是动态解析服务器,Nginx 作为 http 服务器。
Nginx 本身来说是不支持解析PHP的,终端对PHP的页面请求将会被 Nginx 交给FastCGI监听的IP端口,由php-fpm处理,最后将处理结果返还给Nginx。这个过程中,Nginx仅仅是作为反向代理服务器,通过反向代理功能,将动态请求交给后端的php-fpm处理,实现对PHP请求的解析。

Nginx不支持对外部程序的调用或解析。所有的外部程序(包括PHP)必须有FastCGI接口来调用。FastCGI在linux中是一个socket(ip socket 或 文件 socket),调用CGI还需要FastCGI的wrapper(可以理解成一个程序,用来启动其他程序),这个wrapper绑定在某个固定的socket上。当Nginx将CGI请求发给socket时,通过FastCGI接口,wrapper就收到请求,然后wrapper会fork(派生)出一个新的线程,用来调用外部程序解释器或脚本来处理请求,并读取返回数据,然后wrapper将返回的数据通过FastCGI接口,通过固定的socket,将数据返回给Nginx,返回给客户端。

Nginx相关配置:
vim nginx.conf

Nginx 接收到请求时,回去配置文件找到对应的server,然后匹配server中所有的location,找到最匹配的,而location中的命令会去启动不同的模块去完成工作,以下是关于php的配置。

可以看到以".php"结尾的文件请求,会交给127.0.0.1:9000处理。而这个地址就是fastCGI监听的端口和地址

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;		
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

php相关配置:

vim php-fpm.conf

可以看到 FastCGI监听的是127.0.0.1:9000
在这里插入图片描述
这得和Nginx所使用的用户一致
在这里插入图片描述
这个要取消注释,pid要有
在这里插入图片描述

你可能感兴趣的:(运维)