WordPressのサーバー引っ越し方法(プラグインなしでXSERVERへの移管例)
WordPressのサーバーを変更する引っ越しは今まで3回やった。2回は良かったのだが、最後の1回はトラブルに見舞われた。しかも、引っ越し前の正常に動いていたサーバーを誤って変な操作をしてしまい、ブログが表示されなくなってしまった。
どうしたものかと思ったが、何とかなったので備忘録として、そして、同じ苦しみを味わっている人がいればその助けになるかと思い、記録しておく。
長くはなっているが、やることを9ステップにまとめている。また、引っ越し先のサーバーに完全に移行する前に動作確認する方法も載せたので、安全に移行できるはず。
※注意 場合によっては、動かなくなるなど何かしら不具合が発生することもあり得なくはない。そこまでは責任は持てないので、やる場合は自己責任で。
目次
前提と背景
ここでのメモは以下の前提のもとに書かれているので、自分の状況に合わせて読み替えなどをしていただければと思う。また、サーバーの移管理由も書いておくと、何かしら役に立つ可能性があるので載せておく。
前提(ドメインは同じでサーバーだけXSERVERに移管した)
今回やったのは、某会社のWordPressに特化したサーバーからXSERVER
への移管なので、そのときにやったことのメモ。自分の備忘録も兼ねて記録しており、内容を保証するものではない。自分の場合はトラブルがあったけど、動きました、という話。
おそらくは、どのサーバーでも共通している部分は多いので、違うサーバーでもそこまで問題にはならないものと思う。ただ、ドメインは変わらずでサーバーだけを変更したので、ドメインを変える場合は、後述する参考サイトを参考にしていただければと思う。
移管の理由(関心ない人は飛ばしてください)
理由は2つ。
1つ目の理由は安定性に疑問があること。確認できているだけで1年で少なくとも2回はサーバーが一時的に動かなかった。また、phpのアップデートをした際に不具合があったそうでWordPressにて日本語がうまく処理できなくなり、数時間にわたってブログの表示がおかしいままだったことがあった。
テンプレートを変にいじってしまったのかと思い、途方に暮れていたら自然と直り、後からメールで不具合を知ったのだが、それで一線を越えた気がしたので、契約期間も切れる頃だし、ということでサーバー変更を決断。
信頼できる人からの紹介だったので、もともとXSERVERだったのを契約変更して、1年契約にしたのだが、不安が大きくなってきたため、使いたくなくなってしまった。
2つめの理由は、使いやすさや参考となる情報の差。今後、このサイトもhttpsにする可能性があるのと、これからつくる他のサイトは初めからhttpsでブログ(WordPress)を構築する予定なので、httpsでの運用というのがキーになり、XSERVERはこれがやりやすい。XSERVERは使っている人が多いためWeb上に情報もたくさんあるし、XSERVERとしてもsslの無料キャンペーンをやっていたりで、いい環境が整っている。
また、情報量の差の他にも、単純に管理画面の操作性も全然違っている。以前の会社の管理画面はとっつきにくい操作画面なのに対して、XSERVERはそれなりの操作画面で比較的分かりやすいように思える(昔のXREAよりもひどい)。
ということで、まだ新サーバーを決めてない場合は、XSERVERがお勧め。
WordPressの引っ越し(サーバー変更)の全体像
何と何をすればいいのか?という全体像が分かっていないと、やりにくいと思うので、まずはそこから。
やることは、
引っ越し = データの移行 + サーバーの設定
の2つ。
ザックリというと旧サーバーから新サーバーに必要なデータを移行して、旧サーバーから新サーバーで動作するように設定をする。当然と言えば当然なのだが、やるのはそれだけだよ、ということをシンプルに捉えておくと分かりやすいのでは?と思う。
では、必要なデータとは具体的に何なのか?ということと、旧サーバーから新サーバーで動作するような設定とは具体的に何なのか?ということを次に書いていく。
必要なデータは画像やプラグインなどのファイルとデータベース(DB)の大きく2つ。
こちらのウェブさえというサイトが分かりやすく図で書いてくれているので、イメージをつかむにはもってこい。
WordPressサイトは、ファイルとデータベースという2種類の情報で成り立ってます。サーバーを移行するためには、この2種類の情報をそれぞれバックアップするのと、復元する作業が必要になります。
ファイルは、「WordPress本体のシステムファイル」、「テーマを構成するファイル」、「プラグインファイル」、「アップロードした画像ファイル」などを指します。
データベースは、「記事中のテキスト(文章やHTMLタグ)」「テーマ設定」「ウィジェット設定」「プラグイン設定」などの情報を格納してます。
引用:ウェブさえ
これらのデータを具体的にどうやって旧サーバーからダウンロードして、新サーバーにアップロードするのか?は次のセクション以降で。
旧サーバーから新サーバーで動作させるための9ステップ
これを9個のステップでやっていくことになる。
背景色がピンクなのが旧サーバーでやること、背景色が緑なのが新サーバーでやること。
全体像のところのデータの移行と書いている部分は1,2,5,6のステップが相当し、サーバーの設定と書いている部分は3,4,7,9のステップが相当する(ステップ8は動作確認)。
- データをFTPソフトを使ってダウンロード
- サーバーの管理画面からデータベースをダウンロード(phpMyAdminというツールを使ってエクスポート)
- 新サーバーにドメインを追加
- 新サーバーでデータベースの初期設定をする
- 新サーバーに必要なファイルをアップロード
- 新サーバーにデータベースをアップロード(インポート)
- 新サーバーでWordPressの設定ファイルを編集(wp-config.phpの修正)
- 移管の前に新サーバーで動くか確認
- 新サーバーで動くようにネームサーバの設定をする
この9つをやれば(8つめは確認なのでなくてもいいが)、最初に書いた旧サーバーから新サーバーに必要なデータを移行して、旧サーバーから新サーバーで動作するように設定をするというのが完了し、サーバーの引っ越しができる。
WordPressのサーバー引っ越し手順9ステップ
以下、具体的な引っ越しの手順をステップを踏んで書いておく。
ステップ1. 旧サーバーからデータをFTPソフトでダウンロード
運用のしかたよって変わるとは思うが、本サイトのように
https://ideasity.biz/
で運用しているのなら、public_html以下のデータを全部ダウンロードする(サーバーによって変わるが、WordPressを運用しているなら分かるはず。例えば、さくらサーバーならwww以下を全部)。
もし、
https://xxxxxx.com/wp/
のように何かしらディレクトリ(フォルダ)をつくってその中で表示させいる場合は、そのディレクトリ以下を全部ダウンロードする(public_html/wp/以下)。
ちなみに、たいていのサーバーがファイルマネージャというツールを使えるようにしているので、もちろん、それを使ってもOK。
ステップ2. 旧サーバーからデータベースをダウンロード(エクスポート)
FTPのソフトからは見えないのがデータベースのデータ。そこで、どのレンタルサーバーでもたいてい入っているだろうと思うphpMyAdminというツールを使ってデータベースをダウンロードする(エクスポートする)。
使っているサーバーによってphpMyAdminのバージョンが違って見え方は変わってくるとは思うが、以下のようにデータベースを指定してエクスポートする(xxxxx.sqlというデータがダウンロードされる)。
ステップ2-1. phpMyAdminにログイン
旧サーバーの管理画面からphpMyAdminを開く。どうやってphpMyAdminを開くかはサーバー会社によって変わるが、管理画面をみればそれらしいのがあるはず。データベースとかDBとかMySQLといった言葉の近くにあるはず。
ステップ2-2. 使用していたデータベースクリック
今まで使っていたデータベース名をクリックして、エクスポートをクリック。
ステップ2-3. データベースをエクスボートする
ここがくせ者で、3回目の引っ越しのときにここの設定がダメで引っ越し後にサイトが表示されなくなってしまった。私がつまづいたポイントは2つ。
つまづきポイント1(phpAdminでSQLのコマンドのチェック)
つまづきの1つは「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT コマンドを追加する」にチェックをしていなかったこと。
ネットでいろいろと調べてみたところサイトによってチェックを入れていたり入れていなかったりで、よく分からず。前の2回のサーバー引っ越しでは「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT コマンドを追加する」にチェックを入れなくても大丈夫だったので、今回もそれでいいやと思いきやダメだった。
正直、この設定は何を意味しているか分かっていない(笑)。なので、よく分からないままチェック入れなくてダメだったから、チェック入れたらいいか?と思ってチェックを入れたら無事できたというわけだ。要は適当に試行錯誤してやったらうまくいったという話。
ということで、お勧めは「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT コマンドを追加する」にチェックを入れる。
つまづきポイント2(phpAdminでデータベースを圧縮するかしないか)
もう1つのつまづきは圧縮。こちらもネットで検索するとサイトによってzipでOKだったり、圧縮するなだったりで書いてあることがバラバラ。
なので、圧縮して少しでも速くダウンロードとアップロードをしようと思って圧縮をしていた。前に2回引っ越ししたときにはzipで問題なくできていたのだが、なぜか、このサイト(IDEASITY)の移管の際には、zipで圧縮できないというエラーが発生した(4GB以上あったか忘れたが、zipは4GBの制限があるようなので、それでひっかかっていたかもしれない)。何度やってもダメなので、gzipに変えたら圧縮はうまくいった……ように思えた。
これが厄介だった。というのも、圧縮が成功したように見えて実はダメだったからだ……。データベースをインポート(アップロード)してサイトを表示させようにも表示しいないし、ログインすらできなかったのだ。gzipで圧縮を3回くらいやってもダメだったが、圧縮せずにインポートしたらうまくいったので、圧縮がおかしいと考えられる。
ということで、お勧めは圧縮しないままエクスボートする、だ。
ステップ3. 新サーバーにドメインを追加する
ステップ1.と2.は旧サーバーでやることだが、今度は新サーバーでの設定だ。
この設定は、自分のWordPressのドメインを新しいサーバーで動かすために必要な設定の1つになる。新サーバーでWordPressを動かすための“箱”をつくるようなイメージでいいかと思う。ドメインの追加をすることで旧サーバーで使っていたデータを格納するフォルダが作られる。
やり方はレンタルサーバー会社によって変わるが、XSERVERの場合はこんな感じ。
ステップ3-1.ドメインの追加ステップ1(ログインする)
まずは、サーバーパネルにログインして、ドメイン設定を選択する。
ステップ3-2. ドメインの追加ステップ2(ドメイン設定を選ぶ)
ドメイン追加設定をクリック。
ステップ3-3. ドメインの追加ステップ3(自分のドメインを追加する)
入力欄にドメインを記載して、.comなどを選択する。
ステップ4. 新サーバーへデータ(ファイル)をFTPソフトでアップロード
ステップ1.でダウンロードしたデータを新サーバにアップロードする。注意点としては、いきなりフォルダごとアップしないことだ。いきなり旧サーバーのデータを新サーバーに丸ごとアップロードしてしまうと、.htaccessといった設定ファイルが上書きされ、引っ越し後にサイトが表示されなくなる可能性があるため。
.htaccessというファイル以外はおそらく問題はないと思うが、もし旧サーバーのデータと同じ名前のファイルがあった場合は、一旦、新サーバーのファイルをバックアップすることをお勧めする。
私の場合、新サーバーの.htaccessをコピーして.htaccess_orgをつくりバックアップして、旧サーバーの内容と統合されるようにした(単に後ろに旧サーバーの.htaccessの内容を追記しただけ)。
public_htmlのフォルダ内のデータをアップロードするのは新サーバーがXSERVERなら、ステップ3で追加したドメイン名のフォルダの中にあるpublic_html内。
ステップ5. 新サーバーでデータベースの初期設定をする
ステップ4.でファイルの移行は済んだので、今度はデータベースを移行する。そのためには、データベースを扱うための準備(初期設定)が必要になる。具体的には3つ。データベースの入れ物をつくることと、そのデータベースを操作できるユーザーを追加すること、そして、追加したユーザーに権限を追加すること。
以下はXSERVERでのやり方だが、おそらく基本はどこでも一緒のはず。
ステップ5-1. MySQL設定へ進む
サーバーパネルにログインしたらデータベースのところにあるMySQL設定をクリック。
ステップ5-2. MySQL追加のタブを開いてデータベースを追加
MySQL追加のタブを開いてデータベース名を追加する。文字コードは旧サーバーの設定に合わせる。UTF-8が多いように思う。データベース名は後で使うので、どこかに記録するか確実に覚えるようにする。
ステップ5-3. MySQLユーザ追加のタブを開いてユーザーを追加
MySQLユーザ追加のタブを開いてユーザー名を追加し、パスワードを決める。ユーザー名とパスワードもこの後のステップで使うので、どこかに記録するか確実に覚えるようにする必要がある。
ステップ5-4. MySQL一覧のタブを開いて追加したデータベースのアクセス権を設定
MySQL一覧のタブを開くと、追加したデータベースが表示されるので、そのデータベースを扱えるユーザーを追加する。アクセス権見所有ユーザーというところに前のステップで追加したユーザーが表示されているので、それを選択して追加ボタンを押す
ステップ6. 新サーバーへデータベースをアップロード(インポート)
ステップ5.では、データベースの入れ物ができてそれを扱うユーザーが追加されただけなので、次は肝心なデータベースの中身を旧サーバーから持ってくる。
そのためには、ステップ2.で旧サーバーからダウンロード(エクスポート)したデータベースを新サーバーにアップロードして使えるように設定する(インポート)必要がある。
そこで、使われるのがステップ2.でも使ったphpMyAdminというツール。具体的なやり方は次のとおり。
ステップ6-1.phpMyAdminにログイン
ステップ6-2.インポートをクリックしてデータベースを取り込む
ファイルを選択から旧サーバーからエクスポートしたデータベースを選択して実行をクリック。文字セットとある部分は旧サーバーの設定に合わせて選ぶ。たいていはUTF8だとは思う(蛇足だが、UTF-8とハイフンがあっても、UTF8とハイフンがなくても同じ)。
ステップ7. 新サーバーでWordPressの設定ファイルを編集(wp-config.phpの修正)
ステップ6.でインポートしたデータベースを新サーバーにてWordPressが読み込むように設定するのがステップ7。そのためには、wp-config.phpという設定ファイルを編集する必要がある。ちなみに、wp-config.phpは、ステップ4.でpublic_htmlのところにアップロードされているはずだ。
データベース名やホスト名などを調べる方法
もし、データベース名などが分からない場合は、新サーバーの管理画面から確認する。XSERVERなら以下の手順で調べられる。
サーバーパネルにログインしたらデータベースの項目にある“MySQL設定”をクリックする。
MySQL一覧を見ると、データベースの一覧が表示されるので、それを見る。
ステップ8. DNSの設定の前に新サーバーで動くか確認する
ステップ7. までで必要なデータの移行とサーバーの設定はほぼ終了となる。
この時点では、まだ旧サーバーが動く設定になっている。なので、例えば、ideasity.bizというドメインにアクセスしたとしても、いままでどおり旧サーバーが動く状態だ。最後に新サーバーで動くように切り替えの設定をするのだが(DNS情報の変更)、この作業はやったら即時に反映されるものではなく、時間が多少かかるため、間違えているとしばらく動かなくなる空白の時間ができてしまう。なので、まずは本当に新サーバーが動いているか確認したほうが無難なのは当然だろう。
一旦、新サーバーが本当に動くのかテスト表示してみてから引っ越しを完了させるのがお勧めだ。
8-1. 動作確認の概要
詳しい説明は省くが、hostsというIPアドレスとドメイン名(正確にはホスト名)の対応表みたいな設定ファイルがどのPCにも普通は存在している。その設定を変更することで、自分の管理しているドメインが旧サーバーで動くように設定したり、新サーバーで動くように設定することができる(もちろん、自分のPC上の設定を変えるだけなので、他の人には影響はない)。
つまり、例えば、現時点でideasity.bizというドメインは183.90.232.49というIPアドレスのサーバーで動いているのだが、それを任意のIPアドレス(100.100.100.100など、何でも指定できる。もちろん他人のサーバーを勝手に指定しても意図した通りには動かないので意味はない)のサーバーで動くように設定できるということ。
なので、自分のPCのhostsファイルを変更することで、自分のPCだけが自分のサイトを表示させたときに新サーバーで動くように設定することができるということだ。
8-2. hostsファイルの変更
では、具体的にどうやってhostsファイルをいじればいいのか?
hostsファイルが置かれている場所はこちら。
Windows8/7/vista/XP:C:\WINDOWS\system32\drivers\etc\hosts
Mac OS X:/etc/hosts/
書く内容は簡単でIPアドレスとドメイン名をスペースで区切るだけ。
こんな感じで書かれているので、最後にドメイン名と新サーバーのIPアドレスをスペース(またはタブ)で区切って書き加える。例えば、
1.2.3.4 ideasity.biz
と書けば、自分のPCでideasity.bizにアクセスしたら1.2.3.4のサーバーにアクセスするようになる。1.2.3.4の部分を新サーバーのIPアドレスにすればいいというわけだ。
新サーバーの管理画面を見れば、おそらくはPアドレスは載っていると思うので、それを設定する。ないとは思うが、もしsv1234.xserver.jpのような形でしか掲載されておらず、IPアドレスが分からない場合は、こちらのCMANというサイトのDNSチェックページで簡単に調べられる。
あるいはターミナルやコマンドプロンプトからdig sv1234.xserver.jp、あるいはnslookup sv1234.xserver.jpとでも打てば分かる。
8-3. Macでhostsを変更する場合
hostsファイルはMacの場合、ルート直下のetcフォルダにある(/etc/hosts)。コマンドラインに慣れている人は、ターミナルからviで編集したほうが早いと思う。ただ、sudoコマンドを使わないと権限がなくていじれないので注意。また、言わずもがなではあるが、変更前のファイルはhosts_orgでも何でもいいので、念のためバックアップしておくことをお勧めする。
と書かれても何を言っているか意味不明の場合は、ファインダーからは表示されない隠しフォルダにhostsは置かれているので、隠しフォルダを表示させる設定(※)をしてから編集しよう。その場合も念のため必ず元々のhostsファイルはコピーして保存しておく。
※隠しフォルダを表示させる方法
Macの場合、ターミナルからしかできないようだが、次の2つをコピペして打ち込めばいいので難しくはない。
まずは、こちらを打ち込んで普段は隠しているフォルダやファイルを見えるようにする。
defaults write com.apple.finder AppleShowAllFiles -boolean true
次にファインダーの再起動が必要になるので、以下を打ち込む。
killAll Finder
これで終わり。もし、元に戻したい場合は、
defaults delete com.apple.finder AppleShowAllFiles
と打った後、また以下を打ち込んでファインダーを再起動させる。
killAll Finder
8-4. 本当に新サーバーで動いているのか確認する
無事表示されたとしても、旧サーバーのデータをそっくりそのまま新サーバーにコピーしただけなので、見た目だけでは区別がつかない。そこで、新サーバーで動いていることを目視で確認するために、新サーバーにだけ適当なhtmlをアップロードしてそのhtmlを表示させてみる。
中身は何でもいいので、こんな中身のtest.htmlでもつくってアップロードすればいい(<html></html>すらなくてもいい。文法としては良くないが確認するだけなら何の影響もない)。
<html>
new server!
</html>
http://自分のドメイン/test.htmlをブラウザで開いて「new server!」と出れば、新サーバーが動いている証拠になる。404 not foundみたいなのが出てエラーになったら旧サーバーが動いている。hostsが修正されていないか、ブラウザにキャッシュが残っていている可能性高いので、確認してみるといいだろう。
8-5. hostsの内容を元に戻す
確認が終わったら必ずhostsの内容は元に戻しておく。
ステップ9. 新サーバーで動作するようにDNSの設定を変える(ネームサーバーを新サーバーで管理しているサーバーに変更する)
ステップ8.が問題なく動いているようならドメインをとったところでネームサーバーの指定を変更する。この設定をすることで、あなたのWordPressのサイトをブラウザで表示しようとしたときに、旧サーバーではなく、新サーバーが動くようになる。ただ、多少時間がかかるので、設定を変更した1秒後には新サーバーで動くということはない。たいてい数時間もあれば、新サーバーで動くようになる。
※いわゆるDNSの浸透に関して気になる方はこちらが参考になる。
参考資料:DNSの浸透に関して(株式会社日本レジストリサービス)
ただ、今までサーバーの変更は何度もやってきたが、何も気にせずやっても数時間で問題なく動作しているので、あまり問題にはなっていないように思える。ちなみにTTLの値は、VALUE DOMAINだとデフォルトで1200秒になる。1200秒(=20分)なら浸透“問題”と言えるほど時間はかからなそうだ。
XSERVERへの引っ越しの場合
新サーバーをXSERVERにする場合は、ドメインを取ったところでネームサーバーを以下に変更する。ステップ3でドメインの追加というのをした時点で、XSERVERが指定するネームサーバーにドメイン名と新サーバーのIPアドレスの対応表ができあがっているので、ネームサーバーを変更することで旧サーバーから新サーバーへと切り替わるようになる。
トラブルシューティング
引っ越したときに起こったトラブルとその対処法をまとめておく。
サーバーエラーでページが表示されない(internal server error、500などのエラー画面になる)
wp-config.phpの設定ミスの可能性がある。私の場合は、ホスト名を修正し忘れていたためだった。
あるいは、.htaccessが旧サーバーと新サーバーで違う記述だったのに、旧サーバーのそれに上書きされてしまった可能性もある。バックアップしておいた.htaccessをもとに修正してみるといい。
一部の記事しか表示されない
固定ページは表示されるが、一般記事が表示されない。データベースがおかしい可能性がある。私の場合はまさにそれだった。旧サーバーでエクスボートしたときに圧縮したらうまく圧縮できていなかったようでダメになってしまったのだ。
なので、旧サーバーから再度データベースをエクスポートして、それをインポートし直してみるといい。
管理者でも一般ユーザでもログインできなくなった
パスワード忘れのところをクリックしても、そんなユーザーはいないとなってしまう。これもデータベースがおかしいのが原因となる場合がある。私はそうだった。
なので、旧サーバーから再度データベースをエクスポートして、それをインポートし直してみるといい。
トップページが表示されない
https://ideasity.biz としてもエラーになってしまってトップページが表示されないなんて場合は、index.htmlが存在していることがある。
サーバーによって変わってくる可能性はあるが、XSERVERの場合はindex.htmlが存在した場合、WordPressを使っていても、index.htmlを優先的に表示させるようになっている。
なので、index.htmlを削除するか名前を変更するといい。
まとめ
長くなったが、以上が引っ越しでやったことの全て。肝心なのはデータのバックアップ。前のデータがなくなってしまった……というのが一番厄介だからだ。
私は、何を思ったか間違えて旧サーバーのデータを消してしまった。なので、新サーバーの移管が仮に失敗しても旧サーバーで動かすという選択肢を自ら断ってしまった……。アホとしかいいようがないのだが、新サーバーでもトラブルシューティングのところに書いたとおりまともに動かなかったため、アクセス数が激減した。
こんなバカみたいなことにならないためにも、バックアップは確実に……。
参考にしたサイト
あと最後に感謝を込めて、参考にしたサイトをまとめておく。おかげで助かりました。ありがとうございます。
プラグインを頼らずWordPressのサーバー移行。新ドメインでも大丈夫!|ウェブさえ