• 使用 FastCGI 模式运行 PHP7 教程


    众所周知,常用的跟php搭配的web server 有两个,apache 和nginx,编译完server之后需要配置下才可以正常解析php文件。下面我们来看下两种服务器是如何解析php文件。

    Nginx

    一、主流的nginx+php的运行原理如下:

    1、nginx的worker进程直接管理每一个请求到nginx的网络请求。

    2、对于php而言,由于在整个网络请求的过程中php是一个cgi程序的角色,所以采用名为php-fpm的进程管理程序来对这些被请求的php程序进行管理。php-fpm程序也如同nginx一样,需要监听端口,并且有master和worker进程。worker进程直接管理每一个php进程。

    3、关于fastcgi:fastcgi是一种进程管理器,管理cgi进程。市面上有多种实现了fastcgi功能的进程管理器,php-fpm就是其中的一种。再提一点,php-fpm作为一种fast-cgi进程管理服务,会监听端口,一般默认监听9000端口,并且是监听本机,也就是只接收来自本机的端口请求,所以我们通常输入命令netstat -nlpt|grep php-fpm 会得到:

    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1078/php-fpmhttps://www.weixiu3721.com

    4、关于fastcgi的配置文件,目前fastcgi的配置文件一般放在nginx.conf同级目录下,配置文件形式,一般有两种:fastcgi.conf 和 fastcgi_params。不同的nginx版本会有不同的配置文件,这两个配置文件有一个非常重要的区别:fastcgi_parames文件中缺少下列配置:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    我们可以打开fastcgi_parames文件加上上述行,也可以在要使用配置的地方动态添加。使得该配置生效。

    5、当需要处理php请求时,nginx的worker进程会将请求移交给php-fpm的worker进程进行处理,也就是最开头所说的nginx调用了php,其实严格得讲是nginx间接调用php。

    二、nginx 配置

    来看一个host的简单配置:

    server {

    listen 80;

    server_name example.com;

    location ~ .php?.*$ {

    root /home/mark/www;https://www.weixiu3721.com

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include fastcgi_params;

    }

    }

    1、第一个大括号 server{ }不必多说,代表一个独立的server

    2、listen 80代表该server监听8011端口

    3、location ~ .php?.*${ }代表一个能匹配对应uri的location,用于匹配一类uri,并对所匹配的uri请求做自定义的逻辑、配置。这里的location,匹配了所有带.php的uri请到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理。

    6、fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 动态添加了一行fastcgi配置,配置内容为SCRIPT_FILENAME,告知管理进程,cgi脚本名称。由于我的nginx中只有fastcgi_params文件,没有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具体值,就必须要动态的添加这行配置。

    7、include fastcgi_params 引入fastcgi配置文件

    以上就是最简洁版的nginx启动php脚本的最简配置,当重启nginx之后,在/home/mark/www目录下创建一个hello.php文件,输入<?php echo "hello world"; ?>保存,然后在浏览器中访问localhost/hello.php就可以在网页上显示hello world了。

  • 相关阅读:
    windows7修改双系统启动项名称、先后顺序、等待时间
    windows初始化后做了哪些事情
    我的wordpress插件总结
    分析MySQL慢日志(转)
    在Java中使用Memcached(转)
    memcached应用场景(转)
    memcached简介(转)
    Linux下memcache的安装和启动(转)
    列式数据库
    Android测试(一):在Android中测试App
  • 原文地址:https://www.cnblogs.com/zqw111/p/12930824.html
Copyright © 2020-2023  润新知