热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nginxphp5.2,nginx22

本文目录一览:1、Linux系统中设置多版本PHP共存配合Nginx服务器使用

本文目录一览:


  • 1、Linux系统中设置多版本PHP共存配合Nginx服务器使用


  • 2、nginx php 和apache php 哪个性能更高


  • 3、nginx和php分别用那个版本最稳定 ?


  • 4、如何编译windows nginx php

Linux系统中设置多版本PHP共存配合Nginx服务器使用

应用环境

LNMP的环境,当前PHP版本5.3.8,遇到一个应用需求只支持PHP

5.2.x,又希望保持现有应用还是用PHP

5.3.8。也就是说需要两个版本的PHP同时存在,供nginx根据需要调用不同版本。

思路

Nginx是通过PHP-FastCGI与PHP交互的。而PHP-FastCGI运行后会通过文件、或本地端口两种方式进行监听,在Nginx中配置相应的FastCGI监听端口或文件即实现Nginx请求对PHP的解释。

既然PHP-FastCGI是监听端口和文件的,那就可以让不同版本的PHP-FastCGI同时运行,监听不同的端口或文件,Nginx中根据需求配置调用不同的PHP-FastCGI端口或文件,即可实现不同版本PHP共存了。

配置记录

下面记录简单的配置流程,基于已经安装了lnmp的debian环境。当前版本的PHP是5.3.8,位于/usr/local/php。

1.下载PHP-5.2.14及相关的FPM、autoconf组件:

mkdir

~/php5.2

cd

~/php5.2

wget

-c

wget

-c

2.解压PHP-5.2.14,并打上PHP-FPM的补丁:

tar

zxvf

php-5.2.14.tar.gz

gzip

-cd

php-5.2.14-fpm-0.5.14.diff.gz

|

patch

-d

php-5.2.14

-p1

3.如果你已经通过lnmp安装,应该已经安装好了autoconf,如果没有,请自行下载并编译autoconf-2.13,然后设置autoconf环境变量:

export

PHP_AUTOCOnF=/usr/local/autoconf-2.13/bin/autoconf¬

export

PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader

3.编译安装PHP-5.2.14在新的路径(/usr/local/php-5.2.14)下,注意–prefix、–with-config-file-path的路径,并且打开fastcgi和fpm选项:

cd

php-5.2.14/

./buildconf

--force

./configure

--prefix=/usr/local/php-5.2.14

--with-config-file-path=/usr/local/php-5.2.14/etc

--with-mysql=/usr/local/mysql

--with-mysqli=/usr/local/mysql/bin/mysql_config

--enable-fastcgi

--enable-fpm

make

ZEND_EXTRA_LIBS='-liconv'

make

install

4.设置/usr/local/php-5.2.14/etc/php-fpm.conf,监听端口:

value

name="listen_address"127.0.0.1:9001/value

或者监听文件:

value

name="listen_address"/path/to/unix/socket/value

其他参数根据服务器环境和需求自行定制。

5.启动php-fpm,以后可以通过php-fpm进行管理:

/usr/local/php-5.2.14/sbin/php-fpm

start

字php5.3.3后,php已经将php-fpm继承到php中,而且内置的php-fpm默认不支持(start|stop|reload)的平滑启动参数,需要使用官方源代码中提供的启动脚本来控制:

cp

-f

(php

-5.3.x-source-dir)/sapi/fpm/init.d.php-fpm

/etc/init.d/php-fpm

chmod

755

/etc/init.d/php-fpm

/etc/init.d/php-fpm

start

php-fpm支持的操作:

start,启动PHP的FastCGI进程。

stop,强制终止PHP的FastCGI进程。

quit,平滑终止PHP的FastCGI进程。

restart,

重启PHP的FastCGI进程。

reload,

重新加载PHP的php.ini。

logrotate,

重新启用log文件。

5.3.3的php-fpm脚本支持的操作:start|stop|force-quit|restart|reload|status

6.配置好PHP-5.2.14的php.ini,重新加载生效:

vi

/usr/local/php-5.2.14/etc/php.ini

/usr/local/php-5.2.14/sbin/php-fpm

reload

7.修改nginx配置,对需要的服务配置使用PHP-5.2.14:

location

~

.*.(php|php5)?$

{

fastcgi_pass

127.0.0.1:9001;

fastcgi_index

index.php;

include

fcgi.conf;

}

8.记录一下自己编译php5.5.10使用的配置

./configure

--prefix=/usr/local/php-5.5.10

--with-config-file-path=/usr/local/php-5.5.10/etc

