Memorandum

ドメインキングからスターサーバーに移行しました

実施したこと

タイトルの通りです。ドメインキング Sプランからネットオウルのスターサーバーへレンタルサーバーの契約を変更し、WordPressデータとMySQLのデーターベースを移行しました。
不慣れなこともあり、チェックやファイルのアップロード時間などを含めて半日くらいかかってしまいました。次回スムーズに行うため、各所に記事になっているWordPressの引っ越し記事よりも少し丁寧に情報を残したいと思います。

移行手順

  1. ネットオウルのレンタルサーバーを契約し、セットアップする
    (今回はスターサーバー)
  2. ドメインキング にアップロードしているWordPressデータをローカルに保存する(FFFTP使用)
  3. ドメインキング で管理しているデータベース(MySQL)をローカルに保存する
  4. スターサーバーに2で保存したデータをアップロードする (FFFTP使用)
  5. 同じく3で保存したデータベースをスターサーバーでのMySQLにインポートする
  6. 簡易的に動作をチェックする
  7. ドメインのネームサーバー情報を変更する

今回はドメイン名の変更が伴わない(URLが変わらない)ので、以上7ステップで作業としては完了します。
以下、それぞれのステップの作業について記載いたします。

1. サーバー契約、セットアップ

今回はネットオウルのレンタルサーバーを契約しています。
以後、ネットオウル=スターサーバーとして記載していきます。
https://www.star.ne.jp

契約までの手順については省略いたします。
契約後、管理画面でセットアップをすることになります。そのポイントをいくつか記載いたします。

行う作業は下記の2つです。
a. ドメインの追加
b. FTPアカウントの設定
c. データベースの設定

スターサーバーの管理画面です。赤枠の部分を主に触っていきます。
a. ドメインの追加

管理画面の『ドメイン設定』より、使用中のドメインをスターサーバーに設定します。今回の場合、otherworldliness.netは別のドメイン登録サービスで取得しているので、他社管理のドメインです。
追加しようとすると、認証を行うように促されます。

ドメイン追加画面。認証は3種類選べます。

ドメイン名のところには自分のウェブサイトのURLを記載します。

認証方法については、Whois認証が一番楽ですが、ネームサーバーの変更は最後に行いたい作業です(時間がかかる上、アクセス不可になる可能性が大きい)。
今回はWEB認証で行いたいと思います。
すぐ下にあるダウンロードURLからhtmlファイルを保存しておきます。

WEB認証はドメインキング側に認証用のファイルをアップロードし、URLを開くことで認証する方法です。
今回(このブログ)であれば、http://otherworldliness.net/webauth.htmlにアクセスできればよい、ということです(現在はアクセスできません)。
ドメインキング の管理画面にログインし、ファイルをアップロードします。
アップロード先はhttpdocsの直下です。

ルートディレクトリ/httpdocs内にアップロードします。ドメインキングの場合はルートディレクトリに放り込んでも読み込めなかったはずです。

なお、 ドメインキングの登録日よっては、httpdocsがパブリック領域ではない可能性があるとのことです。詳しくは下記URLを参照ください。
https://www.domainking.jp/support/faq/index.cgi?id=faq&no=90

設置できたらファイルにアクセスしましょう。それで認証が通るはずです。

b. FTPアカウントの設定

追加したドメイン名を選択すると、初期設定が行えます。
パスワードを設定するだけでとりあえず完了です。
この情報を元にFFFTPから接続し、ファイルをアップロードしたりダウンロードします。
WebFTPも確認しておくとよいと思います。スターサーバーはアクセス権の設定がファイル一覧の画面に出てないのが少し不便。

c. データベースの設定

MySQLのデータベース名、ユーザー名を設定します。
データベースを追加した後、ユーザーの権限を付与します。
ここの情報はwp-config.phpを編集し更新する時に必ず使うので、すぐに引き出せるようにしておくとよいです。

ここまででスターサーバーの準備は整いました。次は移行元のデータの準備です。

2. ドメインキング のファイルデータを保存

この作業は各所で公開されている手順を踏めば問題ありません。
私はFFFTPを使ってダウンロードしています。
ダウンロードする際、 ドメインキング側のディレクトリ構成は確認するとよいです。現在のWordPress本体のインストール先と、移行先のアップロード場所の整合性を取るためです。

例 
ドメインキング : ./httpdocs/wordpress/~
スターサーバー : ./wordpress/~

ドメインキングのようにhttpdocsフォルダをスターサーバーに含めてしまうと、階層が全体として1つ下がることになります(たぶん)。
アクセス不可の原因になるので注意が必要です。
また、WordPressアドレスとサイトアドレスを別にしている場合には、サイトアドレス側のindex.phpと.htaccessもきちんとダウンロードしておく必要があります。
httpdocsフォルダをダウンロードしてしまい、アップロード時に注意しておく形で問題ないと思います。

3. ドメインキング側のデータベース(MySQL)の保存

