BlueOnyx 5210RでPHP 8.5を使う裏技【Remiリポジトリ + ソケット差し替え】
はじめに
BlueOnyx 5210Rのデフォルトで入っているPHPは7.2系。さすがにもう古すぎて、最近のCMSやフレームワークがまともに動かない場面が増えてきました。
BlueOnyxはAlmaLinux 8ベースなので、Remiリポジトリを使えばPHP 8.5を並行インストールできます。ただし、BlueOnyxの管理画面はPHP 7.3で動いているため、単にシステムのPHPを入れ替えると管理画面が壊れます。本来であればBlueOnyx Shopから有料のPHPモジュールを購入する必要がありますが、ソケットの差し替えで対象サイトだけPHP 8.5に切り替えることができます。
この記事では、PHP 8.5のインストールからBlueOnyxのサイトに反映するまでの手順と、やらかすと管理画面から設定が吹き飛ぶ罠について書きます。
環境
サーバー: BlueOnyx 5210R
OS: AlmaLinux 8ベース
既存PHP: 7.2.24(システム)/ 7.3(BlueOnyx管理画面)
目標PHP: 8.5.3(Remiリポジトリ)
手順
1. Remiリポジトリの追加
まずRemiリポジトリをインストールして、キャッシュを更新します。
# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf clean all && dnf -y makecache2. 既存のphp.iniをバックアップ
何かあったときに戻せるように、元のphp.iniを保存しておきます。
# cp /etc/php.ini /etc/php.ini.org3. PHP 8.5モジュールの有効化
利用可能なPHPモジュールを確認してから、Remi 8.5を有効にします。
# dnf module list php
# dnf -y module reset php && dnf -y module enable php:remi-8.54. PHP 8.5のインストール
powertoolsリポジトリも必要なので、有効にしてからインストールします。BlueOnyxの既存PHP 7.2を壊さないように、php85パッケージ(プレフィックス付き)を使います。
# dnf config-manager --set-enabled powertools
# dnf clean all
# dnf install --enablerepo=remi-safe,powertools,epel \
php85 \
php85-php-cli \
php85-php-fpm \
php85-php-mysqlnd \
php85-php-gd \
php85-php-xml \
php85-php-mbstring \
php85-php-opcache5. バージョン確認
既存のPHPはそのまま残っていて、PHP 8.5は別パスにインストールされます。
# php -v
PHP 7.2.24
# /usr/bin/php85 -v
PHP 8.5.3既存の7.2と共存している状態です。CLIでPHP 8.5を使いたい場合は/usr/bin/php85を指定してください。
6. PHP-FPMの起動
PHP 8.5用のFPMサービスを有効化して起動します。
# systemctl enable --now php85-php-fpm
# systemctl status php85-php-fpm7. PHP-FPMのソケット設定
デフォルトのソケット設定を確認します。
# grep "^listen =" /etc/opt/remi/php85/php-fpm.d/www.conf
listen = /var/opt/remi/php85/run/php-fpm/www.sockBlueOnyxのApacheがソケットにアクセスできるように、所有者と権限を設定します。まずバックアップを取ってから編集。
# cp -a /etc/opt/remi/php85/php-fpm.d/www.conf{,.org}
# vi /etc/opt/remi/php85/php-fpm.d/www.conf以下の項目を追加・変更します。
listen = /var/opt/remi/php85/run/php-fpm/www.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
listen.acl_users = apache設定を反映してソケットの権限を確認します。
# systemctl restart php85-php-fpm
# ls -l /var/opt/remi/php85/run/php-fpm/www.sock
srw-rw----+ 1 root root 0 2月 28 09:01 /var/opt/remi/php85/run/php-fpm/www.sockソケットの所有者がrootのままの場合があるので、apacheに変更しておきます。
# chown apache:apache /var/opt/remi/php85/run/php-fpm/www.sock8. php.iniのチューニング
PHP 8.5用のphp.iniを調整します。
# cp -a /etc/opt/remi/php85/php.ini{,.org}
# vi /etc/opt/remi/php85/php.ini以下の項目を変更します。用途に応じて値は調整してください。
memory_limit = 256M
post_max_size = 64M
upload_max_filesize = 64M
date.timezone = "Asia/Tokyo"9. BlueOnyxサイトへの反映
ここがBlueOnyx特有の手順であり、一番の罠ポイントです。
BlueOnyxは各サイトごとにsite1.sockというPHP-FPMソケットファイルを持っています。これをPHP 8.5のソケットへのシンボリックリンクに差し替えます。
# 既存のソケットをバックアップ
# mv /home/.sites/site1/wwwroot/site1.sock /home/.sites/site1/wwwroot/site1.sock.bak
# PHP 8.5のソケットへシンボリックリンクを作成
# ln -s /var/opt/remi/php85/run/php-fpm/www.sock /home/.sites/site1/wwwroot/site1.sockこれでBlueOnyxのApacheがPHP 8.5のFPMを使うようになります。
ここが最大の罠です。 シンボリックリンクの所有者を
apacheに変更しないでください。chown -h apache:apacheでapacheにしてしまうと、BlueOnyxの管理画面でWEB関連の設定(バーチャルホストの変更など)を行った際にソケットファイルが上書きされ、せっかく作ったシンボリックリンクが消えます。所有者はrootのままにしておくのが正解です。
注意点
元に戻したい場合
PHP 7.2に戻す場合は、シンボリックリンクを削除してバックアップを復元するだけです。
# rm /home/.sites/site1/wwwroot/site1.sock
# mv /home/.sites/site1/wwwroot/site1.sock.bak /home/.sites/site1/wwwroot/site1.sock複数サイトがある場合
site1の部分はサイトごとに異なります。BlueOnyxのGUI管理画面でサイトのパスを確認して、対象サイトごとに手順9を繰り返してください。
PHP-FPMの再起動後にソケット権限がリセットされる
systemctl restart php85-php-fpmするたびにソケットの所有者がrootに戻る場合があります。www.confのlisten.ownerとlisten.groupが正しく設定されていれば通常は問題ありませんが、もしApacheがソケットにアクセスできなくなったらchown apache:apacheを再度実行してください。
毎回手動で直すのが面倒なら、systemdの起動ファイルにExecStartPreを追記しておく手もあります。
# systemctl edit php85-php-fpm[Service]
ExecStartPre=/bin/chown apache:apache /var/opt/remi/php85/run/php-fpm/www.sockこれでFPMの起動前に自動でソケットの権限が修正されます。
管理画面での操作に注意
BlueOnyxの管理画面でサイトのPHP設定やバーチャルホスト設定を変更すると、ソケットファイルが再生成されてシンボリックリンクが消えることがあります。ただし、手順9でシンボリックリンクの所有者をrootのままにしておけば、基本的に上書きされることはありません。もし消えてしまった場合は、シンボリックリンクがapache権限になっていなかったか確認した上で、手順9を再実行してください。
まとめ
BlueOnyx 5210RでもRemiリポジトリを使えばPHP 8.5を既存環境を壊さずにインストールできます。ポイントはBlueOnyx固有のソケット構成で、各サイトのsite1.sockをPHP 8.5のFPMソケットへシンボリックリンクで差し替えるところ。
正直、この方法はどこにも載っていませんでした。BlueOnyxでPHPを上げたいならShopで買え、というのが公式の回答で、ソケット差し替えで動くかどうかは自分で試行錯誤して見つけた方法です。シンボリックリンクの所有者をapacheにすると管理画面で吹き飛ぶ罠も、実際にやらかして発見しました。
この方法はPHP 8.5に限った話ではなく、Remiリポジトリが対応している限り、将来PHP 8.6や9.0がリリースされても同じ手順で最新版に差し替えられます。BlueOnyx Shopの有料モジュールを待たずに、自分のタイミングでPHPを更新できるのは大きいです。元に戻すのも簡単なので、まずは1サイトで試してから他のサイトに展開するのがおすすめです。