--with-mysql=mysqlnd

--with-mysqli=mysqlnd

--with-bz2

--with-curl=/usr/bin

--enable-ftp

--enable-sockets

--disable-ipv6

--with-gd

--with-jpeg-dir=/usr/local

--with-png-dir=/usr/local

--with-freetype-dir=/usr/local

--enable-gd-native-ttf

--with-iconv-dir=/usr/local

--enable-mbstring

--enable-calendar

--with-gettext

--with-libxml-dir=/usr/local

--with-zlib

--with-pdo-mysql=mysqlnd

--enable-dom

--enable-xml

--enable-fpm

--with-libdir=lib64

--with-mcrypt=/usr/bin

--enable-zip

--enable-soap

--enable-mbstring

--with-gd

--with-openssl

--enable-pcntl

--with-xmlrpc

--enable-opcache

nginx php 和apache php 哪个性能更高

apache2.0--apache2.2单位进程占用的内存确实比nginx+php高,似乎网上的博文只比较同等内存如何如何,如果内存足够大,但cpu、硬盘能力有限时,结果又怎么样呢?现在内存很便宜,我们可以直接上它几十个G。

一个好消息,apache2.4已经出来了,官方说性能如何如何的提高了,改善了内存等方面的问题,只装了环境,还没有实战测试php5.3还是和php5.2有些差别的,程序不兼容,还没时间改,据说php5.3不是从php5.2来的,是从php5.0进化来的,还没细研究。

“程序不兼容”,这个问题搞清楚了,不是环境的问题,但也是环境的问题,根源是程序的问题,只是php5.2没有把有问题的程序检测出来,照样给

nginx和php分别用那个版本最稳定 ?

一般来说,不要用最新的版本,参考当前时间往前推一年左右的版本,应该就比较稳定了。没有特殊要求,基本上这样选择就可以了。过于保守的话,很多比较新的,好用的功能用不到。过于激进的话,就有可能会陷入比较新的BUG困境中。

如何编译windows nginx php

作了N多次php环境的搭建,网上的方法还真是多,但是实际操作起来总有一些大大小小的出入,很多错误经常让我纠结不已.久病成医,渐渐地我自己就总结出了一些经验。自我感觉良好。

这种方法并非以前所流行的apache 加 php_module 的方式运行,我是采用nginx 作为web服务器,以fastcgi的方式运行php。

linux下编译:

nginx我还是习惯选择8.54的版本,它的编译依赖以下几个软件包,解压这些源码包,在configure中设置好这些源码的路径,nginx在编译的时候会自己将他们编译进去的:

 pcre: 主要用于rewrite等模块

 zlib: 这个不用说了

 openssl: 如果你还知道https这个东西,那么你懂的~~~(当然你可以不需要这个功能)

 md5 /sha1: 这两者都是用于生成信息摘要的希哈算法,这俩个东西不是必须的,但是我发现如果不选择其中一个那么openssl是不会成功地编译进nginx的

下面是我自己写的一个安装脚本,有temp-path字样的编译选项所设置都是nginx在运行时产生的临时文件的路径,pid-path,lock-path也是临时文件路径,log-path是日志文件路径,我因为自己机子上一些权限的问题所以要设置一下.一般情况下其实这些是不必要的,nginx默认会统统把生成的这些文件放在自己的安装目录下.

tmp=/tmp/nginx

log=/home/jsckdao/log

pcre=~/Downloads/pcre-8.02

zlib=~/Downloads/zlib-1.2.5-src

openssl=~/Downloads/openssl-0.9.8q

md5=~/Downloads/md5-1.3.0

./configure --prefix=/usr/local/nginx \

--http-proxy-temp-path=${tmp}/nginx-proxy.tmp \

--http-fastcgi-temp-path=${tmp}/nginx-fcgi.tmp \

--http-uwsgi-temp-path=${tmp}/nginx-uwsgi.tmp \

--http-scgi-temp-path=${tmp}/nginx-scgi.tmp \

--http-client-body-temp-path=${tmp}/nginx-client.tmp \

--pid-path=${tmp}/nginx.pid \

--lock-path=${tmp}/nginx.lock \

--http-log-path=${log}/http.log \

--error-log-path=${log}/http-error.log \

--with-pcre=$pcre \ #pcre 源码包的路径

--with-zlib=$zlib \ #zlib 源码包的路径

--with-http_ssl_module \ #起用ssl支持

--with-openssl=$openssl #openssl 源码包路径

make

make install

