【お知らせ】【WordPress】週末のサイト不調の件とサーバ移転の顛末

2013年8月8日(木)深夜以降、当サイト「Telmina.com」がきわめて繋がりづらい状況になっておりました。

こちらでの報告は遅くなりましたが、11日(日)の夕方、どうにか「仮復旧」出来ました。

今回、最終的に、サイト全体を移転させるという方法で、問題を回避しました。

しかし残念ながら単純にファイルとデータベースの中身を単純に移動させておしまい、というわけには行きませんでした。

今回は突発的なトラブルであったという事情で、費用をかけないために、レンタルサーバ自体は「CORESERVER.JP」の同じプランのままとし、比較的負荷が低く、スペックもこれまで使ってきたサーバよりは良さそうなものを選びました。

今後、またサイトを別のサーバに移転させるとき、特に計画的にそれをおこなう場合に、「CORESERVER.JP」を使い続けるかどうかはわかりませんが、もしそのようになった場合や、そうならなかった場合でも今後の備忘のために、今回の顛末について軽くメモしておくことにします。

移転の手順

本当はいろいろ試行錯誤をしており、そのためにこの土日は移転作業だけでほぼつぶれてしまったのですが、それを全部書いても意味がないので、成功までの最短(?)の手順を。

なお、当サイト「Telmina.com」は、基本的には、独自ドメインを用い、ブログ・アプリケーション「WordPress」を用いて複数のブログを立ち上げ、それ以外に少数のWordPress管理外の文書類もあるという構成。今回は、一つのWordPressで複数のブログを立ち上げるという構成がネックとなり、移転に時間と手間が掛かってしまった。レアケースかもしれないが、もしかしたら私以外でも該当する方はいらっしゃるかもしんまい。

ちなみに今回、私はデータベースの中身を少々書き換えないとうまくいかなかったので、今回のメモ書きをお読みいただくにあたり、PHPとSQLの知識は必須です(すみません…)。

