BlueOnyx 5210RでPHP 8.5を使う裏技【Remiリポジトリ + ソケット差し替え】
WebLinuxTips

BlueOnyx 5210RでPHP 8.5を使う裏技【Remiリポジトリ + ソケット差し替え】

目次
  1. はじめに
  2. 環境
  3. 手順
  4. 注意点
  5. まとめ

はじめに

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 makecache

2. 既存のphp.iniをバックアップ

何かあったときに戻せるように、元のphp.iniを保存しておきます。

# cp /etc/php.ini /etc/php.ini.org

3. PHP 8.5モジュールの有効化

利用可能なPHPモジュールを確認してから、Remi 8.5を有効にします。

# dnf module list php
# dnf -y module reset php && dnf -y module enable php:remi-8.5

4. 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-opcache

5. バージョン確認

既存の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-fpm

7. PHP-FPMのソケット設定

デフォルトのソケット設定を確認します。

# grep "^listen =" /etc/opt/remi/php85/php-fpm.d/www.conf
listen = /var/opt/remi/php85/run/php-fpm/www.sock

BlueOnyxの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.sock

8. 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.conflisten.ownerlisten.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サイトで試してから他のサイトに展開するのがおすすめです。