当前位置:

首页 > 编程开发 > linux lnmp php7.0,LNMP 环境下安装多个 PHP 版本(PHP7, PHP5)

linux lnmp php7.0,LNMP 环境下安装多个 PHP 版本(PHP7, PHP5)

LNMP 环境下安装多个 PHP 版本(PHP7, PHP5) 很多老牌开源程序还没完全跟上 PHP 7 的步伐,所以一个常见的运维场景就出现了:在已有的 CentOS 7 系统上,既要保留原有的 PHP 5 环境(搭配着 MySQL 5.7 和 Nginx 1.12),又要为性能测试或新项目部署安

LNMP 环境下安装多个 PHP 版本(PHP7, PHP5)

很多老牌开源程序还没完全跟上 PHP 7 的步伐,所以一个常见的运维场景就出现了:在已有的 CentOS 7 系统上,既要保留原有的 PHP 5 环境(搭配着 MySQL 5.7 和 Nginx 1.12),又要为性能测试或新项目部署安装一个 PHP 7。这活儿听起来有点绕,但理顺了步骤,其实并不复杂。

安装nginx

首先,咱们把 Nginx 的基础环境搭起来。通过源码编译安装,能获得更灵活的模块定制。执行以下命令:

wget http://nginx.org/download/nginx-1.12.2.tar.gz

tar xf nginx-1.12.2.tar.gz

cd nginx-1.12.2

useradd -M -s /sbin/nologin nginx

./configure ./configure –prefix=/usr/local/nginx –with-http_ssl_module –with-http_stub_status_module –with-pcre –user=nginx –group=nginx

make && make install

安装完成后,进入目录并启动服务:

cd /usr/local/nginx/

systemctl enable nginx

./nginx

看到服务正常启动,这一步就算搞定了。

安装 PHP 7.2

PHP 5 和 PHP 7 的编译安装流程其实大同小异,核心区别在于配置参数和依赖库的版本。先打好基础,检查并安装必要的依赖库,尤其是那些带“-devel”后缀的开发包,编译过程离不开它们。

检查是否安装了libxml2-devel,没有的话执行yum install libxml2-devel

安装必要依赖,编译都需要开发版的库,即带-devel的库。

# yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y

#yum install libjpeg-devel curl curl-devel openldap-devel openldap -y

这里以 php-7.2.0 版本为例。先下载源码包:

# wget -c http://cn2.php.net/distributions/php-7.2.0.tar.gz

解压:

# tar -xf php-7.2.0.tar.gz

在64位系统上,可能会遇到一个关于ldap库的常见错误。提前处理一下,把库文件复制到32位库目录:

防止64位系统报错configure: error: Cannot find ldap libraries in /usr/lib

复制ldap库文件到32位文件夹里#cp -frp /usr/lib64/libldap* /usr/lib/

接下来是关键步骤:配置编译参数。这里将安装路径指定为 /usr/local/php7,以便与旧版本清晰隔离:

# cd php-7.2.0/

#./configure –prefix=/usr/local/php7 –enable-fpm –with-mysqli –with-zlib –with-gettext –with-bcmath –with-ldap –with-curl –with-gd –with-jpeg-dir –with-png-dir –with-jpeg-dir –with-png-dir –with-freetype-dir –with-openssl –enable-mbstring –enable-xml –enable-session –enable-ftp –enable-pdo –with-pdo-mysql –enable-opcache –enable-xml –enable-sockets –with-libxml-dir –with-xmlrpc –enable-soap –enable-zip –enable-pcntl

有个细节值得注意:从 PHP 7 开始,官方已经移除了旧的 mysql 扩展支持,所以配置参数里自然就没有 –with-mysql 了。当然,如果需要其他扩展,可以通过 ./configure –help 查看所有可用选项。

配置完成后,开始编译安装:

# make -j4 && make install

配置 PHP 7.2

安装完成只是第一步,接下来的配置才是让 PHP 跑起来的关键。首先复制并编辑主配置文件:

# cp php.ini-development /usr/local/php7/lib/php.ini

# vim /usr/local/php7/lib/php.ini

需要修改两个关键项。一是找到 mysqli.default_socket,将其指向 MySQL 的 socket 文件:

mysqli.default_socket = /var/lib/mysql/mysql.sock

二是设置正确的时区,找到 date.timezone,去掉前面的分号注释并修改:

date.timezone = PRC

现在,可以验证一下 PHP 7 是否安装成功了:

# /usr/local/php7/bin/php -v

PHP 7.2.0 (cli) (built: Jan 5 2018 10:58:43) ( NTS )

