えむのメモして満足するLog

どうも私です。

CoreServerのPHP 8でAPCuを使いたい!

どうもAPCuの魅惑にやられた私です。

CoreServerphpinfo();で現状を確認すると--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に変更することを忘れずに。

既に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になっていたら成功だ。

ころころ

反映されないケースがあった。単にPHPFastCGIが再起動条件を満たしてないのでPHPプロセスが常駐するからだ。

しばらく時間をおくか、ps -ux | grep /usr/local/bin/php80コマンドを打って、「STAT」がSsとなってるプロセスIDをkillコマンドで無理矢理潰す。