ドメインキングからデータベースにアクセスし、sqlファイルをダウンロードすることで完了します。

まず ドメインキングの管理画面にアクセスし、『ドメイン』タブから対象ドメインを選択します。
『データベース』を開き、『Webadmin』にアクセスします。

ドメインキングの管理画面は非常に分かりづらいです。

アクセスすると自分のウェブサイトの記事情報やコメント情報などが各テーブルごとにまとめられているのが確認できると思います。

最も簡単な方法は、データベース全体を .sqlファイルをダウンロードすることです。 画面上部の『エクスポート』から、テンプレートを適当に作成し、SQLフォーマットで実行するだけです。

エクスポート画面。スクリーンショットに入っていませんが、上部に対象のテーブルが表示されています。

『実行』すると自動的にファイルのダウンロードが始まります。容量が大きい場合にはすぐに始まらないので、その画面のまま待機します。
私が実行した際には350MBほどのファイルが落ちてきました。

はい、これで終わり…としたいのですが、最終的にこの.sqlファイルはスターサーバーのphpMyAdminからインポート(アップロード)する必要があります。
このアップロードを実行する時、ファイルサイズが大きすぎるとタイムアウトになり、いつまで経ってもデータベースの移行が終わらなくなってしまいます。
約350MBのファイルは実際にアップロードができませんでした。

回避する方法もある (https://qiita.com/studio-kakky/items/a1f943b5476e0cbbe47b など) のですが、phpを実行する必要があるため、ネームサーバーを変更してから作業しなくてはなりません。今回は移行作業が済んでからネームサーバーを変更するので、この方法は取りませんでした。

結局解決方法としては、「手作業でそれぞれのテーブルをエクスポートする」ことで対応しました。そんなに数も多くなかったので、面倒ですがこれで実施しました。
各テーブルを選択してから『エクスポート』していけば問題ありません。

もう少しスマートなやり方もあるはずですが、とりあえずこれでデータベースのバックアップが終了しました。
この作業が最も曲者で、全体バックアップ+各テーブルバックアップはどちらにせよ実施した方がよいと思います。
移行作業の後、本稼働をさせた後にpostテーブルがうまく動作せず、投稿やメディアの新規追加ができなくなったことがありました。

4. ネットオウル (スターサーバー)へファイルをアップロード

ここまででドメインキング側から必要な情報は全て取得できました。
後はスターサーバー側へファイルをアップロードするだけです。
アップロード前に実施する作業は下記です。
a. wp-config.phpの編集
b. FFFTPの設定
c. アップロードディレクトリの確認
d. ファイルをアップロード

特に難しいことはありませんが、1文字でも入力ミスすると設定が通らないので、慎重に実施しましょう。

a. wp-config.phpの編集

まず手順2でダウンロードしたファイルを全てそのままコピーします。
そのどちらかをバックアップとして、別フォルダに保管しておきましょう。何かあった時にはこれらのファイルを再度呼び出して環境を戻します。

ドメインキングからダウンロードしたwordpressフォルダ内のwp-config.phpをテキストエディタなどで開きます。Windowsのメモ帳は非推奨らしいので、Meryなどを導入しておくとよいかも知れません。
行数で言うと22行目からMySQL設定の記述があります。

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'ドメインキングの設定');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'ドメインキングの設定');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'ドメインキングの設定');

/** MySQL のホスト名 */
define('DB_HOST', 'ドメインキングの設定');

/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

「ドメインキングの設定」となっているところは、各人で情報が異なります。
この4箇所をネットオウルの設定に変更すればよいです。

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '1-cで設定したデータベース名');

/** MySQL データベースのユーザー名 */
define('DB_USER', '1-cで設定したデータベースのユーザー名');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '1-cで設定したデータベースのパスワード');

/** MySQL のホスト名 */
define('DB_HOST', 'MySQLホスト名');

/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

MySQLのホスト名関しては、スターサーバーの管理画面の『サーバー情報』から確認できます。
wp-config.phpの編集はこれで終わりです。

b. FFFTPの設定

FFFTPでスターサーバーにファイルをアップロードするため、接続設定を行います。
ホストの設定から新規追加を行い、各項目を入力します。
なお、ホスト名は管理画面の『サーバー情報』から、ユーザー名は『FTPアカウント設定』から確認できます。ユーザー名=アカウント名です。
パスワードは1-bで自分で設定したものです。

ホストの初期フォルダはデフォルトのままで構いません。
接続し、index.htmlとdefault_page.pngが見られていれば問題ありません。

c. アップロードディレクトリの確認

これは手順の2でも少し触れました。
ドメインキングではルートディレクトリの1つ下のhttpdocsがパブリック設定されていましたが、スターサーバーではそのフォルダがありません。
index.htmlとdefault_page.pngが置いてあるフォルダがルートディレクトリであり、公開領域になっています。

httpdocsをそのままダウンロードした場合には、そのフォルダの中身からアップロードを実施してください。
httpdocsフォルダをアップロードしてしまうと階層が1つ多くなってしまうためです。

