WordPressで使用中のプラグインがPHP8でしか動作しなくなったので、バージョンアップすることにした。ただ、自分の不注意などもあって作業中に色々とハマったので、備忘と自戒のために記録を残す。
作業環境は以下のとおり。
- OS: Ubuntu 20.04 LTS
- PHP: LSPHP 7.4
- OpenLiteSpeed: 1.7.17
- WordPress: 6.2.2
lsphp82のインストール
OpenLiteSpeedで使ってるPHPはLSPHPという独自のPHPなので、これをバージョンアップする。
参考にしたサイトのコマンドをほぼそのまま実行。ただ、作業時点ではlsphp82-ioncubeとlsphp82-jsonが存在しなかったのでインストール対象から除外した。
apt install -y lsphp82 lsphp82-apcu lsphp82-common lsphp82-curl lsphp82-dbg lsphp82-dev lsphp82-igbinary lsphp82-imagick lsphp82-imap lsphp82-intl lsphp82-ldap lsphp82-memcached lsphp82-modules-source lsphp82-msgpack lsphp82-mysql lsphp82-opcache lsphp82-pear lsphp82-pgsql lsphp82-pspell lsphp82-redis lsphp82-snmp lsphp82-sqlite3 lsphp82-sybase lsphp82-tidy
OpenLiteSpeedの管理画面にログイン後、サーバー設定>外部アプリに遷移して、アドレスが「uds://tmp/lshttpd/lsphp.sock」の項目を編集。
「コマンド」の項目を以下のとおり書き換えて保存。
- 修正前: lsphp74/bin/lsphp
- 修正後: lsphp82/bin/lsphp
「緩やかな再起動」ボタンをクリックすると、設定が反映される。
WordPressの管理画面から、ツール>サイトヘルス>サーバーに遷移して、PHPバージョンを確認する。8.2系に変更されていればOK。
lsphp74をpurgeしたらopenlitespeedが消えた
問題はこのあと。この時点で手を止めればよかったのに、不要になったlsphp74を削除しようと思って以下のコマンドを実行した結果、lsphp74と依存関係にあったopenlitespeedパッケージまで消えてしまった。
$ sudo apt purge lsphp74*
削除前の確認で気付けよって話なのだが、いつもの癖であまり深く考えずにYを押してしまった。反省。
慌ててopenlitespeedを再インストールしたものの、WordPress用の設定が諸々消えてしまい、最初から設定し直す羽目に。しかも、もともとGCEが提供する初期設定済のサーバを使っていたため、どこになにを設定をすればよいのか全くわからない。
ググりまくって何とか1時間ほどかけて復旧したけど、かなり面倒だった。というわけで、以下は愚かな自分がまた同じ過ちを犯したとき用の備忘メモです。
バーチャルホスト
基本タブ。値のある項目は基本的にどれも重要。また、以前の設定ファイルが消えてなければ、いったんこの項目だけ保存して再起動すれば元に戻るかも。
一般タブ。「php.ini Override」の2行はアップロードサイズの上限の書き換え用。ただ、他にも変更する方法はいくつかあるみたい。
リスナー
概要タブ。ポート毎に設定する。80はほぼ設定ないので443について言及する。
443ポートの一般タブ。セキュアの項目とバーチャルホストマップの設定が重要。(バーチャルホストマップは80ポートでも必要)
443ポートのSSLタブ。SSLの秘密鍵と証明書のパスを設定する。
おわりに
aptのremoveやpurgeは軽い気持ちでやっちゃだめ。