今回、殴り書き状態のため、後日ちゃんと清書すると思います(汗)。

  1. 移転前のサーバで、ファイル一式とデータベースのバックアップを必ずとっておく。
    • データベースについては、サーバ管理画面の「phpMyAdmin」を用いてエクスポートすること。書式は「SQL」。
      必ずメインのサイトとサブブログごとにエクスポートする 1)「wp-config.php」ファイル内の「$table_prefix」で設定した文字列(初期状態では「wp_」)で始まるテーブル群と、その後ろに数字とアンダースコア(「_」)が続いているテーブル群を数字ごとにエクスポートする
      なお、メインサイトについては、テーブルごとにエクスポートするとあとの手順で少し楽できる。
    • ファイル一式については、FTPクライアントを使って一度ローカル環境にダウンロードしておくこと。CORESERVER管理画面の「サーバー間コピー」機能を使ってファイルをコピーしてもよいが、ディレクトリの名前を変えたりシンボリックリンクの設定をしたりするため、この機能は使えないと思ったほうがよいだろう。
  2. サーバーへの登録」の「無料で試してみる」から、移転前と同じプランを選択してお試し登録する。
    • このとき、「障害メンテナンス情報」のチェックも忘れずに。ここで頻繁に高負荷になるようなところは選んではいけない。 2)実は、私がこれまで使っていた「s19.coreserver.jp」サーバはほぼ常時高負荷状態が続いているので、絶対におすすめできない。
  3. 登録後、アカウント管理画面から、お試し登録したサーバを選択して、「サーバ設定」をおこなう。
    • この時点では、まだ契約を「移動」しないほうがよい。もし仮登録したサーバがハズレだった場合、別のサーバを選択できるので、納得できるところを選んでから移動させるべき。
  4. データベースの内容をコピーする前に、エクスポートしたSQLファイルのうち、メインサイトのデータ 3)「wp-config.php」ファイル内の「$table_prefix」で設定した文字列(初期状態では「wp_」)で始まるテーブル群 をエクスポートしたファイルを複製し、そのファイルを編集する。
    編集内容は次の通り。

    • wp_blogs」 および「wp_blog_versions」 テーブルのINSERT文の箇所。いずれも、最初の1カラム目が「1」となっているレコードの行末を「,」から「;」に書き換え、それ以外の行をコメントアウト 4)行の先頭に「」を追加する。ハイフン2つのあとに半角スペースをお忘れなく する。
    • 複製元のファイルは消さずにとっておくこと(後ほど使う)。
  5. 移転先のサーバの管理画面にログインする。
  6. 管理画面で、移転先ブログで使用するデータベースを作成する。データベース名やパスワードは、移転前に使っていたものと同じものにすること。
  7. 「phpMyAdmin」を開く。ここで、BASIC認証のダイアログが表示される場合、今回は移転前と同じものを指定すること。
  8. 「phpMyAdmin」にて、先ほど作成したデータベースにおいて、メインサイトのデータを編集したファイルのみをインポートする。
    • 一つのWordPressで複数のブログを管理するときに、サイトネットワークを構築しなければならなくなるが、この時点で複数ブログのデータが登録されているとサイトネットワークを構築できないため。
  9. 移転前のサーバからバックアップをとったファイル一式の中にある、WordPress一式が入ったディレクトリの名称を、あなたのサイトのドメイン名と同じもの(例:example.com)に変更する。移転前からそうなっている場合は特に何もしなくてよい。
    • 私の場合、移転前はWordPress一式を「default.telmina.com」というディレクトリに入れていた。今後の手順の都合で、これだときわめて不都合になるため、「telmina.com」に名称を変更した。
  10. 名称変更後の、WordPress一式が入ったディレクトリを開き、その中の「wp-config.php」ファイルを編集する。
    編集内容は次の通り。

    • 下記の行をすべてコメントアウトする(行頭に「//」を追記する)。
      • define( 'MULTISITE', true );
      • define( 'SUBDOMAIN_INSTALL', true );
      • define( 'DOMAIN_CURRENT_SITE', 'example.com' );
      • define( 'PATH_CURRENT_SITE', '/' );
      • define( 'SITE_ID_CURRENT_SITE', 1 );
      • define( 'BLOG_ID_CURRENT_SITE', 1 );
      • define('WP_ALLOW_MULTISITE', true);
  11. ファイル一式を、移転後のサーバにFTP経由でアップロードする。
  12. 管理画面の「ドメインウェブ」で、「Sub1」以下のいずれかの場所に、サイトのドメイン名(例:example.com)と、それの頭に「default.」をつけたもの(例:default.example.com)をそれぞれ設定する。WordPress管理外のコンテンツを別のサブドメインで扱っている場合(例:hogehoge.example.com)は、「default.」で始まっているものよりも上に設定する。
    • なお、「default.」で始まっているものは、設定する全ドメインの最後にすること。
    • 「強制」のチェックは入れる 5)入れる必要はないかもしれないけど、私は入れた 。「NoDir」のチェックは入れない。
  13. VALUE DOMAIN」の「取得済みドメインの一覧」から、移転するサイトで用いているドメインの「DNS」(DNSレコードの変更/URL転送の変更)を選択する。
  14. 「設定フィールド」を手動で書き換えるか、「当サービス内サーバーの自動DNS設定」から移転先のサーバを選択して、「保存」ボタンを押下する。
  15. ドメイン設定の変更が反映されるまで数時間かかるので、そのまま放置する。
  16. ドメイン反映を待っている間に、管理画面の「ドメインウェブ」の下にある「同期設定」で、シンボリックリンクを作成する。
    • 「ドメイン設定(同期元)」には、サイトのドメイン名をつけたディレクトリの名前を選択する(例:example.com)。
    • 「ドメイン設定(同期先)」には、頭にサブドメイン「default.」つきドメイン名をつけたディレクトリの名前を選択する(例:default.example.com)。
    • 設定できたら、「同期させる」ボタンを押下する。
  17. お手持ちの環境でDNSの設定が反映されているのを確認できたら、メインサイトに接続してみる。サイトが正常に表示できれば成功。
  18. メインサイトのWordPress管理画面にアクセスしてみる。うまくログインできれば成功。
  19. ログイン成功後、「wp-config.php」ファイルを編集し、アップロードし直す。
    編集内容は次の通り。

    • 下記の行のコメントアウトを解除する(行頭の「//」を除去する)。
      • //define('WP_ALLOW_MULTISITE', true);
  20. 「wp-config.php」ファイルを編集してアップロードしたあと、WordPress管理画面の「ツール」メニューの下に「ネットワーク設置」という類いの名前のサブメニューが追加されるので、それを選択して、サイトネットワークの設定をおこなう。
  21. 設定できたら、「wp-config.php」と「.htaccess」を編集する旨の指示が画面に表示される。このタイミングで、再度「wp-config.php」ファイルを編集し、アップロードしなおす。
    編集内容は次の通り。

    • 下記のすべての行のコメントアウトを解除する(行頭の「//」を除去する)。
      • define( 'MULTISITE', true );
      • define( 'SUBDOMAIN_INSTALL', true );
      • define( 'DOMAIN_CURRENT_SITE', 'example.com' );
      • define( 'PATH_CURRENT_SITE', '/' );
      • define( 'SITE_ID_CURRENT_SITE', 1 );
      • define( 'BLOG_ID_CURRENT_SITE', 1 );
    • なお、「.htaccess」ファイルについては、これまでの作業の間に特に編集をおこなっていれば、修正の必要はない(はず)。 6)私自身は試行錯誤を繰り返していたので、もしかしたら編集の必要はあるのかもしれない。ちょっと自信なし…
  22. 移転前のデータベースからエクスポートしたSQLファイルのうち、メインサイトのデータ 7)「wp-config.php」ファイル内の「$table_prefix」で設定した文字列(初期状態では「wp_」)で始まるテーブル群 をエクスポートしたファイルを再度複製し、そのファイルを編集する。
    編集内容は次の通り。

    • wp_blogs」 および「wp_blog_versions」 テーブルのINSERT文の箇所。いずれも、最初の1カラム目が「1」となっているレコードの行をコメントアウト 8)行の先頭に「」を追加する。ハイフン2つのあとに半角スペースをお忘れなく する。
    • 今回は、複製・編集したファイルはアップロードせず、編集した箇所のみを次の手順で利用する。
  23. 移転先のサーバの管理画面から「phpMyAdmin」を起動する。
  24. 「phpMyAdmin」で、移転先のサイトで用いるデータベースを選択し、「SQL」タブを開く。
  25. 先ほど編集したSQLファイルにある、「wp_blogs」 テーブルのINSERT文を、SQL文入力欄に入力し、「実行」ボタンを押下する。
  26. 成功したら、引き続き、先ほど編集したSQLファイルにある、「wp_blog_versions」 テーブルのINSERT文を、SQL文入力欄に入力し、「実行」ボタンを押下する。
  27. 成功したら、移転前のデータベースからエクスポートしたSQLファイルのうち、サブブログのもの 9)要は、先ほどの手順で複製したメインサイト用のもの以外 をインポートする。
  28. 各サブブログと、それらの管理画面にアクセスしてみる。いずれも問題なければ成功。
  29. 最後に、ここまで無事終了していることを確認してから、CORESERVER.JPの「CORESERVERアカウントの登録・管理・購入」画面で、移転後のサーバに契約を【「移動」させる。 (2013/08/13 20:48 記述が漏れていたため追記)