d. ファイルのアップロード

ここまで準備ができたら、ファイルをアップロードしていきます。
容量によって時間がまちまちですが、多分ここで時間がかかります。別の作業や準備をして待ちましょう。

5. ネットオウル(スターサーバー)側へデータベースのアップロード

管理画面の『データベース設定』より、phpMyAdminにアクセスできます。
ログインが求められるので、設定しているユーザー名、パスワードを入力してください。

見た目はほとんど変わりませんが、phpMyAdminのバージョンがネットオウルの方が少し古いようです。
ドメインキングは4.5.1、ネットオウルは4.4.15.10でした。ただ私が契約しているのがライト版なので、より値段の高いプランであれば違うのかも知れません。

データベースのアップロードは『インポート』から実施します。

アップロード画面。アップロードファイルを選択し実行するだけ。

ただ、エクスポート時に.sqlファイルのサイズが大きくなっていると、ここでタイムアウトなどが発生し時間を食います。
300MBを超えるような.sqlファイルの場合には注意した方がよいです。
場合によっては、個別のテーブルをそれぞれアップロードしていくのが得策です。

全てインポートが終わったら、移行作業としては終了です。
最終チェックを行います。

6. 簡易的な動作チェック

ネットオウルのサービスでは、ネームサーバーの変更前に、移行したサイトの動作を確認することができます。
管理画面を開き、メニュー下部の『ドメイン』欄から、『移転前動作確認URL』を開きます。

移行作業を行う予定のドメインを選択し、確認URLを追加します。
追加したURLにブラウザからアクセスし、移行前と同じサイトが表示できていればチェックは完了です。

もしここで動作していない場合には、これまでの作業を確認してファイルを編集する必要があります。
私がやらかしたのは「デフォルトで置いてあるindex.htmlを削除し忘れて、同じディレクトリのWordPressのindex.phpが読み込まれなかった」というものです。
スターサーバーの404 Not Foundのエラーページが出る場合には、まずこれをチェックしてみてください。

チェックポイントとしては、先述のindex.htmlが残っているかどうかの他、下記でしょうか。
・wp-config.phpの編集部分にミスがある
・アップロード先のディレクトリが適切でない
・phpMyAdminでのエクスポート作業がうまくいっていない
・同じくphpMyAdminのインポート作業がうまくいっていない

この他、私がミスをしなかっただけで、ポイントは多数あると思います。
この記事以外にも、WordPressのレンタルサーバーの移行方法は多数存在しているので、ベーシックなこの方法以外での移行についても検討してみると良いと思います。

また、ここのチェックで問題がなく、いざネームサーバーを変更し記事を書こうとした時に問題が発生していることもあります(私はありました)。
あくまで表示できているかどうか確認できるくらいだとお考えください。

7. ドメインのネームサーバーの変更

私はお名前.comでドメインを取得しているので、そこから設定を変更します。
スターサーバーのネームサーバーの情報は、管理画面の『サーバー情報』にあります。ネームサーバー1,2,3をお名前.comで入力し、設定するだけで完了です。
後は待つだけで設定が反映され、アクセス先がスターサーバーに変更されます。

移行にあたり発生した問題

前述しましたが、index.htmlを削除し忘れてindex.phpが読み込めていないことに気づくのに2時間ほどかかりました。

また、この記事を書く前にメディアのアップロードができなくなる(アップロード処理がうまく終わらず、削除も何もできないデータがwp_postsに溜まっていく)現象が発生しました。
各所の情報を流し見、デバッグモードでエラーなどを確認しました。
プラグインの影響はなさそうということ、post.phpがうまく動作していなさそうなこと(参考 : https://teratail.com/questions/92142)、wp-config.phpにコードを1行追加すること、admin-ajax.phpを修正すること、は分かったので試しましたがうまくいかず。

結局wp_postsとwp_postmetaを一度削除し、再度テーブルをインポートすることで解決しました。が、正直なところなぜこの作業で直ったのかは不明です。
post.php、wp-config.php、admin-ajax.phpは修正をしたままにしているので、最終的にテーブルのインポートが必要だったのかも知れません。
なお、wp-postsなどの個別のテーブルは簡易モードのSQLフォーマットでエクスポートしています。

終わりに

WordPressを運営しているサイトのレンタルサーバーの移行の手引きはインターネットに無数に転がっています。
私ももちろん、その記事を読みながら移行作業を行ったのですが、特にphpMyAdminからデータベースをエクスポートする、インポートする作業の点でタイムアウトになる記述をしているところが少なく、同じ悩みを抱えた方により情報が多くなればと思いこのブログでも作業手順を掲載しました。
ちなみに、プラグインから実行するにはDuplicatorあたりが良さそうです。結局使いませんでしたが、こちらの方が手順としては早そうです。

また、ドメインキングからスターサーバーに移行したという記事も少なそうだったので、全く同じことを考えている方がいれば参考にして下されば幸いです。

コメントを残す

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