WordPressを含むサイトのサーバー移転

WordPressでてきている動的サイトと、HTMLで書かれた静的サイトをサーバー移転しました。
WordPress部分はプラグイン「All-in-one WP Migration」を利用し、HTML部分と画像類はFTPソフトを使う従来の方法を取りました。

この記事は単体でもお読みいただけますが、とあるプロジェクトで実際に行った作業の一部となっております。

目次

WordPressとHTMLが混在するサイト

プロジェクトの概要と実現したいことは別の記事で詳しく書いたのでよければ参考にしてみてほしいです。
今回、やりたいことは以下の通り。稼働中のサービスサイトなので慎重に作業していきます。

今回のフロー
  1. 旧サーバーからデータをダウンロード
    • WordPressのデータをバックアップ
  2. ネームサーバ―の変更前に新サーバーへ接続する設定(hostsファイル編集)
  3. 新サーバーへデータをアップロード
    • WordPressをインストールし、復元
  4. サブディレクトリに設置したWordPressのURLを変更
  5. ネームサーバ―の変更

ディレクトリ構成

public_html直下にインストールされているWordPressをfolder-4へ移動させます。
URLは変わらずexample.comでWordPressサイトを表示します。

www
  └ public_html / index.php       ← URL:example.com
     ├ wp-admin / ~略~
     ├ wp-content / ~略~
     ├ wp-includes / ~略~
     ├ folder-1 / index.html    ← URL:example.com/folder-1
     ├ folder-2 / index.html    ← URL:example.com/folder-2
     └ folder-3 / index.html    ← URL:example.com/folder-3
www
  └ public_html / index.php
     ├ folder-1 / index.html    ← URL:example.com/folder-1
     ├ folder-2 / index.html    ← URL:example.com/folder-2
     ├ folder-3 / index.html    ← URL:example.com/folder-3
     ├ folder-4 / index.php     ← URL:example.com
         ├ wp-admin / ~略~
         ├ wp-content / ~略~
         └ wp-includes / ~略~

移転元サーバーからデータをダウンロード

※事前に移転先のエックスサーバーにてドメイン追加・SSL設定を済ませてあります。

WordPressをバックアップ(プラグイン利用)

2021年8月時点で、復元時の容量を増やす公式追加プラグイン「All-in-One WP Migration File Extension」の無料配布が終了しています。
過去にこの追加プラグインを使ったことがあり、手元にall-in-one-wp-migration-file-extension.zipがある場合や、運用中のWordPressにインストールされている場合はなんとかなりますが、使ったことがない場合は有料版を使うか、プラグインを使わない方法・別のプラグインを探す必要があります。

All-in-One WP Migration」というプラグインを使ってWordPressをデータベースごとバックアップします。
このとき、復元時に無料でアップロードできる512MB以内を目安に、オプションを調整します。

今回は、「投稿リビジョンをエクスポートしない」「メディアライブラリをエクスポートしない」設定で、約180MBでした。

ちなみに、オプションなしですべてエクスポートすると約911MBでした。

HTML部分、メディアファイルをFTPソフトを使ってダウンロード

HTML部分と容量が大きいWordPressのメディアファイルをFTPソフトを使ってコピーします。
FTPソフトは何でもいいと思いますが、私は「FileZilla」を使っています。

WordPressのメディアファイルの場所

www
  └ public_html / index.php
     ├ wp-admin / ~略~
     ├ wp-content / ~略~
         └ uploads
             ├2020
             └2021
     ├ wp-includes / ~略~
     ├ folder-1 / index.html
     ├ folder-2 / index.html
     └ folder-3 / index.html

WordPress設定にもよりますが、wp-contentuploadsの中に年月ごとに入っています。
※プラグインにより他のフォルダができていることもあります。

今回はメディアファイル20202021をダウンロードしました。
また、HTMLで作られたサイト部分のfolder-1folder-2folder-3もダウンロードしました。

移行先サーバーへのアクセス設定(hostsファイル編集)

さて、次は移行先サーバーへデータをアップロード&WordPressをインストールするのですが、 「All-in-one WP Migration」 は新旧両方のWordPressにプラグインをインストールして複製する仕組みになっています。
ドメイン(URL)は変わらないため、このままではネームサーバ―を変更するまで移行先サーバーのWordPressにアクセスができないという状態になります。

そこで、ネームサーバ―を変更する前に自分のPCから新サーバーへアクセスできるようhostsファイルを編集し、サイトのコピーを確認してからネームサーバ―を変更するようにします。

hostsファイルを編集すると、そのPCからのアクセスのみDNSサーバーの影響を受けなくなります。

hostsファイルの編集(windows)

STEP
移行先サーバーのIPアドレスを確認

今回、移行先はエックスサーバーです。
サーバーパネル>サーバー情報にて、IPアドレスを確認します。

STEP
管理者としてメモ帳を開く

hostsファイルは管理者権限がないと上書き保存ができません。
検索バーから「メモ帳」で検索→メモ帳を右クリックするか、より管理者として実行します。

STEP
最下部に追記し、上書き保存

メモ帳のファイル>開くより、hostsファイルを開きます。
場所はC:\WINDOWS\system32\drivers\etc\の中のhostsです。

