运行平稳却存在不足,官方并未对部分模块进行版本迭代。当前系统版本里 PHP 仍停留在 5.4,该版本早已停止维护。最初打算继续使用至 8 版本推出。但 8 版本似乎仍需时日,PHP 5.4 却已被众多插件弃用。因此决定进行升级。不过升级过程并非一帆风顺,认为有必要将经历记录下来。
之前曾经使用过 remi 的安装渠道,这次打算继续沿用这个方案。观察 remi 平台上的设置流程,看起来相当简便。然而依然不敢掉以轻心,认为应该准备备用方案,以免万一操作失误,会造成服务器长时间无法正常工作的情况。
备份 VPS 磁盘
过去一直借助 VPS 里的磁盘来充当临时的数据存档,当初调整数据中心磁盘大小时,尺寸控制得比较紧凑,因此后来扩展磁盘空间时,也较少动用,现有容量足以完成当前磁盘的完整克隆。
但是,在新版的云管理器里,复制磁盘的功能已经消失了。新版里,对应的操作变成了「磁盘镜像化」,在菜单路径是 -> -> -> Disks。不过,这个功能使用时,有个两吉的容量上限。
启动那个老旧版本,磁盘复制选项依然有效。编辑当前磁盘 7,选择「磁盘」而非「镜像」,因为后者有 2GB 容量上限。将复制出的新磁盘命名成,当作备用。虽然这样做能节省费用,但操作期间服务器任何变动,比如网站留言等,都不会在恢复时被保留下来。于是我就选了个访问量特别小的周末的半夜来进行这些操作。
一旦创建了副本,便能够放心尝试,倘若出现失误,依然可以调整虚拟专用服务器的设定,把存储设备换成克隆的硬盘,从而重启系统,返回到实验之前的情形。
升级到 PHP 7.3.3
继续在现用磁盘上折腾,都不需要重启服务器。
依照 Remi 的指引进行操作,选定 PHP 的目标版本为 7.3.3,并采用 / 的安装路径。
安装 EPEL 源。这个其实之前已经安装过了。
获取软件包链接,指向特定地址,完成安装操作,涉及epel发行版,版本为最新7,架构为noarch
配置 remi 仓库,这个以前曾经应用过,不过系统重装之后便不再使用了。
通过命令行工具,可以安装来自特定源的软件包,该源提供了企业级Linux发行版的更新,软件包的地址为 http://rpms.remirepo.net/enterprise/remi-release-7.rpm,使用包管理器进行操作,能够完成软件的下载与配置,确保系统能够获取到所需的软件更新,提升系统的稳定性和安全性
安装 YUM 工具。
# yum install yum-utils
现在可以开始实施升级了,要使用 Remi 源来更新现有软件了。重点在于 PHP,我也应用了它,必须将它升级到 Remi 源中的最新版本。因此,除了开启 remi-php73 源之外,还需要开启 remi 主源。
启用remi-php73仓库配置
启用remi仓库配置
因为没有使用 插件了,所以直接执行升级。
# yum update
然而并不能顺利更新,因为有些依赖性问题。
分析并解决更新问题
当前遇到的主要障碍似乎是部分软件包,例如ipset,由于版本较低无法自动清理,导致安装过程受阻。yum在执行完成后给出了相关提示。
检测到存在32项先前rpmdb问题,'yum check'的执行结果如下。
NetworkManager-1.10.2-16.el7_5.x86_64 缺少必要的依赖项 NetworkManager-libnm(x86-64) 需要的版本为 ('1', '1.10.2', '16.el7_5')
NetworkManager-1.12.0-8.el7_6.x86_64 与 NetworkManager-1.10.2-16.el7_5.x86_64 是重复的版本
audit-2.8.1-3.el7_5.1.x86_64 缺少依赖项 audit-libs(x86-64) 的版本要求,应为 ('0', '2.8.1', '3.el7_5.1')
audit-2.8.4-4.el7.x86_64这个软件包与audit-2.8.1-3.el7_5.1.x86_64这个软件包是重复的
……
这些软件包其实都是重复的,它们的高版本已经安装了,可以通过下列指令查询。
# package-cleanup --dupes
清除上面的低版本软件包之后居然又发现了一个新的,
当前路径为根目录下cnzhx目录,接下来执行package-cleanup命令,目的是查找并移除重复的软件包,命令参数为--dupes
Loaded plugins: fastestmirror
php-fpm-5.4.16-46.el7.x86_64
php-fpm-5.4.16-45.el7.x86_64
但是好像依然无效。使用 yum 或者 yum 都会出现故障。即便采用 --skip- 选项,涉及 php73 的相关软件包也不会得到升级。
于是决定尝试先删除 php 相关的软件包然后重新安装它们。
卸载 php 包, 卸载 php-common 组件, 卸载 php-fpm 服务, 卸载 phpmyadmin 管理工具
根据依赖关系删除的包总共有 22 个。
然后重新安装,
安装 php 软件包,包括 php-common 组件,还有 php-fpm 服务,以及 php-mysqlnd 扩展,同时安装 php-opcache 缓存模块,并配置 php-cli 命令行工具,接着添加 php-gd 图像处理库,再集成 php-mbstring 多字节字符串支持,然后安装 php-pecl-mcrypt 加密扩展,并配置 php-php-gettext 国际化工具,之后部署 php-process 进程管理模块,最后加入 php-tidy 清理工具和 php-xml 数据交互扩展。
完成后重启 httpd 和 php-fpm 服务,
重新启动httpd服务,同时重启php-fpm服务,确保它们正常运行
之后发现似乎可以用了。
安装环节中察觉到部分软件包的命名发生了变化,诸如 php-mysql 被调整为 php-,php-pecl- 也同样转变为 php-。
这次终于可以圆满结束了,并且已经融入 PHP 之中,不再是独立的 Zend 扩展了。
接下来要单独进行安装,因为在之前的尝试中只有这一个安装失败了,原因是缺少 php-zip组件,所以根据安装的反馈信息,再次尝试安装能够提供 php-zip的 php-pecl-zip包
# yum install php-pecl-zip
然后就可以安装 了,
# yum install phpmyadmin
安装完成后需要恢复原来的 配置,
不需要额外配置即可使用。
其它问题的解决
服务器大体上已经能够用 php73 正常运行了,但仍然存在一些问题,包括升级过程中配置文件的变动,以及网站程序里在 PHP 7.3 环境下会出错的旧代码部分,或许还与我使用 yum 进行更新有关。
发现的问题有:
尽管这些事情算不上什么严重问题,不过依然耗费了不少时间精力,目前观察起来好像已经没有其他麻烦了。
扫一扫在手机端查看
-
Tags : CentOS EPEL Linode VPS PHP PHP-FPM phpMyAdmin Remi VPS
- 上一篇:mysql set varchar GaussDBforMySQLCOUNT查询并行优化策略_深度解读GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略
- 下一篇:centos php54 CENTOS下LNMP平台PHP执行超时_CENTOS上LNMP平台PHP的奇怪有关问题
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1