恐ろしく古いバージョンを最新バージョンに

恐ろしく古いバージョンを最新バージョンに
Image by Glenn Carstens-Peters from Pixabay

2020.12.17(更新日:2020.12.20)

ご無沙汰クライアント様のサイトが長期に渡りバージョンアップしていなく、非常に危ない状態なので作業することになった際の備忘録。調べるとバージョン3.8.1… 
現在(2020.12)WP5.6、PHP7.4が最新なので、非常に不安ではあったが何とかしてみた。

この記事は1年以上経過しています。内容的に古い場合があります。

まずは条件・問題点を洗い出し

幸いにしてまだ運営されていたので、管理画面には入れる。
カスタム投稿も使っており、トリッキーな設定などしていないか心配だったが、当時はそこまで凝ってなかったのでひとまず安心。以下が今回の条件と問題点。

  • サーバー側のPHPバージョン設定がドメインごとではなく、一括設定(涙)
  • uploadディレクトリ(画像ファイル)が2GB近い
  • データベースのバージョンもこの際最新に
  • PHP5.4から7.4までのバージョンアップをどう行うか
  • そもそも古すぎてぶっ壊れるんじゃない?という心配

PHP7頃からコードの扱いが変わった部分があり、エラー多発も懸念される。
また公開中のサイトのため、上記の条件からPHPバージョンをクライアントのサーバーで上げることが出来ない。

複製サイトで対応する

これを考えると「複製サイト」を作り、完全体になったところで移植が安全。たまたま同じサーバーの同じランクのものを使用していたので、苦肉の策で自前のレンサバで行うことに。
いつもは複製サイトを作成する際「All-in-One WP Migration」であっという間に完結するのだが、総重量2GB。
サーバー設定でアップロードサイズを変更すれば行ける?かもしれないが、さすがに諦めた。
加えてインストールも無理っぽいので、All-in-One WP Migrationでラクラク処理の夢も消えた。

まずはバックアップ

たまたま「BackUpWordPress」を使用していたので、バックアップデータをダウンロード。
もしこの手のプラグインを使用してなければ、FTPでwordpressディレクトリごとダウンロード。さらにphpMyadminからsplファイルをエクスポートでも大丈夫。
さらにwordpress3.8.1が奇跡的に(?)公式サイトのリリースにあったので、これもダウンロード。
兎に角「まんま同じサイト」構築をまずは行う。

複製wordpress構築

データベースのバージョンは最新で作成

単純に下げることが出来なかったので「Myspl5.7」でデータベースを作成。当然古いサイトのバージョンはもっと下。どっちにしろ最新の方がいいのでこれで試す。

PHPのバージョンを下げる

複製元は5.4。これに合わせてサーバーのPHPバージョンを下げる。同サーバー内の構築済のサイトは、恐ろしいので終了するまで見ないこととする。

wordpress3.8.1をインストールしwp-content内を入れ替える

公式サイトからダウンロードしたファイルでバージョン3.8を新規インストール。
以外とすんなり終了。データベースの不具合もなし。
次にFTPにてファイルを入れ替え。まるまる入れ替えても大丈夫かもしれないが、長年の運営で本体の破損等あるかもしれないのでバックアップしたファイル類からwp-content内にオリジナルテーマとuploadsディレクトリ、pluginsディレクトリの古いプラグインらをアップロード。

phpMyadminでバックアップしたsplファイルをインポート

インポートはすんなり終了。ここで変更しなければならない部分がある。

phpMyadminよりデータベースのwp_optionsテーブル内の以下内容を変更する。

siteurl 複製サイトのURLに変更(WordPressコアファイルが置かれている位置)
admin_email インストール時やエラー時にメール通知されてしまうので必要があれば変更
home 複製サイトのURLに変更(WordPressのトップページURL)

これらを変更しないと複製サイトではなく、現行の運営サイトにアクセスされてしまうので注意。
また今回はログインのIDやパスワードは現行のサイトと同じものを使うので変更しないものとする。

後は複製サイト管理画面にログインし、一通りチェックして第一段階終了。

最新版へバージョンアップ

さすがにここまでバージョンの差があるとwordpressのコア部分の差分もそうだが、オリジナルでカスタマイズしている部分もあるので「いきなり5.6」にするのは怖い。
ちょっとづつバージョンアップ出来れば、諸々確認しながら変更を出来るので安全なのだが…。
最悪FTPでwordpressのコア部分を、ちまちま入れ替えでも行けるとは思うが「う〜ん面倒」。

そこで調べると「ダウングレード」情報はあるが「バージョンアップ」は見つからない。
ところが「ダウングレードってどんなもん?」とさらに調べると…行けそうなものを発見。

WP Downgrade | Specific Core Version

WP Downgrade | Specific Core Version」は指定したバージョンにアップデートしてくれるスグレモノ。
「Downgrade」と言う名の通り、本来ダウングレードをするために使用するらしいが、詳細を見ると「上げ下げ自由なんじゃね?」と言うことでさっそくトライ。

超簡単な設定からwordpressバージョン4.1を指定して設定し更新…成功!
なのでwordpressバージョン4.9まで確認しながらちまちまバージョンアップ緩行。

ただサーバーなのか、ネット環境なのか、ブラウザのせいなのかわからないが、続けて行うと失敗する。
そんな時はPCやブラウザをリスタートすれば問題なく「ちまちまバージョンアップ」出来た。

PHPのバージョンアップとwordpressの調整

確かwordpressバージョン5.0か5.1からPHP7系統は使えたはずなので、サーバーでPHP7.3に設定。
これでバージョン5.4までバージョンアップをした。
さらにバージョン5.5からPHP7.4に設定を上げて5.6までバージョンアップを続ける。
この段階で以下に留意。

  • ブロックエディタに変わるので「Classic Editor」プラグインをインストール有効化
  • wordpress5.5より「jquery-migrate」がコアにないので必要なら読み込む
  • インストール済のプラグインを確認しながらバージョンアップ
  • インストール済のプラグインが長年更新されてないようなものなら代替えを検討

jquery-migrate対策に関しては「Enable jQuery Migrate Helper」なんてプラグインもあり。
自分はfunctionsで処理した。
これを怠ると管理画面で古いJSコードで処理している部分があると動かなくなる可能性あり。
もちろん何の不具合もなければ、jquery-migrate対策は必要なしです。

最終チェックし複製サイトアップデート完了

カスタマイズしていた部分の不具合はあったが、なんとか修正して完了。
ひょっとしたら「いきなり最新バージョン」でも出来るのかもしれないが、いかに複製サイトだからと言っても、また再構築するハメになると効率が悪い。
回りくどかったが、これで移植データ完了だ。

現行サイトの入れ替え

複製サイトのデータをFTPにてバックアップし、phpMyadminからsplをエクスポート。
現行サイトのサーバーをPHP7.4にバージョンアップし、最新バージョンのwordpressを新規でインストール。
万一のため旧サイトのデータベースとファイルはそのままにしておく。(心配性)
あとは複製サイトを作成した手順と同じで

  • 新しくインストールしたwordpressのデータベースに複製サイトのsplファイルをインポート
  • 複製サイトwordpressのwp-conentディレクトリ内のファイルを新規wordpressのwp-conentディレクトリに追加(テーマ、プラグイン、uploadディレクトリなど)

一通りチェックし、クライアント確認も出来たら旧サイトは消去しめでたく完了。

正直ここまでバージョンアップをほったらかしにすることもないと思うが、ご参考に。