安装配置php-fpm来搭建Nginx+PHP的生产环境
2017-10-26 18:44
483 查看
安装配置php-fpm来搭建Nginx+PHP的生产环境
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
本文以php-fpm为例介绍如何使nginx支持PHP
一、编译安装php-fpm
什么是PHP-FPM
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的,具体选项含义可以查看这里。
安装前准备
centos下执行
?
?
以上就完成了php-fpm的安装。
下面是对php-fpm运行用户进行设置
?
?
?
然后按照http://www.nginx.cn/install 安装nginx
三、修改nginx配置文件以支持php-fpm
nginx安装完成后,修改nginx配置文件为,nginx.conf
其中server段增加如下配置,注意标红内容配置,否则会出现No input file specified.错误
?
创建php文件
在/usr/local/nginx/html下创建index.php文件,输入如下内容
?
启动php-fpm和nginx
?
六、浏览器访问
访问http://你的服务器ip/index.php,皆可以见到php信息了。
七、错误解决
在使用Nginx时,经常会碰到502 Bad Gateway和504 Gateway Time-out错误,下面以Nginx+PHP-FPM来分析下这两种常见错误的原因和解决方案。
1.502 Bad Gateway错误
在php.ini和php-fpm.conf中分别有这样两个配置项:max_execution_time和request_terminate_timeout。
这两项都是用来配置一个PHP脚本的最大执行时间的。当超过这个时间时,PHP-FPM不只会终止脚本的执行,
还会终止执行脚本的Worker进程。所以Nginx会发现与自己通信的连接断掉了,就会返回给客户端502错误。
以PHP-FPM的request_terminate_timeout=30秒时为例,报502 Bad Gateway错误的具体信息如下:
1)Nginx错误访问日志:
?
?
所以如果不想改全局的php.ini,那只改PHP-FPM的配置就可以了。
此外要注意的是Nginx的upstream模块中的max_fail和fail_timeout两项。有时Nginx与上游服务器(如Tomcat、FastCGI)的通信只是偶然断掉了,
但max_fail如果设置的比较小的话,那么在接下来的fail_timeout时间内,Nginx都会认为上游服务器挂掉了,都会返回502错误。
所以可以将max_fail调大一些,将fail_timeout调小一些。
2.504 Gateway Time-out错误
PHP-FPM设置的脚本最大执行时间已经够长了,但执行耗时PHP脚本时,发现Nginx报错从502变为504了。这是为什么呢?
因为我们修改的只是PHP的配置,Nginx中也有关于与上游服务器通信超时时间的配置factcgi_connect/read/send_timeout。
以Nginx超时时间为90秒,PHP-FPM超时时间为300秒为例,报504 Gateway Timeout错误时的Nginx错误访问日志如下:
?
而且这三项配置可以配置在http、server级别,也可以配置在location级别。担心影响其他应用的话,就配置在自己应用的location中吧。
要注意的是factcgi_connect/read/send_timeout是对FastCGI生效的,而proxy_connect/read/send_timeout是对proxy_pass生效的。
配置举例:
?
相关文章推荐
- 安装配置php-fpm来搭建Nginx+PHP的生产环境
- 安装配置php-fpm来搭建Nginx+PHP的生产环境
- nginx+PHP服务器环境安装与配置学习(一) - windows系统基础环境搭建
- linux环境下nginx+php-fpm+mysql搭建eolinker的nginx配置
- HP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- LAMP攻略: LAMP环境搭建,Linux下Apache,MySQL,PHP安装与配置
- 用lnmp一键安装包搭建nginx+mysql+php生产环境实战
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- PHP环境搭建:Windows 7下安装配置PHP(5.3.2
- 手把手教你在centos下编译安装配置高性能web服务器环境nginx+php(fast-cg...
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程以及注意事项
- win环境20分钟搭建php+sql服务器Apache+php+mysql在windows下的安装与配置图解
- 手把手教你在centos下编译安装配置高性能web服务器环境nginx+php(fast-cgi)+mysql
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- cacti安装(1):nginx+php-fpm环境
- centos环境下编译安装nginx+php搭建