php(5.2)的编译可以复杂点,也可以简单点,因为我们编译php时主要目的是编译它的脚本引擎和一些核心库,很多外围的东西不一定非要在编译php的时候加进去,可以在需要的时候将它们编译成扩展库再修改配置文件来加载它们。

我的编译代码如下:

./configure --prefix=/usr/local/php \

--with-mysql=/usr/local/mysql \#设置mysql的安装路径

--enable-fastcgi \ #开启fastcgi支持

--enable-debug #支持调试

make

make install

其实关于mysql的那一句都是可以不要的,只是我懒得再编译一次mysql扩展,所以就这样把它直接编译进php了,这样做的前提是你必须先安装mysql。

令外还有一些注意事项:编译php时必须确保系统中拥有libxml2与libxml2-dev这俩个软件包,因为php默认会将xml的功能编译进去,所以xml的支持是必不可少的。还有一个就是autoconf这条命令了,在编译扩展的时候,phpize会调用系统中的这个命令来生成扩展包的configure文件,没有它你就不能作扩展了,这一点也是要记住的,毕竟linux下的php不像windows版那样事先把所有的扩展都编译好了。

至于window下nginx,php的安装就没有什么难度了,下个zip包,解压就能用,只要稍微配置就可以了.

配置:

如果只是想让php能运行的话那么直接输入命令:

./php-cgi -b 3344

这样就开启了php的fastcgi进程了,-b参数是绑定该进程的侦听端口,随便找个没用的端口填就可以了,这里绑定的是3344.

然后在nginx的配置文件中加上这么几行:

location ~ \.php$ {

root  /home/jsckdao/www; #这是你网站的根目录

fastcgi_pass127.0.0.1:3344; #这里指定了fastcgi进程侦听的端口,nginx就是通过这里与php交互的

fastcgi_index  index.php;

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

include fastcgi_params;

}

如果要改nginx的侦听端口的话找到"listen"这么一项,改就是了.运行nginx,在/home/jsckdao/www目录中写一个测试文件test.php:

?php

phpinfo();

?

访问,如果显示了php所以的配置信息,那么就基本没什么问题,已经可以用这个环境写些php代码了.

至于php的调试器我选择xdebug,不为什么,习惯所致。加载xdebug时,在配置文件中的写法根据系统的不同好像也有点不同。linux下是:zend_extension_debug=path,window中加载的dll有两种,一种文件名会带有ts的后缀,这种要这要样写:zend_extension_ts=path另外一种就这样:zend_extension=path,path一定要写绝对路径。虽然ts为何意我也不是很清楚,但是这些设置是一定不可以搞错的。

设置好后重新运行php-cgi,然后重新访问test.php,如果有xdebug的那一块出现了,那么就成功了.

当然这是一个很简单的配置,只能让你运行php,要想真正做成你需要的开发环境,还需要你根据自己的需要修改php和nginx的配置文件,这些配置内容很多,我自己也在学习中,就不好多讲了.

另外有一点需要注意,php的配置文件在它的源码包中有两个:php.ini-dist和php.ini-recommended,分别是针对生成环境和开发环境的配置.你需要把其中一个改名为php.ini.重启后查看phpinfo()的页面,靠上的地方有一项"Loaded Configuration File",它的值如果就是你的php.ini的路径,那么就没问题了,如果不是话,就看看上面一项"Configuration File (php.ini) Path",你把你的php.ini文件移到这个目录下在重启就可以了.因为php默认会在这个路径下寻找php.ini的.当然你也可以在运行php-cgi的时候设置你的php.ini路径,比如这样:

php-cgi -b 3344 -c /home/jsckdao/php.ini

这样就是把/home/jsckdao/php.ini这个文件作为配置文件了.

按钮!!


推荐阅读
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • Ubuntu简介Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在” ... [详细]
  • 一、安装软件包dig和nslookup需要安装相关软件包。Centos:yuminstallbind-utilsDebian:apt-getupdate ... [详细]
  • 1998元龙芯学生笔记本将投产(组图)
    图1:图示龙芯笔记本机型外观靓丽,对边角做了圆滑处理以防止划伤磕碰,定位小学生。(国芯科技图片)图2:图示龙芯笔记本机型外观稳重,更适合中学生使用。(国芯科技图 ... [详细]
  • FirsttheInlinefunctionalityisanexcellentidea.Itworkswhenworkingondatabases ... [详细]
  • pxe 引导clonezilla live万能备份与还原
    pxe引导clonezillalive万能备份与还原官方链接:http:www.clonezilla.orghttp:www.clonezilla.orgdownlo ... [详细]
author-avatar
沉睡森林
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有