HP再生請負人に一本のTEL。
ご無沙汰しております!
当社のサイトなんですが、サーバー業者がサーバーを引っ越してほしいと言ってきました。
サーバーが古いため、また、データセンターを移転するため、改めて準備した新サーバー閉店欲しいとのことですが、技術的な面のことは全くわからないので。。。
移転の手続きお願いできませんか?
と。
じつは、こちらのお客様、かれこれ10年前にHPを納品させていただいたお客様。
当時のWordPressはバージョン3.1でした。
サーバー移転のご依頼は大変ありがたいのですが、ここまで古いWordPressは移転の経験がないぞ??
まずは現状を確認
そもそも、なんで移転を依頼されたのか、そこを確認しました。
そうしたところ、サーバー業者の方が、現在サーバーを収容しているデータセンター自身を物理的に引っ越すそうで、そのタイミングで古いサーバーマシンは撤去して新しいサーバーマシンに切り替える予定で、その対象になっていると。
なので、移転受け入れ先サーバーを準備するので引っ越してほしい。期限は半年後ということでした。
その新しいホスティングサーバーのスペック・仕様を見て、これはそう簡単に行かないことがわかりました。
PHPのバージョン
現在お客様のWordPressは、バージョン3.1です。
よってPHPはバージョン5で稼働しています。
幸いにも今お使いのサーバーはPlesk搭載サーバーで、PHPのバージョンは5~7.4までを自由に選べるマシンでした。
現状は3.1が動いているのでPHPバージョンは5で動かしています。
まあ、これはサーバー屋さんが悪いわけではないです。PHPバージョン5はもう廃止の方向ですからね。。。
新サーバーにはPHP5は入れず、7のみの運用だそうで。
ようは、この時点で強制的にWordPressのアップデートするしかなくなりました。
WordPress3.1から5.5までアップデートできるのか?
つぎに、さすがに3.1バージョンです。
DBの構成も今のWordPressと全然違います。
また、PHPバージョンも最新のWordPressは逆にPHP5では動きませんから、少しずつアップデートしていかないと立ちいかないわけです。
さてどうしようか。
最悪のカバーとして、エクスポートプラグインを導入して(しかし、WP3.1で稼働するオールドバージョンのプラグインを探してこなければいけないのだが。。)記事や固定ページのデータをエクスポート、
新しいWPをインストールして記事や固定ページデータをインポート。メディアファイルのディレクトリ構成は昔から変わっていないので中身をそのままそっくりアップロード
これで、一応復元できるだろうという保険を掛けつつ、アップデートで処理を進められないもんか確認することにした。
PHP5から7へどこかのタイミングで変更が必要になるし、今はWP3.1なのでPHP5が動かないと困る。アップデート後はPHP5から7に変更できるのが理想的。
現状の本番サーバーはすべてをかなえる環境だけど、本番環境でアップデートして失敗したら今のサイトが動かなくなるので、データを丸コピーして私のPrivateサーバーでテストすることにした。
まずここでトラブルが発生。
データをダウンロードしてアップロード。。。この時点で動かない。。。
本番サーバーで利用できているPHPバージョンは5.3.3。しかし僕のサーバーで5.3.3というPHPバージョンは存在しない。
近いもので5.4だった。
それがダメだったのか何か現状ではわからないけど、データをそっくりダウンロードしてきてテストサーバーにアップロード。DBのデータもエクスポートしてインポートしてるので復元できているはずだけど、恐怖の真っ白画面…
なにが起きてるかもわからない。。
後でログを漁ったら、500エラー。internalerrorだ。
一旦あきらめた。こりゃダメだ。。。
FTP??もしかして…リストオプションか?
本番環境のFTPサーバーはいろいろと変な動きをしていたのは既知の問題だったのを思い出した。
簡単に言うと、.htaccessが見えないのだ。
実際は存在しているけど、FTPでは見えない。
proftpdだと、たまに起きる現象で、設定ファイルに一文追加してくれれば見えるようになるのだが、なぜか追加してくれないサーバー業者。
これは、FTPソフトのデフォルトのリストオプションコマンドの設定を変更すると実は見えるようになる。
それを思い出した。
じつは、LISTコマンドが間違っているせいでダウンロード漏れが起きていた。
正しいコマンドを選択したうえで再度ファイルをダウンロード。
しかる後にアップロード。
今度は行くだろ。うん。うまくはいったっぽいけど、なんかデータベースのエラーみたいなのが吐いてる。。。
なんだろう。。。
DBの形式の違い
本番サーバーはやっぱり結構古いサーバー。MySQLもちょっとバージョンが古い。
エクスポートしたデータのSQL文を見たら、MyISAMになってた。
テストサーバーは、mariadb10なので、InnoDB。
InnoDBのDBの中にテーブルがMyISAMが存在する何とも奇妙な状態になってた。
もしかして。。。これじゃね?
ってことで、すべてInnoDBにして再展開。
これでどうだ。。。。
動いた!!!!!!
まずは、サーバーの移転はできた。
次は最新のWPまでアップデートできるかどうかだ。
まず、WPのオートアップデートはWPバージョン5くらいまで上げないとオートアップデートにはならない。
今3.1なのでWordPressの公式サイトから3.2をダウンロードしてきて、アップロード。
アップロードを完了すると、DBの更新をしますかという画面が。よしよし。これだよ。
一連のアップデート作業を行うことでWPは3.2にアップデート。
多分小数点バージョンはいくつか飛ばしながらでも大丈夫そうだけど、安全に安全を重ねて1個ずつアップデート。
3.1、3.2,3,3.。。。3.9
↓
4.0.4.1.。。。
↓
5.0.5.1.。。。5.5
というながれで。
実に20回以上のアップデート処理。
5.2だったかな?ここで、PHPのバージョンの警告がダッシュボードに表示。
よし。ではここで、PHPを7にしてみよう。
とりあえず、バックヤードはエラー無く動いてる。
それと同時にいよいよダッシュボードでアップデートがボタンで行えるようになった。
これで、一気に5.5までアップデートした。
少なくとも、バックヤードは問題なく動いてる。
プラグインも一気にアップデート。
よし、少なくともWPは稼働してる。
では、表面にアクセス。
真っ白。。。
だよな。。。テーマがPHP7に対応してないわな。。。
一旦テーマをWP初期のテーマにしてみる。こちらにすることで問題なく動いた。
一度先方様に連絡。
まずはアップデートはできたこと。現在お使いのテーマはバージョンが古くこのままでは使えないこと。
よって、今後WPのバージョンに合わせてテーマもアップデートがリリースされるであろうテーマに切り替えることが良いであろうことを説明。
本当はサイトのリニューアルはもうちょっと先方様が落ち着いてからやりたいのだが、デザインだけはリニューアルしないといけないかもしれないと説明。
先方様からは動かないものは仕方がないのでデザインだけリニューアルしてくれと依頼を受けました。
しかし、納得がいかない。
テーマと言ってもそれほどごつい機能がついたテーマではなくいたってシンプルなものを使っていたので、動かなくなることにどうにも納得がいかない。
納得がいかなさ過ぎて夜眠ることもできませんでしたw
翌朝早速テスト。
WPをデバッグモードにして、再度動かなかったテンプレートを設定、この時点でWPは致命的なエラーが出てるといってHTML出力を拒みます。
しかしデバッグモードにするとそのエラーがディスプレイに表示されます。
おおっ出た。何々、ereg関数は非推奨だから。。。
えっ。。。これがエラーなの?
そうです。PHP7からは置換関数のeregは非推奨となり、preg系の置換関数を使うように推奨されました。
とりあえずereg関数をPHP7推奨の置換関数へと置換。
おお。。。。。。普通に動いた。。。。
で、そもそも何を置換するのに使ってたのか。。。ああ。。。なるほど
当時、最新バージョンになるIE7が出てて、IE7は致命的な欠陥があって、HTMLのヘッダをうまく読み込めないという問題があって、それを回避するためのコードが入ってる。
いらねいらねw
IE7はもう無視していい時代でしょう。
ってことで、この部分のコードをコメントアウト。
問題なく表示できた!
よっしゃ。良いぞ。いい感じだ。
早速先方に連絡。
朗報です。従来お使いのデザインテーマはひと手間加えたらとりあえず動きました。
サイトのリニューアルはまたの機会にして、今回は移転だけやるほうがいいと思います。
先方から連絡。
そうだね。今、旧デザインで動くのなら旧のままで行きましょう。それでは移転手続ききお願いします!
サーバー業者の選定
今回引っ越しする際に、ホスティング業者をどうするか一考願った。
普通ならあまりこのようなことをしないのだが、現在の業者さんは少しお高いことと、SSL証明書について無料のものが使えないことにつき証明書の持ち込みができなさそう、というかコメントがないので確認しなければいけない。
同じようにMySQL(mariadb)のバージョンやPHPのバージョン、nginxの使用可否など一切わからない。
わからないのに少し高いので、ちょっとどうなの?というふうに感じるので、一度考えてみられたらいかがかと通達。
WordPressで、メールアカウントの数も大体決まっているのでお安い一般的なサーバー業者でも十分な気がしますよとアドバイス。
しかる後に、私が指定したサーバーへ契約を切り替えることを決断していただきました。
これで、WordPress3.1から、最新の5.5(記事執筆中に5.6に上がりましたw)へしたうえで、別業者のサーバーに移動するという荒業で移転完了いたしました。
移転後は最適化処理を
スペックもWordPressに特化しているようなサーバーに移転したので十分高速化しているのですが、もっともっと高速化を。
- CSSやJavaScriptの遅延ロード
- 画像の遅延ロード
- Webp化
- SSL化
- キャッシュ保持
- wp-cronの無効化と、LinuxCron化
と、通り一遍ですが最低限の高速化を果たす。
表示速度は従来から見ても10倍以上パフォーマンスアップ。
あとは、先方様が落ち着いたタイミングで新しいデザインへの移植で完了となるでしょう。