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

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

1.nginx与PHP的关系

 

首先来看nginxphp的关系,

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

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

 

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

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

 

2.安装带有FPM功能的PHP

 

linux

 

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

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

–enable-fpm

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

安装过程没有变化!

windows

 

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

php-cgi.exe 完成.

 

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

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

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

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

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

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

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/目录中:

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

编辑 etc/php-fpm.conf

几个必要的配置

 

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

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

2.运行用户

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

3.所监听的IP和端口

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

4.主进程号

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

 

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

 

开启: sbin/php-fpm

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

 

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

停止: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`

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

 

 

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

 

nginx的配置文件结构:

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

 

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

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

示例配置如下:

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

 

重新加载nginx

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

建立phpinfo.php测试文件

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

 

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

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

 

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

 

拷贝默认配置

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

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

修改必要的配置

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

 

6.重启 php-fpm

 

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

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

 

 

7.虚拟主机的配置

 

虚拟主机

 

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

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

重启nginx

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

 

建立测试项目

 

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

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

原因是Nginx对pathinfo不支持

 

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

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

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

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

nginx.conf:

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

重启nginx sbin/nginx -s reload

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

转载:https://www.cnblogs.com/lovebing/p/6075604.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112492.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 理解和正确使用Java中的断言(assert)

    理解和正确使用Java中的断言(assert)随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)一、语法形式:Java2在1.4中新增了一个关键字:assert。在程序开发过程中使用它创建一个断言(assertion),它的语法形式有如下所示的两种形式:1、assertcondition;这…

    2022年7月25日
    7
  • java 分布式计算框架_java分布式系统框架的分类「建议收藏」

    java 分布式计算框架_java分布式系统框架的分类「建议收藏」鲁班学院java架构师成长路线随着电商行业的崛起,越来越多的人为了省事更习惯网购,今天我们就来熟悉Java分布式系统中的Dubbo,Dubbo就是来解决Java分布式系统中间的子系统之间相互调用相互协作的一个框架。在Dubbo之前就有一个Java分布式系统框架RPC(远程过程调用),多个子系统之间需要实现相互调用必须要借助网络来表达调用的语义和传达调用的数据,RPC采用客户机/服务器模式。请求程序…

    2022年5月31日
    53
  • java工厂模式_java工厂模式

    java工厂模式_java工厂模式java工厂模式分三种:简单工厂模式、工厂方法模式、抽象工厂模式。简单工厂模式(SimpleFactoryPattern)属于类的创新型模式,又叫静态工厂方法模式(StaticFactoryMethodPattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式就是通过一个”全能类”,根据外界传递的信息来决定创建哪个具体类的对象。如下图(懒得…

    2022年7月9日
    28
  • JSONObject使用方法详解

    JSONObject使用方法详解/***项目名称:tools*项目包名:com.songfayuantools.json*创建时间:2017年7月31日上午11:58:51*创建者:Administrator-宋发元*创建地点:*/packagecom.songfayuantools.json;importcom.songfayuantools.entity.UserInfo;im

    2022年7月13日
    12
  • get请求与post提交区别的简易理解

    get请求与post提交区别的简易理解

    2021年7月16日
    64
  • 历史拉链表「建议收藏」

    历史拉链表「建议收藏」使用UDW创建历史拉链表。介绍历史拉链表历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义的。**它记录一个事物从开始到当前状态的所有变化的信息。**拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。也就是说,对于表中的任何数据,不进行真正的删除,只记录操作和有效日期。流程其中,tmp0表有两个分区,表…

    2022年10月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号