• 如何在Nginx下配置PHP程序环境


    1.nginx与PHP的关系

    首先来看nginxphp的关系,

    FastCGI的关系(而不是像apache那样安装成nginx的模块)

     

    FastCGI的意思是, 快速的通用网关接口:CGI Common Gateway Interface, 通用网关接口, 典型的web服务器与处理程序通讯的方式.

    FPM, PHP'提供的用于管理FastCGI进程的功能.

     

    2.安装带有FPM功能的PHP

    linux

    还是之前的PHP源码包, 还是原来的安装步骤.

    仅仅在配置PHP安装时, 增加选项,开启FPM即可:

    --enable-fpm

    安装过程没有变化!

    windows

    可以提供FPM功能, 默认都提供:

    php-cgi.exe 完成.

     

    基本不需要处理. 一点, TSNTS的选择需要注意:

    以模块的方式安装, 通常需要安装TS版本, 线程安全版本.

    FPM的形式安装, 建议安装NTS版本, 非线程安全版本.

    解压, 拷贝即可. 不需要配置与web服务器的模块加载.

    3.管理PHP-FPM

    PHPFPM需要独立运行, 自己的独立的配置文件. 等等.

    默认情况下, FPM监听某个(127.0.0.1:9000)端口, 等待nginx(或者其他的web服务器)将请求转过来.

    由于PHP独立运行了, 再修改PHP的配置, 就不需要重启web服务器(nginx), 重启PHP-FPM即可.

    仅仅去参考 nginxPHP来看: 理解成: NginxPHP的客户端, PHPnginx提供服务(执行PHP程序的服务).

     

    fpm的配置文件

    先拷贝获取fpm的独立配置文件, etc/目录中:

    编辑 etc/php-fpm.conf

    几个必要的配置

    1.守护进程化(后台执行)

    2.运行用户

    3.所监听的IP和端口

    4.主进程号

     

    开启, 关闭, 重载配置操作

    开启: sbin/php-fpm

     

    通过信号的方式, 进行重启, 关闭, 重载配置文件等处理:

    停止:kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

    平滑停止:kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`

    重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

    重新打开日志:kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`

     

     

    4.配置Nginx将PHP请求转发给PHP-FPM

    nginx的配置文件结构:

    http段的server, 就表示一台主机(虚拟主机).

     

    在每台虚拟主机, server段中, 提供对请求脚本的解析工作:

    location指令, 匹配请求的URL脚本. .php结尾的请求, 交给PHP-FPM处理:

    示例配置如下:

     

    重新加载nginx

    建立phpinfo.php测试文件

     

    测试效果, 要保证 nginxPHP-FPM都执行.

     

    5.将php.ini放在合理的目录

    拷贝默认配置

    修改必要的配置

     

    6.重启 php-fpm

     

     

    7.虚拟主机的配置

    虚拟主机

    http中的server就是一个虚拟主机,增加server段, 就是增加虚拟主机:

    重启nginx

    建立测试项目

    还是通过git clone, 配置nginx虚拟主机后出现404Not Found 测试发现动作不能被解析

    原因是Nginx对pathinfo不支持

    pathinfo: URL的一部分, 请求脚本到请求参数间的部分, 称之为pathinfo.

    PHP程序要处理pathinfo, 前提是web服务器支持URLpathinfo部分才可以.

    解决方法:通过额外的解析pathinfo指令可以完成:

    location ~ .php$ 解析段中, 增加分析pathinfo的功能:

    nginx.conf:

    重启nginx sbin/nginx -s reload

    此时pathinfourl的就可以解析.到此Nginx下配置php虚拟主机到此结束。

  • 相关阅读:
    vue.nextTick()方法简单理解
    vue中 hash和history的区别
    Set,Map一些常见的遍历方法以及转化方法
    vue中import和require的用法
    $route和 $router的区别是什么
    vue vmodel的总结
    vue router的钩子函数总结
    了解promise和async await的区别
    ZOJ 1642 Match for Bonus
    UVA 10003 Cutting Sticks
  • 原文地址:https://www.cnblogs.com/lovebing/p/6075604.html
Copyright © 2020-2023  润新知