Nginx fastcgi模式 配置 php

2024-03-24 18:48
文章标签 配置 模式 php nginx fastcgi

本文主要是介绍Nginx fastcgi模式 配置 php,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、编译安装nginx

nginx就不用说了,这几年很火。要是你不知道它,那就先请百度一下nginx

本文介绍怎么进行编译安装nginx以及与php的结合方式。目前nginx已经到了1.1.7版本了。本文还用的是1.0.8版本。

wgethttp://nginx.org/download/nginx-1.0.8.tar.gz

tar-zxvf nginx-1.0.8.tar.gz

cdnginx-1.0.8

./configure–prefix=/usr/local/nginx

make

makeinstall


这里面可能大家有个疑问,在很多的地方编译安装的时候都会带上–with --enable或者—without类似的参数的。这个我刚开始也没多想,就这样子编译安装了,因为我就弄个测试服务器,可以rewrite就行。以至于在配rewrite的时候来没配好,就怀疑是否rewrite的模块有没有加载上去的。其实nginx默认加载了很多模块。执行./configure–help 就会看到一些加载的模块与没有加载的模块(默认情况)。



2nginx配置

nginx的配置文件主要部分就如下,这里主要是配置fastcgi模式运行php。当然php肯定得有php-cgi或者php5-cgi

server{

listen 83;#监听端口

server_name localhost;#域名


#charsetkoi8-r;#字符编码


#access_log logs/host.access.log main;



location/ {


root /opt/nsfocus/web/www/; #文档目录

index index.html index.htm cavy_filter.php; #主文件


if(!-f $request_filename){


rewrite^/(.+)$ /cavy_filter.php?$1& last; #重写 zendframeworknginx重写规则,网上找了一个apache规则转换成nginx规则的网址,贴出来,貌似不怎么管用。

http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

}


}


location~ .*\.(php|php5)?$ { #配置php

root/opt/nsfocus/web/www/; #php 文件目录

fastcgi_pass 127.0.0.1:9000; #fastcgi 通信

fastcgi_indexindex.php; #fastcgi 主文件


#这里指向conf目录下的

includefastcgi.conf; #fastcgi 模块相关的配置,不需要改动

}

#error_page 404 /404.html;


#redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html; #定义错误页面

location= /50x.html {

root html;

}


当负载过高,就会出现Thepage you are looking for is temporarily unavailable.

Pleasetry again later. 这个页面就是50x.html。在此php已经配置好了。但要运行让nginxphp,还有些步骤。


3nginx运行php

Nginxphp 结合有三种模式

第一是用php自带的fastcgi管理器php-cgi,此模式很容易崩溃,而且耗内存高。

第二种是结合lighttpdfastcgi管理器spawn-cgi,此比较稳定,且耗内存比较少。

第三种是结合phpfastcgi管理器php-fmp。网上说比spawn-cgi要优越。


(1)php-cgi

第一种模式是用php自带的fastcgi管理器,具体运行是

执行nginx进程,然后执行 php-cgi-b 127.0.0.1:9000

nginx就能执行了。但这貌似有个很大的二个问题

1php-cgi进程经常崩溃,即使没有负载的情况下也这样。

2、内存的消耗比较大,要大于同等条件下的apachelighttpd

笔者暂时还没弄清楚这两个问题的原因,有知道的教教我。


(2)spanw-fcgi

spanw-fcgilighttpd的一个组件,安装lighttpd就会带有

启动nginx进程,然后启动spawn-fcgi。执行下面命令启动spawn-fcgi

/usr/local/bin/spawn-fcgi-a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cg


相关参数说明

-f<fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置-a<addr> 绑定到地址addr-p<port> 绑定到端口port-s<path> 绑定到unixsocket的路径path-C<childs> 指定产生的FastCGI的进程数,默认为5(仅用于PHP-P<path> 指定产生的进程的PID文件路径-u-gFastCGI使用什么身份(-u用户 -g用户组)运行,Ubuntu下可以使用www-data,其他的根据情据情况配置,如nobodyapache


(3)php-fpm

fpm(FastCGIProcess Manager)fastcgi进程管理器。Php-fpm需要在安装php的时候安装进去。

Php5.3.3或者更高的版本已经包含在php源码里面,直接进行安装就可以。

PHPCore (PHP 5.3.x < 5.3.3)版本

cdphp-5.3.x

svnco http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm

./buildconf--force

./configure--enable-fpm ...your other configure options, etc...

make&& make install


PHP5.2.x 或者更早的php是以补丁的形式进行的

wgethttp://php-fpm.org/downloads/php-5.2.8-fpm-0.5.10.diff.gz(我的php5.2.8

tar-xzvf php-5.2.8.tar.gz (解压包php-5.2.8,将生成目录php-5.2.8)

gunzipphp-5.2.8-fpm-0.5.10.diff.gz (解压包php-5.2.8-fpm-0.5.10.diff)

patch-d php-5.2.8 -p1 < php-5.2.8-fpm-0.5.10.diff(php-5.2.8的源码打上fpm补丁)

./configure--enable-fpm …


安装完毕后,启动php-fpm,进入php安装目录php/sbin/ ./php-fpm start

或许会出现

[ERROR]fpm_unix_conf_wp(), line 124: please specify user and group otherthan root 的错误

大体的意思就是不能用root权限运行php-fpm

进入 php/etc目录,修改php-fpm.conf,找到

<!--<value name="user">nobody</value> -->

<!-- <value name="group">nobody</value> -->


改为

<valuename="user">nobody</value>

<valuename="group">nobody</value>

运行就ok了。


4、总结

目前的主要趋势都是nginx+php ,但nginxphp到底用什么来管理fastcgi呢?php-cgi从性能跟稳定性来说,是没必要考虑的。那其他的两者到底用谁呢?笔者对spawn-fcgiphp-fpm进行过性能测试。两者的性能大体上差不多,spawn-fcgi稍微好点点。

但从技术的支持来说spawn-fcgi貌似有端时间没更新了,且它属于lighttpd的一部分,虽然已经从lighttpd独立出来了,但技术文档还是比较少。这方面,php-fpm已经在php5.3.3版本写进源码,已经成为官方的一份子。从对php-cgi的进行分析来看,笔者同时启动的6php-cgi进程,php-fpm对内存的使用比较均匀,没个大概在0.6%左右。而spawn-fcgi就比较乱,有比较高的,也有很少的。故笔者建议用php-fpm

这篇关于Nginx fastcgi模式 配置 php的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/842457

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指