サイトリニューアルに伴うWordPress移管(お引っ越し)

お題

サイトリニューアルをするからテスト用サブドメインで作ってた環境を本番ドメインに移管して

手順

いろいろ調べてみたらこんな感じみたい。
  1. 現行の本番環境のファイル・DBのバックアップを取る
  2. テスト用サブドメイン環境のファイル・DBのバックアップを取る
  3. 引っ越し先に合うようにテスト用サブドメイン環境から取得してきたファイル・DBをカスタマイズする
  4. 本番環境にテスト用サブドメイン環境のファイルを移植する
  5. 本番環境にテスト用サブドメイン環境のDBをインポートする

やり方

1.現行の本番環境のファイル・DBのバックアップを取る

WordpressサイトからWordpressサイトへのお引っ越しでバックアップを取る必要があるのは、独自にカスタマイズした部分になるので、ログインやDBへの接続情報が入っているwp-config.php、wp-contentフォルダ配下にあるthemes、plugins、uploadsフォルダをローカルにコピーしておく。 次にDBのバックアップは設置サーバにインストールされているphpMyAdminを使ってエクスポートする。 データベースに含まれる全データテーブルを対象に、hetemlの例で言えば、以下の設定項目にチェックを入れておくとよい。
  • 構造とデータ
  • DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT コマンドを追加する
  • CREATE PROCEDURE / FUNCTION / EVENT コマンドを追加する
  • CREATE TABLE オプション: IF NOT EXISTS
  • CREATE TABLE オプション: AUTO_INCREMENT
  • 逆クォートでテーブルやカラムの名前を囲む
    (特殊な文字やキーワードを含むカラム名やテーブル名を保護します)
  • 16進表記でバイナリカラムをダンプする
  • TIMESTAMPのカラムをUTC(協定世界時)でダンプする
  • エンコーディングへの変換:なし
  • — ここからは実際にはデフォルト値を使ってやったけれど、 —
    — 問題が発生した反省から、こうの方がいいんではないかなぁという予想 —
  • CREATE DATABASE / USE コマンドを追加する
  • 挿入前にテーブルを空にする
  • データをダンプするときに使うコマンド:REPLACE

2.テスト用サブドメイン環境のファイル・DBのバックアップを取る

現行の本番環境のバックアップと同様にしてバックアップを取ればOK

3.引っ越し先に合うようにテスト用サブドメイン環境から取得してきたファイル・DBをカスタマイズする

テスト用サブドメイン環境から取得してきたファイルやDBの中にはテスト用サブドメイン名が記述されている箇所が多くあり、これをそのままインポートしてもリンクやファイルパスの指定が正しくできずに画像が表示されなかったり、jsの機能が正しく動作しなかったりといった不具合が発生してしまう。 なので、秀丸エディタなどのテキストエディタ(Windowsのメモ帳はNG)を使って旧ドメイン名の記述を引っ越し後に不具合が出ないように一括置換して書き換える。 テスト用サブドメイン名 → 引っ越し先の本番環境のドメイン名 テスト用サブドメイン環境で利用していたDB名やDBのパスワード → 本番環境のDB名やDBのパスワード ※ファイル書き換え後、保存をするときにはBOMなしのUTF-8形式で保存すること。

4.本番環境にテスト用サブドメイン環境のファイルを移植する

2で取ったバックアップのファイルをFTPソフトなどを使って本番環境に上書き保存する。 なお、現行の本番環境に引っ越し後には使わないものが多いときは一旦現行のものを削除してからコピーすると不要なファイルが残らずに便利。

5.本番環境にテスト用サブドメイン環境のDBをインポートする

本番環境ドメインが設置されているサーバにインストールされているphpMyAdminを使ってインポートする。

問題発生

  1. ファイルを上書き保存したけれど、使わないファイルが多数残っている
  2. DBインポート時にエラー #1046 – No database selectedが発生してインポートできない
  3. インポート成功したけど、現行の本番環境のデータが残っている

解決方法

ファイルを上書き保存したけれど、使わないファイルが多数残っている

これは単純に「重複しているものは上書き保存するよ」つまり、重複していなければそのまま保存するし、元々あったファイルは重複していない限りはそのまま残るよってこと。 なので、一旦wp-config.phpや移植対象のフォルダを削除してから保存する。

DBインポート時にエラー #1046 – No database selectedが発生してインポートできない

これはインポートする際に使うDBを明示的に指定していないから発生するエラーなので、「DROP TABLE IF EXISTS wp_commentmeta ;」の行よりも前に以下のSQL文を追加する。 USE 引っ越し先サーバのDB名;

インポート成功したけど、現行の本番環境のデータが残っている

前述のエラー2つを処理して、インポート自体は成功したものの、チェックをしてみるともともと本番環境にあったデータがデータベース内に残っていた。 今回は一旦引っ越し先の全データテーブルを空にしてから再度インポートをして対応したが、エクスポート時のオプションで未選択だったものに「挿入前にテーブルを空にする」と「データをダンプするときに使うコマンド:REPLACE」(こっちのオプションはデフォルトではINSERTになっている)があったことを思い出す。 今回の対処法の「全データテーブルを空にしてから」は「挿入前にテーブルを空にする」のオプションにチェックをすることでやってくれる気がする。 また、一旦挿入前にテーブルを空にしておけばデータダンプ時にINSERT(挿入)でも問題ないとは思うけど、データダンプをするときに使うコマンドをREPLACE(置換)にしておけば、データが残っていても同じ名前のデータテーブルがあったら古いものは削除して新しいものに置き換えてくれるはずなので、「データをダンプするときに使うコマンド:REPLACE」にしておけば安心な気がする。 (実際には試してないからダメかもしれんけど。)

まとめ・ポイント

  • FTPソフトでファイルをダウンロードするときには2バイト文字が文字化けしないように設定をしておくことが大事
  • MySQLの勉強した方がいい
  • (SQL命令の意味くらいは知っておいた方がエクスポート・インポートするときのオプションを正しく選択できる可能性が高まるなと。)
The following two tabs change content below.

Web勉強中おじさん

最新記事 by Web勉強中おじさん (全て見る)

0