なお、今回の移行作業で、下記の各サイトを参考とさせていただきました。厚く御礼申し上げます。

参考記事
WordPressのマルチサイト機能で複数のブログを管理するちょんまげ英語塾
現在利用しているサーバがとても重いです。同じプランの他のサーバに引っ越すことはできますか?「アカウント」の FAQはやわかり XREA & CORESERVER

上記手順で私が何を言っているのかわからないという方は、これらの参考ページをチェックしてみて下さい(丸投げ)。

作業が長引いた間接的な原因

今回、特に寄り道しなければものの数時間で片付く作業を、まる1日以上かけてようやく成し遂げました。

しかし、今回作業が長引いた原因として、不調により、移転前のサーバへのアクセスそのものが困難だったことや、自分のWordPressやレンタルサーバに対する理解が浅かったという直接的な原因のほかに、とある間接的な原因がありました。

そう。作業中、WordPressを複数サイトで用いる設定をしたあとに、WordPressのサイトネットワークのダッシュボードを開こうとしたところ、特定のメッセージが画面に表示され、作業を続行できなくなったのです。

PHP Fatal error:  Call to undefined function wp_get_current_user() in ../wp-includes/capabilities.php on line 1281

これまでそんなメッセージを見たことがなかったので、原因がさっぱりわからず。

