どうもAPCuの魅惑にやられた私です。
CoreServerでphpinfo();
で現状を確認すると--enable-apcu
してくれてるがAPCuモジュールは(PHP 7.1以外)無い。残念。
先月のメンテでPHP 8.0が追加されたが相変わらず7.1が標準。もろもろの拡張モジュールも無い。
置き換えれば7.0、7.2、7.3、7.4でも使えます。多分XREAでもいけるかな。
それ含め自分で行って下さい。
CoreServerは先のリニューアル(2022年5月~6月頃)によって全てのPHPでAPCuが使えるようになってます。この作業は不要です。
準備
サイト設定は後でも良いが、コントロールパネルからPHPのバージョンを8.0に変更することを忘れずに。
- APCu - https://github.com/krakjoe/apcu/releases
最新版リリースをダウンロードして解凍しておく。 - WSL2 Ubuntu 16.04
ビルド環境が整えればmacOSでもCentOSでも好きなので構わないが本記事は上記のOSの手順で行う。
既にUbuntu 16.04はサポート終了してます。記事は古くなっても更新しないので、その点置き換えて読んで下さい。
Ubuntu 16.04だとPHP 7.0までしか無いのでPHP PPAリポジトリを追加する必要がある。既に追加済みなら次回から不要な作業。参考:https://computingforgeeks.com/how-to-install-php-on-ubuntu/#h-install-php-7-4-on-ubuntu-18-04-16-04
追加成功ならコマンドsudo apt install php8.0-dev
でインストールが始まる。バージョンにあったphpize
があれば良いのであとで不要になったら消しても良い。
ビルド
解凍したapcu-*.*.*
フォルダをShiftキー押しながら右クリック
↓
「Linux シェルをここに開く」
でシェルが開くので便利だ。
あとは以下のコマンドを順に打っていく。make test
は保険なので要らなかったら飛ばしても良い。
phpize ./configure --enable-apcu make make test
全てが成功した感じならフォルダ内にmodules
の中にapcu.so
ファイルがある。
CoreServerに追加する
サーバーにはFTP接続でも良いが、なるべくならSSH接続の方が好ましい。
一応モジュール用のディレクトリを作成しておく。
今回はホームディレクトリに/virtual/<MY NAME>/php80-modules
を作成する。
php80-modules
に移動して作ったapcu.so
ファイルをぶち込む。
/virtual/<MY NAME>/public_html/.fast-cgi-bin
に移動してphp80.ini
をエディタで開いて次を足しておく。
extension = "/virtual/<MY NAME>/php80-modules/apcu.so" apc.enabled = 1 apc.shm_size = "2048M" apc.mmap_file_mask = "/tmp/apc.XXXXXX"
apc.enabled
はデフォルトONなので省略しても良い。
その他はCoreServerが7.1用で使用してた設定なのでそのまま流用した。
より詳しい設定を知りたいなら本家行こう。参考:https://www.php.net/manual/ja/apcu.configuration.php
あとはphpinfo();
で確認して「APCu Support」がEnabled
になっていたら成功だ。
ころころ
反映されないケースがあった。単にPHPのFastCGIが再起動条件を満たしてないのでPHPプロセスが常駐するからだ。
しばらく時間をおくか、ps -ux | grep /usr/local/bin/php80
コマンドを打って、「STAT」がSs
となってるプロセスIDをkill
コマンドで無理矢理潰す。