今日も8時間睡眠8時8分888文字。そこで、今回のサーバー移行の際に、やったことや迷ったりつまづいたりしたことをまとめていきたいと思います。移行作業の概要サーバーの移行とは、自分の管理しているドメイン(http://example.comのようなもの)にアクセスしたときに、今使っているサーバーではなく新しいサーバーのデータを見に行くように設定することです。移行作業でしなければいけないことを大きく分けるとサーバーのデータや設定の移行ドメインとサーバーとの対応情報の変更の2つがあります。1つ目のデータや設定の移行とは、ファイルの移行、データベースの移行、メールアドレスの設定などです。2つ目の設定は、ネームサーバーの設定です。以下、細かく見ていきます。仮申し込みまずはデータを移行する先のスペースを確保しないといけないので、新サーバーの申し込みをする必要があります。普通はどのサーバーにも無料お試し期間がついています。お試し期間は、現時点では10日間です。サイトがうまく表示されるか、動作が遅くないかなどを事前に確認しましょう。申し込むと、管理画面に入るためのアカウント情報やFTPのアカウント情報がメールで送られてきます。今後使うので、保管しておきましょう。ドメインの設定とデータの移行まずは、自分の管理しているドメインの設定を行います。マニュアルのドメイン設定のとおりに設定します。サブドメインがある場合は、マニュアルのサブドメインの設定も見て設定します。設定で難しいところは特にないでしょう。example.comのドメインの設定を行うと、サーバー上で/example.comというフォルダが自動作成されます。その下にできるpublic_htmlフォルダに、ファイルをアップしていくことになります。サブドメインの設定は少し変わっています。xxx.example.comというサブドメインを設定すると、普通はこの名前のフォルダができそうな気がするのですが、エックスサーバーの場合はそうではありません。/example.com/public_html/xxxというフォルダができます。このxxxフォルダの下に、ファイルをアップしていきます。個人的にはかなり気持ち悪いのですが、エックスサーバーの場合はこういう仕様らしいです。サーバーの移行が完了すると、次の2つhttp://xxx.example.comhttp://example.com/xxxは同じ内容を返すことになります。どちらでもアクセスできます。「サブフォルダ型は使わず、サブドメインのアクセスだけにしたい」という場合は、/example.com/public_html/xxxフォルダ直下に、次の内容の.htaccessファイルを置きます。env=hostこう書くと「xxx.example.com」からのアクセスのみを許可する、という内容になります。このように設定しても、サブドメイン用のファイルを「/example.com/public_html/xxx」下にアップすることは変わりません。今まで僕が使っていたコアサーバーでは、「/public_html/example.com」や「/public_html/xxx.example.com」というパスだったので、「public_htmlとドメインの順序が逆」「サブドメインのファイルをアップする場所が変わる」といった違いがあります。公開領域より外にあるファイルをインクルードしている場合など、プログラムによってはパスを書き直す必要があるかもしれません。設定の方が自然だと感じます。旧サーバーでデータベースを使っている場合は、データベースの内容も移行します。wordpressを使っている場合などですね。ここに書く方法は一般的な方法ですが、僕の場合は、wordpressをこの方法で移行すると使えなくなってしまうプラグインがあったので、別の方法を使いました。その方法については後で書きます。データベースの移行で一番簡単な方法は、phpMyAdminを使う方法でしょう。旧サーバー内でデータベースのエクスポートを行い、エックスサーバーでインポートするのが一番楽です。MySQLを使う前に、データベースを作っておく必要があります。マニュアルの「MySQLの設定」にもありますが、次のステップが必要です。MySQLユーザーの追加MySQL(データベース)の追加MySQLアクセス権の設定データベースが複数ある場合は、2つ目と3つ目を繰り返します。データベースを作った後、phpMyAdminを使って旧サーバーのデータベースをインポートすると完了です。phpMyAdmin上でデータベースを追加することはできません。上のマニュアルの通り、管理画面から追加しないといけません。ここまでの段階でサイトがきちんと表示されるかどうかを確認できる「サイトの動作確認」機能があります。マニュアルの「動作確認について」にある通り、動作確認用のURLを作って、そこから確認するだけです。ドメインとサーバーとの対応情報を変える(=ネームサーバーの変更)には時間がかかるんですよね。旧サーバーから新サーバーに切り替えたときに何か問題があっても、すぐに旧サーバーに戻すことができません。簡単に事前の動作確認ができるのはいいですね。実はwordpressの場合はうまくいきません。http://example.com/の動作確認用URLは、http://example-com.check-xserver.jp/というようなものになるのですが、wordpressの場合は管理画面内で行ったURL設定が優先されてしまいます。(URL)」で「http://example.com/」と指定されていれば、サイト内のリンクはこちらで作られます。トップページの動作確認はできますが、サイト内のリンクは正しく作られず、他のページの動作確認ができません。そのため、wordpressの動作確認は、hostsファイルをいじって確認する必要があります。これについては後で記載します。以上のことから、エックスサーバーにデフォルトで用意されている動作確認機能は、自分の作ったプログラムが動くかどうかの確認には使えますが、wordpressの動作確認(テーマやプラグインが動くかなど)には使えない、ということがわかります。残念ですが、wordpressの仕様なのでしかたないですね。旧サーバーでメールアドレスを使っていた場合は、新サーバー用にメールアドレスを設定しなおしましょう。メールアカウントの追加のように1個1個追加することもできますし、メールアカウントの一括登録のように一気に登録することもできます。1点だけ注意があります。エックスサーバーでは、試用期間中はメールの設定ができません。本申し込み後(お金を払った後)に、設定できるようになります。本申し込みをしてから次に説明する「ネームサーバーの設定」をするまでの間に、メールアドレスの設定を行いましょう。ネームサーバーの設定を行ってもすぐには反映されないので、前のサーバーでのメールアドレスの設定はしばらく残しておきましょう。ネームサーバー・DNSの設定ファイルをアップして動作確認まで済んだら、ネームサーバーの設定を行います。設定の反映には数時間かかります。反映が完了すると、サイトのURLにアクセスした場合に、前のサーバーではなく新しいサーバーに接続されるようになります。これは、エックスサーバーの管理画面で行うのではなく、ドメインを管理しているサイト上で行います。このサイトの場合は、バリュードメインを使っているので、バリュードメインのサイト上で行います。各ドメインのネームサーバーを設定できるページが、ドメイン管理サイトの管理画面内にあるはずです。そこで、エックスサーバーのネームサーバー情報(申し込みをしたときに送られてきたメールに書いている)を設定します。サブドメインを別のサーバーに接続したい場合には、DNSの設定も行います。エックスサーバー管理画面内の「DNSレコード設定」を見ると、すでにサーバーのIPアドレスが入っているはずです。ここでサブドメインの設定を行います。マニュアルの「DNS設定」の部分を見るといいでしょう。ここでも、エックスサーバーの設定で個人的に気持ち悪く感じる点があります。エックスサーバーでは、サブドメインを設定しなくても、「wwwあり」のURLが使えます。example.comというドメインを登録すると、何も設定しなくてもwww.example.comが作られ、どちらでアクセスしても同じ内容が表示されます。次の2つhttp://example.com/a.htmlhttp://www.example.com/a.htmlは同じ内容になります。.htaccessファイルで設定すれば、「wwwありだけ」や「wwwなしだけ」に統一する運用はできます。wordpressの場合は、管理画面で設定したサイトのURLが使用されるので、勝手にどちらかに統一されます。wordpressの移行作業ここからは、wordpressの移行について書いていきます。前半は一般的な話で、後半は自分がつまづいた話を書きます。wordpressの一般的な移行方法wordpressの移行方法は、上で書いた一般的な移行作業とだいたい同じです。異なる点を中心に見ていきます。ドメインの設定を行った後、wordpress関連のファイルをアップしていきます。旧サーバーからwordpressのファイルをダウンロードしておき、次に述べるようにwp-confing.phpだけを変更して、エックスサーバー側にアップします。wp-confing.phpで変更する部分は、データベースに関する部分です。次の部分を書き換えます。'mysql○○.xserver.jp');データベース名の「_(アンダーバー)」より前の部分は、サーバーIDです。申し込み時に自分で指定したものです。「_(アンダーバー)」の後の部分は、MySQLデータベースの追加時に自分で設定するものです。ユーザー名とパスワードも、後で自分で設定するものです。DB_HOSTは、「localhost」と設定するサーバーが多いかもしれませんが、エックスサーバーの場合は、上のような内容で設定します。○○の部分には数字が入りますが、その数字は、エックスサーバーの管理画面内の「MySQL設定」の部分で確認できます。次に、データベースの移行を行います。phpMyAdminなどを使って、旧サーバーからデータベースをエクスポートしておきます。エックスサーバーでデータベースを作成し、そこにインポートすればおしまいです。データベースの作成は、上で書いたように、「MySQLユーザーの追加」(まだ済んでいない場合)、「MySQL(データベース)の追加」、「MySQLアクセス権の設定」の3ステップが必要です。wordpressの移行については、これで完了です。僕もこれで完了するはずだったのですが。wordpressの動作確認wordpressに関するファイルとデータベースを移行すれば、サイトの移行は終了です。ネームサーバーの設定をする前に、実際にサイトが動くかどうかを確かめておいた方がいいですよね。「サイトの動作確認」の部分で書いたように、wordpressの場合はエックスサーバーの「動作確認」機能が使えません。動作確認用のURLが実質使えないからです。そのため、「hostsファイルをいじって確認する」という方法をとります。hostsファイルを編集すれば、IPアドレスとドメイン名を対応させることができます。ネームサーバーの設定を変更していない段階では、http://example.comにアクセスしても昔のサーバーに接続されます。自分のPC内にあるhostsファイルを編集し、このドメインに新サーバーのIPアドレスが対応するように設定すれば、自分のPCでこのURLにアクセスした場合「だけ」新しいサーバーに接続されます。他のPCからのアクセスは今まで通りなので、安心して動作確認ができます。10であれば、hostsファイルはC:\WINDOWS\system32\drivers\etc\hostsにあります。このファイルは管理者権限でないと編集できません。アクセサリ」の中にある「メモ帳」アイコンを右クリックし、「その他>管理者として実行」を選択します。次に、「ファイル>開く」から、上に書いたhostsファイルを開きます。hostsファイルが表示されない場合は、ファイル名の右側が「テキスト文書(*.txt)」となっているかもしれないので、「すべてのファイル(*.*)」に切り替えます。hostsファイルを開いたら、一番下の行に、次の内容を追記します。aaa.example.comこれにより、自分のPCから「http://example.com」や「http://aaa.example.com」にアクセスすると、指定したサーバー「192.xxx.xxx.xxx」につながるようになります。エックスサーバーの管理画面内にある「サーバー情報」を見ると、サーバーのIPアドレスが載っているので、それを記載すればOKです。サブドメインの指定が不要な場合は、1行目だけを追加します。自分のPCからアクセスすれば新サーバーに、自分のスマホ・タブレットや他のPCからアクセスすれば旧サーバーにつながるようになります。これで、新しいサーバーの動作確認ができます。動作確認を行った後は、hostsファイルに追記した部分は削除するようにしましょう。プラグインが動かない!上に書いたように、wordpressのファイルとデータベースを移行し、動作確認を行ってみました。サイトにアクセスすると、移行できたことを表すメッセージが表示され(内容は忘れちゃいましたが)、wordpress自体はきちんと稼働していました。基本的には、今まで通り動いていたのですが、僕の場合、1個だけ問題がありました。バックアップ目的で入れていた「WP-DBManager」というプラグインが使えなくなっていました。wordpressの管理画面の上部に「バックアップファイルを保存する場所がない」というエラーが出ていて、昔のサーバーのパスが表示されていました。データベースを移行したときに昔のサーバーの情報のまま移行してしまったということですね。データベース内の該当箇所を直接書き換えればいいや、と考えました。新サーバーのデータベース内を検索すると、まずrecently_editedというオプションにパスの情報が入っていました。これはそもそもwordpressに初めから入っているもので、デフォルトはnullなので、いったん値を空欄にしてみました。dbmanager_optionsというオプションもあり、ここにもパスの情報が入っていました。「WP-DBManager」プラグインのソースを見ると、uninstall.phpの中で、このオプションの値を削除しているようでした。そのため、「旧サーバーでプラグインを停止&削除⇒旧サーバーからデータベースを移行」とすればいいのではないか、と考え実行しました。それでもうまくいきません。「WP-DBManager」プラグインを有効化して設定をしようとしても、ソース丸見えの画面が表示されてしまいます。このプラグインをあきらめてもよかったのですが、wordpressのバックアップは自動でとれるようにしたいと思ったので、別のプラグインを探しました。すると「BackWPup」というよさげなプラグインを見つけました。インストールしてみたのですが、「WP-DBManager」のときと同じ現象となりました。これはもしかしたら、プラグインの問題ではなくて、今まで使っていたwordpressのデータベースとサーバーとの相性の問題なのか。原因はわかりませんが、今このプラグインをあきらめても、今後、他のプラグインを入れたときに同じ問題が起こるかもしれません。苦渋の決断ですが、次に述べる「記事のインポート」で対応することにしました。記事のインポートでwordpressの移行を実施wordpressのファイルとデータベースの移行(一般的な方法)では、自分の場合はエラーが出てしまい、あるプラグインが使えなくなってしまいました。そこで、別の方法を試してみます。旧サーバーのwordpressの管理画面上で、記事を全部エクスポートしておきます。次に、hostsファイルをいじって、ドメインをエックスサーバーの方に設定します。wordpressのサイトから最新版のwordpressを取得し、ファイル一式をエックスサーバーの方にアップします。旧サーバーから持ってきた、.htaccessファイルや、wp-contentフォルダの中身、エックスサーバーのMySQLの設定を反映したwp-config.phpをアップします。エックスサーバー上でwordpressを新規にインストールします。して、まっさらの状態のwordpressが出来上がります。次に、はじめから入っているサンプル投稿・固定ページを削除します。それから、URLの設定をし、事前にエクスポートしておいた記事をインポートします。URLの設定をする前にインポートすると、リンクがおかしくなってしまうので、この順番は重要です。あとは、パーマリンクの設定、テーマの設定、プラグインの設定などを行います。使っているプラグインが多くて、各プラグインの設定項目が多いとかなり大変ですが、僕の場合はもともとプラグインの数を増やさないようにしていたので、そんなに大変ではありませんでした。すれば、使えなかったプラグインも動くようになり、記事も無事に表示されるようになりました。移行した目的ちなみに、そもそもなぜ移行したかというのを書いておきます。CORE-MINIプランという、月額200円程度のプランを使っていました。今まではこのプランでまったく問題はなかったのですが、「MySQLが10個まで、管理できるドメイン数が50まで」という制限をとりたくなったんですよね。CORE-Aプランなど、別のプランに簡単にアップグレードできればよかったんですが、それはできないようです。プランを変えると、普通のサーバーの移行と同じ作業をすることになります。それなら、この際もっといいサーバーに変えようかなと思ったのがきっかけです。大絶賛されていますが、個人的には「言うほどかな?」という印象。確かに、マニュアルの充実度は素晴らしく、コアサーバーやバリュードメインとは大きく違います。サービス自体がすごく優れてるかどうかは、まだよくわかりません。コアサーバーでも十分早かったし、同じサーバーで管理している別のブログが炎上したときに同時閲覧数が200人を超えても落ちなかったし。大絶賛されている理由には、アフィリエイト報酬が高いっていうのもあるんだろうなー。サイト移行したときの、作業内容や悪戦苦闘の様子を書いてきました。サーバーを移行するときの参考になれば、と思います。関連しない記事(ランダム)年金2000万円問題で、年金について考えるのが難しくなってしまった「画面割り放題」のインパクトAMP、まじめに考えるか。