一番下の行に新しく「サーバーIPアドレス + 半角スペース + ドメイン名」を追記し、上書き保存します。

例:yyy.yyy.yyy.yyy example.com

STEP
確認が終わったら、元に戻す

設定したドメインにアクセスすると、新サーバーにアクセスすることができます。
まだ何もアップロードしていないので、エックスサーバーの初期ページが表示されました。

この設定は一時的な動作確認のため、移行が終わったら追記した項目を削除し、元にもどしておきます。

新サーバへデータをアップロード

前述のとおり現在は容量を増やす 「All-in-One WP Migration File Extension」 の無料配布がありません。
今回は何故かアップロード初期値が1GBだったので普通に復元できました。

WordPressのインストールと復元

さて、今回WordPressのインストール先を変更します。
もともとルートディレクトリにあったのですが、諸事情がありサブディレクトリにインストールします。
その辺のURL書き換えはプラグイン 「All-in-One WP Migration」 が自動で行ってくれるので便利です。

STEP
WordPress簡単インストール

エックスサーバーの簡単インストール機能でWordPressをインストールします。
このとき、サイトURLの欄でサブディレクトリを指定します。(なければ勝手に作成されます)

ユーザー名やパスワードは 「All-in-One WP Migration」 で復元すると元のサイトと同じになるので、初回ログイン時のみ利用します。

STEP
バックアップから復元

「All-in-One WP Migration」 プラグインをインストールし、復元します。
「パーマリンク構造を保存する」をクリックするとログイン画面になるので、旧サーバーと同じID/PASSでログインし、設定を保存します。

パーマリンク構造を保存すると .htaccess が作成(更新)されるため、特に変更がなくても行う。

HTML部分、メディアファイルをFTPソフトを使ってアップロード

FTPソフトでダウンロードしたファイルを元に戻します。
今回、WordPressのインストール先が変更になっているため、メディアファイルのアップロード先も変わります。

www
  └ public_html / index.php
     ├ folder-1 / index.html
     ├ folder-2 / index.html
     ├ folder-3 / index.html
     └ folder-4 / index.php
        ├ wp-admin / ~略~
        ├ wp-content / ~略~
            └ uploads
                ├2020
                └2021
        └ wp-includes / ~略~

サブディレクトリに設置したWordPressのURLを変更する

今回、WordPressをfolder-4というサブディレクトリにインストールしたので、現状のURLはhttp://example/folder-4となっています。
これをhttp://example.comで表示するように設定します。

STEP
管理画面からサイトURLを変更

設定>一般設定の「サイトアドレス(URL)」を変更します。ついでにHTTPS化もしておきます。

http://example.com/folder-4https://example.com

WordPressアドレス(URL)もHTTPS化します。※ここはサブディレクトリのまま

http://example.com/folder-4https://example.com/folder-4

STEP
.htaccessファイルをコピー(上書き)する

folder-4の中にある.htaccessをルートディレクトリにコピーします。
folder-4の中にあった.htaccessは削除しても残しておいてもどちらでも大丈夫ですが、今回は残しておきました。

※今回のパターンでは、public_htmlがルートディレクトリにあたります。

STEP
index.phpを修正する

folder-4の中にあるindex.phpをダウンロードして編集します。

17行目辺りのrequire DIR . '/wp-blog-header.php';に、サブディレクトリを追記します。

修正前 require DIR . '/wp-blog-header.php';
修正後 require DIR . '/folder-4/wp-blog-header.php';

修正したものをルートディレクトリにアップロード(上書き)します。
今回もサブディレクトリのindex.phpはそのまま編集前の状態で残しておきました。

STEP
index.htmlを削除する

これで設定は完了!と思いきや、まだエックスサーバーの初期ページが表示されます。
index.phpよりindex.htmlが優先されているのですね。
そのため、ルートディレクトリにあるindex.html(とdefault_page.png)を削除します。

https://example.com でページが表示されるようになりました!

STEP
絶対アドレスに注意

通常、画像やファイルを指定する際は/img.jpgなどと記載するのですが、たまにhttps://example.com/img.jpgなどの絶対アドレスで記載している場合があります。

今回の移行でWordPressのインストール先はfolder-4ですから、メディアファイルのURLはhttps://example.com/folder-4/img.jpgに変わっています。

画像が表示されないな?と思ったら画像URLを確認して再設定しましょう。

basic認証などでアクセス制限をかけていた場合、作業後に解除されることがあるため、設定を見直してください。

ネームサーバ―の変更

さて、新サーバーでページが表示されるようになりましたが、これはhostsファイルを編集して自分のPCでのみアクセスできる状態です。

移行に問題がないかざっと確認したら、ネームサーバ―をエックスサーバー指定のものに変更します。
今回はメールサーバーやBASEを別途設定していたので、ネームサーバ―を変更した後、そちらのレコードも忘れずにエックスサーバーで追加しておきます。

ネームサーバ―を変更した直後は新サーバー、旧サーバーどちらに繋がるか不安定な状態になります。
最大72時間で完全に切り替わると言われているので、その間はどちらのサーバーも契約したままにしておきましょう。

hostsファイルの設定削除も忘れずに!

ブログランキング・にほんブログ村へ
↑クリックしてもらえると励みになります!
よかったらシェアしてね!
目次