Synology NAS WordPress WebサイトのPHP8.0適用 | masao-Tec-blog

Synology NAS WordPress WebサイトのPHP8.0適用

Synology NAS 応用

Synology DSM7系に対応したPHP8.0がリリースされたため、運用中のWordPres Webサイトへの適用を行いました。

Synologyのパッケージセンターにて、PHP8.0がリリースされていました。

こちらの記事で、WordPressのWebサイトを構築していましたが、当時最新版リリースであるPHP7.4を適用していました。

参考 Synology NASでのWordPress(本家版)を用いたWebサイト構築

今回は、本サイトに適用しているPHPのバージョンをPHP8.0に更新したため、その手順を紹介します。

前提 本記事でのDSM(OS)バージョンは、Synology DSM 7.1 を用いています。

スポンサーリンク

1.PHP8.0のインストール

パッケージセンターより、PHP 8.0のパッケージをインストールします。

スポンサーリンク

2.PHP8.0のプロファイル設定

Webサイトで運用中のPHPのプロファイルを直接変更した場合、何か問題が発生した時にすぐに戻せないため、運用中のプロファイルとは別の新規プロファイルを作成して、Webサイトに適用するプロファイルを入れ替える手順とします。

このため、Webサイトに適用するPHP8.0のプロファイルを新規作成します。

[Web Station]で、[スクリプト言語の設定]>[PHP]から、[作成]をクリックします。

2-1.PHPバージョンの設定およびPHPキャッシュの有効化

[PHPプロファイルを設定]ダイアログの[設定]タブをクリックし、設定項目を入力していきます。

プロファイル名]と[説明]は何でもよいですが、後でわかりやすい内容としておきます。

PHPバージョン]でPHP8.0を選択します。

PHPキャッシュを有効にする]にチェックをいれます。本設定により、PHPのOPcacheAPCuが有効化されます。

[OPcache]とは、PHPスクリプトをコンパイルした中間コード(バイトコード)をキャッシュしておき、次回以降の実行時にキャッシュした中間コードを再利用する仕組みです。
[APCu]もOPcacheと同様、キャッシュする仕組みですが、こちらはオブジェクトや変数をキャッシュします。
どちらも、キャッシュされた中間コードやデータを再利用することにより、Webサイトの表示性能が大幅に向上するので、設定は必須です。

2-2.PHP拡張モジュールの選択

[PHPプロファイルを設定]ダイアログの[拡張]タブをクリックし、WordPressを実行するのに必要な拡張モジュールを選択していきます。

拡張モジュールについては、WordPressのサイトを参考にして、以下のモジュールを有効化対象としました。

本サイトで使用しているWordPressのテーマおよびプラグインでは、本モジュールの有効化だけで運用が可能なことは確認済ですが、インストールしているWordPressのテーマやプラグインによっては、追加でモジュールが必要となる可能性はあります。

名前説明
bcmath任意の精度の数学で、10 進数 2147483647 桁までの任意のサイズと精度の数値をサポートします。
curlリモート要求操作を実行します。
exif画像に保存されているメタデータで動作します。
ftpファイル転送プロトコル (FTP) を話すファイルサーバーへのクライアントアクセスを実装します
gdImagick がインストールされていない場合、GD グラフィックスライブラリは画像操作の機能制限付きフォールバックとして使用されます。
iconv文字セット間の変換に使用されます。
imagickメディアのアップロードにより良い画質を提供します。
intl書式設定、音訳、エンコード変換、カレンダー操作、準拠照合順序、テキスト境界の検索、ロケール識別子、タイムゾーン、書記素の操作など、ロケール対応の操作を実行できます。
mysqliMySQL Improved 拡張モジュール
openssl他のホストへの SSL ベースの接続を許可します。
pdo_mysqlPDO API で MySQL に接続するためのドライバです。
sockets一般的なBSDソケットに基づいてソケット通信機能への低レベルインタフェースを実装します。
sodium署名を検証し、安全にランダムなバイトを提供します。
ssh2セキュアな暗号化トランスポートを使用して、リモートマシン上のリソース (シェル、リモート exec、トンネリング、ファイル転送) へのアクセスを提供します。
zipプラグイン、テーマ、およびWordPressアップデートパッケージを解凍するために使用されます。
zlibGzip 圧縮と解凍。

2-3.PHPパラメータ設定とJITの有効化

[PHPプロファイルを設定]ダイアログの[コア]タブをクリックし、PHPのパラメータ設定を行います。

設定するパラメータとしては、以下リンクの記事で紹介した、「WordPress All-in-One Migration」プラグインで容量制限を回避するためのパラメータの設定と、PHP8.0で新規に機能追加された、ジャストインタイム(JIT)コンパイラーを有効化するためのパラメータとしました。

PHPのジャストインタイム(JIT)コンパイラーとは、OPCacheをさらにもう一段進めた仕組みであり、OPCacheではコンパイルされた中間コードをキャッシュして再利用しますが、JITでは中間コードをネイティブコード(機械語)まで変換したものをキャッシュして再利用します。

ジャストインタイム(JIT)コンパイラーは、PHP8.0の標準機能として組み込まれていますが、デフォルト設定で無効化されているため、パラメータを設定することにより有効化します。

パラメータ設定の一覧を下表に記載します。

パラメータ設定値例説明
max_execution_time300スクリプトがパーサにより強制終了されるまでに許容される最大の 時間を秒単位で指定します。
All-in-One WP Migrationで必要
max_imput_time300スクリプトが POST、GET などの入力を パースする最大の時間を、秒単位で指定します。
All-in-One WP Migrationで必要
memory_limit256Mスクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。
All-in-One WP Migrationで必要
post_max_size5120MPOSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。
All-in-One WP Migrationで必要
upload_max_filesize5120M1つのファイルの最大ファイルサイズ。
All-in-One WP Migrationで必要
opcache.jit_buffer_size128Mコンパイル済みのJITコードを保存する共有メモリの合計サイズ。 0 を指定すると、JIT が無効になります。デフォルト値が0のため、JITを有効化するには本パラメータ設定が必要です。

ここまでの設定を実施したら、[保存]をクリックして、PHPプロファイルの作成を完了させます。

3.WebサイトへのPHP8.0の設定

[Web Station]>[Webサービスポータル]で、対象のWebサイトのポータルを選択し、[編集]をクリックします。

仮想ホストを編集]ダイアログにて、[Backend]タブをクリックし、スクリプト言語の設定:PHPにて、プルダウンメニューから「2.PHP8.0のプロファイル設定」で作成したプロファイルを選択します。

保存]をクリックして、WebサイトへのPHP8.0設定を完了させます。

設定完了後、Webサイトの動作に問題がないかを、一通り確認して、問題なければ完了です。

動作に問題があった場合は、設定したプロファイルを前のものに戻します。

運用中のWebサイトにいきなり適用するのは影響が大きいため、できれば、運用中のサイトのテスト用サイトを構築して、事前にテスト用サイトで検証することをお勧めします。

テスト用サイトの構築と運用については以下の記事にて紹介しておりますので、こちらも参考にしてみてください。

4.まとめ

Synology DSMにて新たにリリースされたPHP8.0を本Webサイトに適用した経緯について紹介しました。

特にトラブルもなく運用していますが、記事中にも紹介している通り、テスト用サイトで事前に一通りの動作検証をおこなってから本番サイトに投入するという手順で実施しました。

PHP8.0で新規追加されたジャストインタイム(JIT)コンパイラーについては、有効化・無効化で目に見えての性能向上は見られませんでした。(一応、有効化設定のままで運用継続は行っています。)

以上、最後まで記事を読んでいただき、ありがとうございました。