• LNMP WEB架构构建


    LNMP WEB架构处理请求过程

    1.Nginx为一款高性能Web服务器本身是不能处理PHP的,当接收到客户端浏览器发送HTTP Request请求时,Nginx服务器响应并处理web请求,静态资源CSS、图片、视频、TXT等静态文件请求,Nginx服务器可以直接处理并回应。

    2.Nginx并不能直接处理PHP页面PHP动态页面请求Nginx不能直接处理,Nginx服务器会将PHP网页脚本通过接口传输协议(网关协议)PHP-FCGI(Fast-CGI)传输给PHP-FPM(PHP进程管理程序)

    3.PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器进程解析PHP脚本信息,处理PHP页面。PHP解析器进程可以启动多个,可以实现多进行并发执行

    4.PHP解释器将解析后的脚本返回到PHP-FPM,PHP-FPM再通过Fast-CGI的形式将脚本信息传送给Nginx,Nginx服务器再 通过Http Response的形式传送给浏览器,浏览器再进行解析与渲染然后进行呈现。

    CGI、FAST-CGI、PHP-CGI、PHP-FPM概念总结:

    • CGI:Common gateway interface 通用网关接口;   
    • FastCGI:Fast common gateway interface 快速通用网关接口;   
    • PHP-FPM:PHP-Fast CGI Process Manager CGI,是FastCGII协议的实现并且带进程管理器;

    PHP-FPM是PHPCGI进程管理器,可以有效控制内存和进程、可以平滑重载PHP配置。    PHP-CGI(PHP解析器进程)是解析PHP代码的程序,属于PHP程序解释器,只负责解析请求,不负责进程管理。

    整合PHP和Nginx,配置文件并测试phpinfo();

    1.修改/usr/local/nginx/conf/nginx.conf为以下内容[root@www /]# cat /usr/local/nginx/conf/nginx.conf|grep -E -v "#|^$"worker_processes 1;

    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
            location ~ .php$ {
                root           /var/www/html;  #指定网站根目录
                fastcgi_pass   127.0.0.1:9000;  #指定fastcgi转发端口.Nginx通过此端口与php进行交互
                fastcgi_index  index.php;  #指定默认索引页(首页)
                fastcgi_param  SCRIPT_FILENAME /var/www/html$fastcgi_script_name;  
            #脚本文件请求的路径,这个配置的意思是在浏览器中访问的.php文件,实际读取的是
    $document_root(网站根目录:/var/www/html)下的.php文件
            #也就是说当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一配置项时,nginx不会去网站根目录下访问.php文件,所以返回空白

    include fastcgi_params;  #调用fastcgi 的变量文件。可以nginx中配置文件里面看到(/usr/local/nginx/conf/),支持上一条参数 } } }

    2.保存后重新载入nginx.conf

    [root@localhost /]# /usr/local/nginx/sbin/./nginx -s reload

    3.在/var/www/html目录下写入index.php

    [root@localhost /]# echo "<?php phpindo(); ?>" > /var/www/html/index.php

    4.通过浏览器访问ip/index.php

  • 相关阅读:
    iOS tableHeaderView有默认高度?
    flutter 自定义tabbar 给tabbar添加背景功能
    jar各个版本号的意义
    【转载】springboot + swagger
    分表需要解决的问题 & 基于MyBatis 的轻量分表落地方案
    解决Spring Boot中,通过filter打印post请求的 request body 问题
    SpringBoot自动配置xxxAutoConfiguration 的使用
    Shell
    Spring踩坑记录
    Spring中可复用工具类&&特性记录&&技巧
  • 原文地址:https://www.cnblogs.com/quail2333/p/11182427.html
Copyright © 2020-2023  润新知