Luxeritas + WordPress 移行作業まとめ(Lightsail Native / PHP8.2)

概要

旧 Bitnami WordPress 環境から、AWS Lightsail Native 環境へ移行を実施。

目的:

  • PHP 8.1 EOL 脱却
  • Luxeritas fork版の適用
  • Bitnami依存脱却
  • 今後の保守容易化
  • PHP8.2/8.4時代への移行準備

最終構成

インフラ

  • AWS Lightsail
  • Debian + Apache2
  • PHP 8.2.30
  • Let’s Encrypt (certbot)

WordPress

  • Luxeritas Child Theme
  • Luxeritas fork版適用済
  • All-in-One WP Migration で移行

実施内容

1. 新Lightsail Native環境構築

実施

  • Lightsail Native WordPress環境作成
  • Apache2/PHP確認
  • SSH接続確認
備考

Bitnami Blueprint が廃止されていたため、Native環境へ変更。


2. WordPressデータ移行

実施

  • All-in-One WP Migration export
  • 新環境へ import

結果

  • 投稿
  • 固定ページ
  • 画像
  • 設定

正常移行。


3. Luxeritas fork版適用

実施

fork版 Luxeritas を適用。

確認

  • 投稿表示正常
  • 管理画面正常
  • Customizer正常

4. REST API / JSONエラー対応

発生事象

投稿保存時:

更新に失敗しました。返答が正しい JSON レスポンスではありません。

原因

REST API 404。

/wp-json/

が Not Found。

対応

WordPress 管理画面:

設定 → パーマリンク → 変更を保存

結果

REST API復旧。

投稿保存正常化。


5. Ping Optimizer問題切り分け

症状

  • JSONエラー
  • Deprecated大量発生

原因

Ping Optimizer が PHP8系で不安定。

対応

停止。

結果

安定化。


6. Lightsail メモリ不足対応

症状

  • timeout
  • UPSTREAM_ERROR[515]
  • Lightsail status check error

原因

メモリ不足。

Mem: 447MB
Swap: 0

対応

2GB swap追加。

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

結果

安定化。


7. HTTPS / SSL対応

実施

certbot導入。

sudo certbot --apache

発生問題

certbot install失敗:

Could not find a vhost with a ServerName

原因

Apache VirtualHost に ServerName未設定。

対応

000-default.conf

ServerName blog2020.iwadjp.com
ServerAlias www.blog2020.iwadjp.com

default-ssl.conf

ServerName blog2020.iwadjp.com
ServerAlias www.blog2020.iwadjp.com

Apache global ServerName設定

echo "ServerName blog2020.iwadjp.com" \
| sudo tee /etc/apache2/conf-available/servername.conf

sudo a2enconf servername
sudo systemctl reload apache2

certbot install

sudo certbot install --cert-name blog2020.iwadjp.com

結果

Let’s Encrypt 正常導入。

  • HTTPS正常
  • 鍵アイコン正常

8. Mixed Content / IP直参照対応

症状

Chrome Console:

ERR_CERT_COMMON_NAME_INVALID
Mixed Content
SSL_PROTOCOL_ERROR

原因

Luxeritas生成済JSに新IP直参照が残存。

対象:

wp-content/themes/luxeritas/js/luxe.min.js
wp-content/themes/luxeritas/js/ladmin.min.js

対応

URL置換。

sudo sed -i ...

結果

  • Mixed Content解消
  • SSL_PROTOCOL_ERROR解消
  • Console赤エラー解消

9. WP-Optimize確認

状況

Page Cache は元々OFF。

debug.log内容

Undefined array key "host"
Undefined array key "HTTP_HOST"
strtolower(): Passing null ...

原因推定

  • wp-cron
  • 自動更新
  • CLI実行

時に HTTP_HOST 不在。

現状

Fatal無し。

実害なし。


最終確認結果

正常確認済

  • TOP表示
  • 投稿表示
  • AMP表示
  • 投稿保存
  • 固定ページ保存
  • Customizer
  • SMTP送信
  • HTTPS
  • REST API

debug.log最終状態

実施

sudo truncate -s 0 /var/www/html/wp-content/debug.log

結果

Fatal / Error無し。

残るのは:

Automatic updates complete

等の正常ログのみ。


現在の評価

総合

移行成功。

状態

  • 実運用可能
  • HTTPS正常
  • PHP8.2正常
  • Luxeritas正常

残課題(今すぐ不要)

優先度低

1. WP-Optimize Warning調査

現状実害なし。

必要なら後日。


2. PHP8.4対応

現在8.2で安定。

急がなくてよい。


3. preload warning除去

Chrome warningのみ。

無視可能。


4. Luxeritas最適化見直し

現状十分高速。


今後48時間の監視

推奨

tail -50 /var/www/html/wp-content/debug.log

見るもの

  • Fatal
  • Uncaught
  • Allowed memory
  • REST API error

教訓・知見

特に重要だったもの

WordPress移行で JSONエラーが出たら

まず:

/wp-json/

確認。

次に:

設定 → パーマリンク → 保存

Luxeritas最適化JSはIP直参照を持つことがある

hosts検証やIPアクセス後は注意。


Lightsail 512MB級では swap 推奨

WordPress + Apache + plugin構成では不足しやすい。


総評

Bitnami依存から脱却し、

  • Apache Native
  • PHP8.2
  • Let’s Encrypt
  • Luxeritas fork版

へ移行完了。

今後の Luxeritas / WordPress 保守継続の土台として、
かなり良い状態まで到達できた。