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

应用环境

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 http://museum.php.net/php5/php-5.2.14.tar.gz
wget -c http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux
, php
, nginx
多版本
nginx apache 共存、nginx 80 443 共存、nginx php多版本共存、gitlab nginx 共存、nginx和apache共存,以便于您获取更多的相关知识。

时间: 2024-09-27 17:45:58

Linux系统中设置多版本PHP共存配合Nginx服务器使用_php技巧的相关文章

教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感_Mysql

在 MySQL 中,数据库和表其实就是数据目录下的目录和文. 因而,操作系统的敏感性决定数据库和表命名的大小写敏感.这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix/Linux 系统中是大小写敏感的. MySQL大小写敏感可以通过配置文件的lower_case_table_names参数来控制. WINDOWS: 编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_names=0 (备注:为0时大小

在Linux系统中检查glibc版本信息的方法

  GNU C库(glibc)是标准C库的GNU实现.glibc是GNU工具链的关键组件,用于和二进制工具和编译器一起使用,为目标架构生成用户空间应用程序. 当从源码进行构建时,一些Linux程序可能需要链接到某个特定版本的glibc.在这种情况下,你可能想要检查已安装的glibc信息以查看是否满足依赖关系. 这里介绍几种简单的方法,方便你检查Linux上的glibc版本. 方法一 下面给出了命令行下检查GNU C库的简单命令. 代码如下: $ ldd --version 在本例中,glibc版

Linux系统中与中文显示相关的一些编码设置方法

  对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统不能正常输入和显示中文.另外,由于大部分主要Linux发行版都是以英语为主体的,英文界面的系统和应用程序不管在界面的美观程度和稳定程度上都比中文的略好一些,各种奇怪的BUG也要少一些.因此,很多稍微有英语基础的Linux用户都宁愿使用英文界面的系统.但是,矛盾又突现出来:在英文系统下,如何才能正常显示和输入中文呢?有没有两全其美的方案呢?因此,笔者开

linux-Linux系统中设置永久生效别名,为什么我设置不成功,哪里出错了? 求解

问题描述 Linux系统中设置永久生效别名,为什么我设置不成功,哪里出错了? 求解 解决方案 linux alias设置别名永久生效ubuntu设置永久别名 解决方案二: 设置后要resource一下这个配置文件 解决方案三: source .bashrc或者. .bashrc

linux系统中的安全常规优化

关于服务器本地终端上的安全控制,可以从以下几个方面着手: 1.即时禁止普通用户登录 当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统,这时候,只需要简单的建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在则拒绝普通用户登录系统(root用户不受限制),删除该文件或者重启系统后就可恢复. touch /etc/nologin 2.控制服务器开放的tty终端 linux系统默认开放了tty1-6共六个本地终端(控制台),如果

在Linux系统中安装Go语言的详细教程

  这篇文章主要介绍了在Linux系统中安装Go语言的详细教程,由于国内很多人对谷歌的盲目追捧,导致Go语言在国内的人气远超国外...需要的朋友可以参考下 Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装G

深入解析Linux系统中的SELinux访问控制功能

  SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件.SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到. SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制

Linux系统中ls命令的常见用法整理

  ls命令是Linux系统中最被频繁使用的命令之一,我相信ls命令一定是你进入一台Linux系统的电脑打开命令提示符后第一个使用的命令.我们每天都在频繁地使用ls命令,即使我们可能没有意识也从来用不到所有可用的选项.本文中,我们将讨论下一些基本的ls命令并且覆盖尽可能多的有关参数来讲解. 1. 不带任何选项列出文件 不带选项的ls命令来光秃秃地列出文件和目录,我们是不能看到像文件类型.大小.修改日期和时间.权限以及链接这样具体的信息的. 代码如下: # ls 0001.pcap Desktop

linux 系统中Autoconf/Automake的使用

作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用"./configure","make","make instal&