Copyright (c) 1997-2017 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

编译产生的中间文件体积不小,可以选择清理(使用 make clean)或直接删除源码目录。毕竟我们已经通过 –prefix 参数将程序安装到了独立目录,源码的使命已经完成。

配置 php-fpm

PHP-FPM 是 Nginx 与 PHP 通信的桥梁。配置它,主要是处理好服务文件和端口监听问题。

先复制默认的配置文件:

# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

#vim /usr/local/php7/etc/php-fpm.conf在这里配置error-log路径。

接着,配置进程池文件:

#cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

# vim /usr/local/php7/etc/php-fpm.d/www.conf

找到 user 和 group 设置,通常保持默认的 nobody 即可,这是出于安全考虑:

user = nobody

group = nobody 保持默认确保安全 php7这个应该在www-conf里才有

最关键的一步是修改监听端口。因为系统原有的 PHP 5 很可能已经占用了 9000 端口,所以这里需要为 PHP 7 换一个端口,比如 9001:

查找 listen 将

listen = 127.0.0.1:9000

改成

listen = 127.0.0.1:9001

如果不确定端口占用情况,可以用命令 lsof -i:9000 来检查。

配置 php-fpm 服务

为了让 PHP-FPM 能像系统服务一样被管理,需要配置 systemd 服务文件。为了区分,我们将 PHP 7 的服务命名为 php7-fpm.service。

[root@xxx php-7.2.0]## cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php7-fpm.service

[root@xxx php-7.2.0]# vim /usr/lib/systemd/system/php7-fpm.service

在服务文件中,需要将变量替换为实际的安装路径:

将:

PIDFile=${prefix}/var/run/php-fpm.pid

ExecStart=${exec_prefix}/sbin/php-fpm –nodaemonize –fpm-config ${prefix}/etc/php-fpm.conf

改成

PIDFile=/usr/local/php7/var/run/php-fpm.pid

ExecStart=/usr/local/php7/sbin/php-fpm –nodaemonize –fpm-config /usr/local/php7/etc/php-fpm.conf

本质上,就是用我们之前指定的安装路径 /usr/local/php7 去替换掉那些通用的路径变量。有些系统可能已经自动完成了这一步,但手动确认一下总没错。

然后,重新加载 systemd 配置,并设置开机启动:

# systemctl daemon-reload

可以设置开机启动:

# systemctl enable php7-fpm

立即启动 php7-fpm

# systemctl start php7-fpm

查看状态,确认服务运行正常:

#systemctl status php7-fpm -l

● php7-fpm.service – The PHP FastCGI Process Manager

Loaded: loaded (/usr/lib/systemd/system/php7-fpm.service; enabled; vendor preset: disabled)

Active: active (running) since Fri 2018-01-05 13:35:37 CST; 3s ago

Main PID: 1978 (php-fpm)

Memory: 8.9M

CGroup: /system.slice/php7-fpm.service

├─1978 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)

├─1986 php-fpm: pool www

└─1987 php-fpm: pool www

如果状态显示为“fail”,别慌。这通常是配置文件路径问题导致的,尤其是 error-log 的路径没有正确配置。在多版本共存的环境里,建议将不同 PHP 版本的错误日志分开存放。比如,可以修改 php7-fpm.conf,明确设置 error_log = /var/log/php7-fpm.log。保存后重启服务,一般就能解决问题。

配置不同的 nginx 站点使用不用的 PHP 版本

最后一步,也是最体现“多版本共存”价值的一步:让 Nginx 不同的站点,按需调用不同版本的 PHP。原理很简单,就是通过 fastcgi_pass 指令指向不同的监听端口。

index.php使用

phpinfo();查看版本

首先,为测试站点创建一个 Nginx 配置文件:

# cd /etc/nginx/conf.d/

# vim test.conf

文件名自定义即可

输入,并且保存到/var/www/html/test下:

