PHP8.1.3でWordPressをチューニング!ImageMagickとIntlとmemcachedを有効化する
先日やっとコンパイルが成功したOpenLiteSpeed上のPHP8.1.3ですが、
WordPressのサイトヘルスチェックを見たら、
なんとオプションモジュールの「ImageMagick」と「Intl」がないと表示されていました。
WordPressのヘルスチェック画面
ちなみに、上記画像は「ImageMagick」がなく、「Intl」だけですが、
手順を試していて、このスクショを取る前に「ImageMagick」を対応させた後なので、
「Intl」だけになっています。
というわけで、今回はWordPressのチューニングと題してOpenLiteSpeedでPHP8.1.3を稼働させている際の上記オプションモジュールを追加する方法を紹介します。
PHP8.1.3にIntlモジュールを追加する方法
Intlとは?
PHP公式より引用
「国際化用拡張モジュール (これ以降では Intl と略します) は » ICU ライブラリのラッパーです。 PHP プログラマが、ロケール関連のさまざまな操作を行えるようにします。 フォーマット、音訳、エンコード変換、カレンダーの処理、 » UCA 準拠の照合順序 (collation)、 テキストの区切り、ロケール識別子やタイムゾーンや書記素を用いた操作などが可能です。」
これは簡単です、PHPの標準モジュールであってデフォルト無効化されているの、これを有効化してやれば良いのです。
手順としては前回の記事でPHP8.1.3のコンパイル方法を紹介しましたが、その際のオプションにIntlを有効化するオプションを追加するだけで対応可能です。
具体的にはコンフィグ作成時に以下のオプションを追加します。
コンフィグ作成時にオプションを追加
'--enable-intl'
したがってコンフィグ全体としては以下のようになります。(※前回のコンフィグの最後尾に追加しています。)
こちらでコンフィグを実行してから、ビルドしてインストールすればIntlモジュールは有効になります。
$ ./configure -prefix=/usr/local/lsws/lsphp81 '--with-mysqli' '--with-zlib' '--enable-gd' '--enable-gd-jis-conv' '--enable-shmop' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-mbstring' '--with-iconv' '--with-pdo-mysql' '--enable-ftp' '--with-curl' '--enable-soap' '--enable-xml' '--with-openssl' '--enable-bcmath' '--enable-exif' '--with-jpeg' '--with-freetype' '--with-gettext' '--with-bz2' '--enable-litespeed' '--enable-opcache' '--with-zip' '--with-xpm' '--enable-intl'
$ make
$ sudo make -k install
PHP8.1.3にImageMagickモジュールを追加する方法
ImageMagickとは?
PHP公式より引用「Imagick は、ImageMagick API を使用して画像の作成や修正を行う ネイティブ PHP 拡張モジュールです。ImageMagick は、ビットマップ画像の作成や修正を行うソフトウェア群です。 さまざまな (100 をこえる) 形式の画像の読み書きや変換に対応しており、 DPX や EXR、GIF、JPEG、JPEG-2000、PDF、PhotoCD、PNG、Postscript、SVG そして TIFF といった形式を扱うことができます。」
こちらは上記Intlのように標準モジュールではなく、拡張モジュール(extension)になります。
そのため標準モジュールの場合とは手順が異なります。
拡張モジュールのソースコードをダウンロードして、コンフィグ実行、コンパイルして、
作成された拡張モジュールを指定のフォルダに移動し、それをphp.iniに記述するという流れになります。
ImageMagickのダウンロード
以下のサイトから最新版をダウンロードします。(※2022年2月26日現在では3.7が最新版)
https://pecl.php.net/package/imagick
$ wget https://pecl.php.net/get/imagick-3.7.0.tgz
ダウンロードしたら解凍します。
$ tar xvzf imagick-3.7.0.tgz
ディレクトリに入ります。
$ cd imagick-3.7.0
上記ディレクトリから移動せず、先日インストールしたPHP8.1.3のbinに含まれている、「phpize」を実行します。
$ /usr/local/lsws/lsphp81/bin/phpize
すると以下のような感じで表示されます。
Configuring for:
PHP Api Version: 20210902
Zend Module Api No: 20210902
Zend Extension Api No: 420210902
次に以下を実行します。
$ ./configure --with-imagick=/usr/local/lsws/lsphp81 --with-php-config=/usr/local/lsws/lsphp81/bin/php-config
終わったら、ビルド、インストールします。
$ make
$ sudo make install
PHP8.1.3にmemcacheモジュールを追加する方法
Memcacheとは?
PHP公式より引用
「Memcache モジュールは、memcached に対する手続き型および オブジェクト指向のインターフェイスを提供します。これは非常に効率的な キャッシュデーモンで、動的な web アプリケーションでの データベースの読み込み量を減らすように設計されています。」
memcacheもImagiMagickと同様に標準モジュールではなく、拡張モジュールとなります。
そのため、ImageMagickとほぼ同様の手順で追加することになります。
Memcacheのダウンロード
以下のサイトから最新版をダウンロードします。(※2022年2月26日現在では8.0が最新版)
https://pecl.php.net/package/memcache
$ wget https://pecl.php.net/get/memcache-8.0.tgz
ダウンロードしたら解凍します。
$ tar xvzf memcache-8.0.tgz
ディレクトリに入ります。
$ cd memcache-8.0
上記同様、ディレクトリから移動せず、先日インストールしたPHP8.1.3のbinに含まれている、「phpize」を実行します。phpizeを実行します。
$ /usr/local/lsws/lsphp81/bin/phpize
次に以下を実行します。
$ ./configure --enable-memcache=/usr/local/lsws/lsphp81 --with-php-config=/usr/local/lsws/lsphp81/bin/php-config
終わったら、また同様にビルド、インストールします。
$ make
$ sudo make install
追加したモジュールをphp.iniに追加する
これで最後の手順です。
上記でコンパイルして生成した拡張モジュールを使えるように設定します。
以下のファイルを開き、今回追加したモジュール名をそれぞれ最後尾に記載します。
また、opcache.soの記載がなければここに記載することで有効化できます。
php.iniを編集
$ sudo vi /usr/local/lsws/lsphp81/lib/php.ini
extension=imagick.so
extension=memcache.so
保存して終了したら、OpenLiteSpeedを再起動で完了です。
phpinfoで確認してみましょう、無事に以下のように追加されて表示されていればOKです。
おまけ「opcache.so」を追加する
OPcacheとは?
PHP公式サイトの説明より引用
「OPcache はコンパイル済みのバイトコードを共有メモリに保存し、PHP がリクエストのたびにスクリプトを読み込み、パースする手間を省くことでパフォーマンスを向上させます。」
というわけで高速化されるなら有効化しましょう。
ちなみにコンフィグ記述に含めている「–enable-opcache」ですが、
これだけでは有効にならず、php.iniに以下も記述しないと有効化できないようです。
zend_extension=opcache.so
有効化されたかは以下コマンドで確認できます。
$ /usr/local/lsws/lsphp81/bin/lsphp -v
PHP 8.1.3 (litespeed) (built: Feb 26 2022 07:44:50)
Copyright (c) The PHP Group
Zend Engine v4.1.3, Copyright (c) Zend Technologies
with Zend OPcache v8.1.3, Copyright (c), by Zend Technologies
上記にZend OPcacheが記載されていれば有効化はOKです。
まとめ
今回はOpenLiteSpeed上でPHP8.1.3を稼働させている場合のIntlモジュール、ImageMagickモジュール、memcacheモジュールの有効化する方法について紹介しました。
何かの参考になれば幸いです。