CentOS8のPHP8.0をPHP8.1に切り替えてみる

PHP8.1が正式リリースされていたのをすっかり忘れていました。今回は8.0から一部処理の速度が上がっているらしいですね。WordPressでどれくらい効果があるのか検証してみます。

検証環境
before after
OS CentOS Stream 8
PHP 8.0.14 8.1.1
WordPress 5.8.3

PHPはOS標準のPHP7系ではなくremiリポジトリからPHP8.0を導入済です。

また記事にはしていませんがCentOS6のサポート終了につき本ブログのサーバをCentOS8へ、またCentOS8も2021年末でサポート終了のためCentOS Stream 8に切り替えました。いろいろ考えましたがWordPress程度ならRHEL8との互換性を気にする必要もありませんし。

PHP8.1導入前の準備

アップデート前にPHP8.0のバージョン表示、apachebenchの取得、現在インストールされているPHPパッケージのバージョンを出力しておきます。

# php -v
PHP 8.0.14 (cli) (built: Dec 16 2021 03:01:07) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies

# ab -c 1000 -n 1000 https://192.0.2.128/

Requests per second:    75.43 [#/sec] (mean)
Time per request:       13256.579 [ms] (mean)
Time per request:       13.257 [ms] (mean, across all concurrent requests)
Transfer rate:          2091.53 [Kbytes/sec] received

## dnf list installed |grep php
gd3php.x86_64                         2.3.3-4.el8.remi                    @remi-safe    
oniguruma5php.x86_64                  6.9.7.1-1.el8.remi                  @remi-safe    
php.x86_64                            8.0.14-1.el8.remi                   @remi-modular 
php-cli.x86_64                        8.0.14-1.el8.remi                   @remi-modular 
php-common.x86_64                     8.0.14-1.el8.remi                   @remi-modular 
php-fpm.x86_64                        8.0.14-1.el8.remi                   @remi-modular 
php-gd.x86_64                         8.0.14-1.el8.remi                   @remi-modular 
php-mbstring.x86_64                   8.0.14-1.el8.remi                   @remi-modular 
php-mysqlnd.x86_64                    8.0.14-1.el8.remi                   @remi-modular 
php-opcache.x86_64                    8.0.14-1.el8.remi                   @remi-modular 
php-pdo.x86_64                        8.0.14-1.el8.remi                   @remi-modular 
php-pecl-zip.x86_64                   1.20.0-1.el8.remi.8.0               @remi-modular 
php-sodium.x86_64                     8.0.14-1.el8.remi                   @remi-modular 
php-xml.x86_64                        8.0.14-1.el8.remi                   @remi-modular 
PHP8.1アップデート開始

まずはPHP8.1を利用可能か確認します。remi-8.1の表記があるので行けますね。

# dnf module list php
CentOS Stream 8 - AppStream
Name         Stream            Profiles                             Summary
php          7.2 [d]           common [d], devel, minimal           PHP scripting language
php          7.3               common [d], devel, minimal           PHP scripting language
php          7.4               common [d], devel, minimal           PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name         Stream            Profiles                             Summary
php          remi-7.2          common [d], devel, minimal           PHP scripting language
php          remi-7.3          common [d], devel, minimal           PHP scripting language
php          remi-7.4          common [d], devel, minimal           PHP scripting language
php          remi-8.0 [e]      common [d] [i], devel, minimal       PHP scripting language
php          remi-8.1          common [d], devel, minimal           PHP scripting language

モジュール切り替えの前に現在のdnf PHP8.0モジュール情報のリセットを行います。

# dnf module reset php -y
依存関係が解決しました。
========================================================================================================================
 パッケージ                  アーキテクチャー           バージョン                    リポジトリー                サイズ
========================================================================================================================
モジュールの再設定中:
 php

トランザクションの概要
========================================================================================================================

完了しました!

そしてdnf PHP8.1モジュールを有効化します。

# dnf module enable php:remi-8.1
依存関係が解決しました。
========================================================================================================================
 パッケージ                  アーキテクチャー           バージョン                    リポジトリー                サイズ
========================================================================================================================
モジュールストリームの有効化中:
 php                                                    remi-8.1

トランザクションの概要
========================================================================================================================

完了しました!

※2022/11/2 -tオプションを削除しました

いよいよPHP8.1へのアップデートを実施。
ここではPHPが含まれれるパッケージを直指定していますが、phpとphp-fpmの2つを指定しておけば、他は依存関係としてアップデートリストに上がってくるはずです。

# dnf update php php-cli php-common php-fpm php-gd php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-zip php-sodium php-xml

アップグレード済み:
  php-8.1.1-1.el8.remi.x86_64                php-cli-8.1.1-1.el8.remi.x86_64      php-common-8.1.1-1.el8.remi.x86_64
  php-fpm-8.1.1-1.el8.remi.x86_64            php-gd-8.1.1-1.el8.remi.x86_64       php-mbstring-8.1.1-1.el8.remi.x86_64
  php-mysqlnd-8.1.1-1.el8.remi.x86_64        php-opcache-8.1.1-1.el8.remi.x86_64  php-pdo-8.1.1-1.el8.remi.x86_64
  php-pecl-zip-1.20.0-1.el8.remi.8.1.x86_64  php-sodium-8.1.1-1.el8.remi.x86_64   php-xml-8.1.1-1.el8.remi.x86_64

完了しました!

アップデート完了後にPHPのバージョンを確認します。8.0から直接アップデートしたのでOPcacheも引き継がれています。
またインストール状況を見ながらphpinfoを連打してみましたが、ダウンタイムほぼ0で切り替えることができました。この方法ならsystemctl enable php-fpmなどの設定は不要です。

# php -v
PHP 8.1.1 (cli) (built: Dec 15 2021 02:00:45) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
PHP8.1へアップデートの効果は次回へ

長くなりましたので効果確認は次回へ。

PHP8.0→8.1の高速化を確認
前回に引き続きPHP8.1へのアップデートの効果を確かめてみることにします。
スポンサーリンク