試行錯誤の結果、移行作業の手順を実施しているときに特定のプラグインのバージョン・アップを実施してしまったのが原因である、ということを突き止めました。

そのプラグインは「WPtouch Mobile Plugin」。

執筆時点で最新バージョンとなる「1.9.8」に自動更新した途端に、サイトネットワークに接続するたびにエラーが発生するようになり、プラグインのディレクトリを丸ごと消さない限りサイトネットワークにアクセスできなくなってしまいました。

なお、少し古いバージョン(1.9.7.1)ではそのようなことが起きませんでしたので、移行手順実施時にバックアップをとっていたディレクトリの中から、当該プラグインをとりだしてFTP経由で再度アップロードしてみたところ、問題を回避することが出来ました。

たぶんこの問題がなければ、あと数時間は早く作業が終わっていたはずです。とほほ。

最後に

週末のまる2日をつぶすという高い代償を払いましたが、何とか、サイトを再始動させることが出来ました。

いろんな意味でいい勉強になりました(汗)。

なお、先日は、サイト復旧後にこのブログの更新を停止させて、メイン・ブログを新たに作り直す旨の発言をしておりましたが、今後のサイト運営方針も決まらず、また、タイミング的にも都合が悪いので、来月中旬に予定している私自身の引っ越しに合わせて、ブログの切替をおこないたいと考えております。

まあ、結局は私の個人日記に終始することになると思われますので、乞うご期待などと言っても誰も期待などしないと思いますが、今後もおつきあいいただける方は今しばらくお待ちいただければと思います。

今晩はゆっくり眠りたいと思います…。

関連記事
ついにここを使う日が来てしまったか深緑庭園
【お知らせ】長時間PCから当サイトに接続できない状況が続いております。深緑庭園
ついにここを使う日が来てしまったか(その2)深緑庭園
とりあえずサーバを乗り換える方向で。深緑庭園
メインサイト「仮復旧」Telmina ANNEX
週末のサイト不調の件とその後のサイト運営方針についてTelmina.com

このブログで関連すると思われる他の投稿:

00

References   [ + ]

1. 「wp-config.php」ファイル内の「$table_prefix」で設定した文字列(初期状態では「wp_」)で始まるテーブル群と、その後ろに数字とアンダースコア(「_」)が続いているテーブル群を数字ごとにエクスポートする
2. 実は、私がこれまで使っていた「s19.coreserver.jp」サーバはほぼ常時高負荷状態が続いているので、絶対におすすめできない。
3, 7. 「wp-config.php」ファイル内の「$table_prefix」で設定した文字列(初期状態では「wp_」)で始まるテーブル群
4, 8. 行の先頭に「」を追加する。ハイフン2つのあとに半角スペースをお忘れなく
5. 入れる必要はないかもしれないけど、私は入れた
6. 私自身は試行錯誤を繰り返していたので、もしかしたら編集の必要はあるのかもしれない。ちょっと自信なし…
9. 要は、先ほどの手順で複製したメインサイト用のもの以外
この記事はWordPress, 備忘録, 業務連絡, 私的メモに投稿されました タグ: , , , , , , , , , , , , , , , . このパーマリンクをブックマークする。 Trackbacks are closed, but you can post a comment.

One comment on “【お知らせ】【WordPress】週末のサイト不調の件とサーバ移転の顛末

  1. しまった。手順の最後あたりで、契約の移動について書き忘れていました。

    帰宅してから追記します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

* Copy This Password *

* Type Or Paste Password Here *

493スパムコメントは、これまでのところでブロックされたSpam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>