server { listen 80; server_name localhost; root /var/www/html/test; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

别忘了设置网站目录的权限,让 Nginx 用户能够访问:

#chown nginx -R /var/www/html/test

控制站点使用哪个版本的 PHP 关键是在 fastcgi_pass 的端口:

fastcgi_pass 127.0.0.1:9001;

这里的 9001 端口对应我们刚才配置的 PHP 7。如果某个站点需要切回 PHP 5,只需将这里的端口号改为 9000 即可。

配置完成后,重载 Nginx 使配置生效:

# systemctl reload nginx

至此,一个支持 PHP 5 和 PHP 7 双版本的 LNMP 环境就搭建并配置完成了。通过灵活的端口配置,可以轻松管理不同应用对 PHP 版本的需求。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发 Linux
上一篇: php multi,php setmulti
相关文章 更多
C++动态数组初始化怎么写?常用语句与代码示例
C++动态数组初始化怎么写?常用语句与代码示例

深入解析C++中动态数组的初始化机制,涵盖new操作符的不同用法、基本类型与类对象的初始化差异,以及为何在现代C++开发中应优先使用std::vector。

在 Kali Linux 中验证 Hashcat 安装
在 Kali Linux 中验证 Hashcat 安装

引言 Hashcat 被广泛认为是世界上最快、最先进的密码恢复工具。它是渗透测试人员和安全专业人员武器库中的必备工具。在使用它破解哈希(hashes)之前,你必须首先确保它已在你的系统上正确安装并完全可用。 在本实验(lab)中,你将执行一系列简单的检查,以验证 Hashcat 在你的 Kali L

在 Kali Linux 上安装和验证 Gobuster
在 Kali Linux 上安装和验证 Gobuster

引言 Gobuster 是一个强大的工具,用于目录和文件暴力破解、DNS 子域暴力破解以及 S3 存储桶枚举。它是渗透测试人员和安全爱好者发现 Web 服务器上隐藏路径和资源的重要实用程序。 在本实验中,你将学习在 Kali Linux 环境中安装 Gobuster 的基本步骤。你将使用 CODE_

(G-G) Pixel 手机或将进行重要底层升级Linux 内核有望更新
(G-G) Pixel 手机或将进行重要底层升级Linux 内核有望更新

谷歌计划为Pixel7至10系列进行Linux内核重大升级,从旧版本统一跃升至Linux6.12。新内核优化了CPU调度和内存管理,有望提升流畅度、安全性与发热控制,并可能改善Pixel10的GPU性能。该更新预计随Android17QPR2年底推送,Pixel6因支持终止无缘升级。

火狐浏览器自定义主页
火狐浏览器自定义主页

火狐浏览器可通过五种方式自定义默认主页:一、设置中手动输入网址;二、用当前页面一键设为主页;三、从书签中选取;四、移动端通过新标签页模拟;五、高级用户修改about:config配置项。 想让火狐浏览器一打开就直奔你心仪的网站,而不是那个空白页或默认的官方主页?这事儿其实不难,通过浏览器内置的设置就

淘宝网页版入口查找教程
淘宝网页版入口查找教程

淘宝官方网页登录入口 对于如何找到淘宝网页版的入口,很多朋友都感到有点摸不着头脑。别急,这篇文章就来为你拆解清楚整个登录流程。官方的登录入口很明确,就在官网首页的左上角。 淘宝网页版入口位于官网首页左上角,点击“亲,请登录”即可跳转至统一的验证页面。登录支持密码、短信验证码和手机APP扫码三种方式,

WMV转MP4方法
WMV转MP4方法

WMV视频压缩指南:如何高效“瘦身”释放硬盘空间 在日常处理和收藏视频时,不少人会发现一个有趣的现象:WMV格式的文件,在画质相当的情况下,体积往往比MP4更小巧。这原本是它的优势,但架不住日积月累,一堆WMV文件同样会悄悄吃掉大量的硬盘空间。因此,如何给WMV视频“减减肥”,就成了优化存储、提升效

打字鸭官方网址登录入口
打字鸭官方网址登录入口

打字鸭官方网址是https://www.daziya.com/,提供科学分层课程、沉浸式交互体验、精准数据追踪、灵活教学角色及稳定轻量技术架构。 提到在线打字练习,很多朋友第一时间会问:打字鸭的官方入口到底在哪?不用再四处搜索了,它的直达地址就在这里。 https://www.daziya.com/

米侠浏览器打不开网页
米侠浏览器打不开网页

米侠浏览器页面打不开,或者干脆显示一片空白?问题根源大概率出在内核上。比如内核和当前网页的兼容性出了岔子、页面渲染模块意外损坏,再或者,内核版本实在太旧了。别急,沿着切换内核、清理缓存、关闭硬件加速、替换核心文件这四步走,通常都能解决。 用米侠浏览器上网,碰到页面死活刷不出来,或者只显示一个空白屏幕

steam正版官网入口地址
steam正版官网入口地址

Steam正版官网入口与完整使用指引 Steam的全球统一官方商店入口是:https://store.steampowered.com/。认准这个地址,页面具备HTTPS加密、Valve版权标识及安全锁标志,能有效保障访问安全。 还在四处搜索Steam的正版官网地址?其实不必那么麻烦。下面这份从官网

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。