WordPressでてきている動的サイトと、HTMLで書かれた静的サイトをサーバー移転しました。
WordPress部分はプラグイン「All-in-one WP Migration」を利用し、HTML部分と画像類はFTPソフトを使う従来の方法を取りました。
WordPressとHTMLが混在するサイト
プロジェクトの概要と実現したいことは別の記事で詳しく書いたのでよければ参考にしてみてほしいです。
今回、やりたいことは以下の通り。稼働中のサービスサイトなので慎重に作業していきます。
- 旧サーバーからデータをダウンロード
- WordPressのデータをバックアップ
- ネームサーバ―の変更前に新サーバーへ接続する設定(hostsファイル編集)
- 新サーバーへデータをアップロード
- WordPressをインストールし、復元
- サブディレクトリに設置したWordPressのURLを変更
- ネームサーバ―の変更
ディレクトリ構成
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でした。
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-content
→uploads
の中に年月ごとに入っています。
※プラグインにより他のフォルダができていることもあります。
今回はメディアファイル2020
と2021
をダウンロードしました。
また、HTMLで作られたサイト部分のfolder-1
、folder-2
、folder-3
もダウンロードしました。
移行先サーバーへのアクセス設定(hostsファイル編集)
さて、次は移行先サーバーへデータをアップロード&WordPressをインストールするのですが、 「All-in-one WP Migration」 は新旧両方のWordPressにプラグインをインストールして複製する仕組みになっています。
ドメイン(URL)は変わらないため、このままではネームサーバ―を変更するまで移行先サーバーのWordPressにアクセスができないという状態になります。
そこで、ネームサーバ―を変更する前に自分のPCから新サーバーへアクセスできるようhostsファイルを編集し、サイトのコピーを確認してからネームサーバ―を変更するようにします。
hostsファイルの編集(windows)
今回、移行先はエックスサーバーです。
サーバーパネル>サーバー情報にて、IPアドレスを確認します。
hostsファイルは管理者権限がないと上書き保存ができません。
検索バーから「メモ帳」で検索→メモ帳を右クリックするか、より管理者として実行します。
メモ帳のファイル>開くより、hostsファイルを開きます。
場所はC:\WINDOWS\system32\drivers\etc\
の中のhosts
です。
一番下の行に新しく「サーバーIPアドレス + 半角スペース + ドメイン名」を追記し、上書き保存します。
例:yyy.yyy.yyy.yyy example.com
設定したドメインにアクセスすると、新サーバーにアクセスすることができます。
まだ何もアップロードしていないので、エックスサーバーの初期ページが表示されました。
新サーバへデータをアップロード
前述のとおり現在は容量を増やす 「All-in-One WP Migration File Extension」 の無料配布がありません。
今回は何故かアップロード初期値が1GBだったので普通に復元できました。
WordPressのインストールと復元
さて、今回WordPressのインストール先を変更します。
もともとルートディレクトリにあったのですが、諸事情がありサブディレクトリにインストールします。
その辺のURL書き換えはプラグイン 「All-in-One WP Migration」 が自動で行ってくれるので便利です。
エックスサーバーの簡単インストール機能でWordPressをインストールします。
このとき、サイトURLの欄でサブディレクトリを指定します。(なければ勝手に作成されます)
ユーザー名やパスワードは 「All-in-One WP Migration」 で復元すると元のサイトと同じになるので、初回ログイン時のみ利用します。
「All-in-One WP Migration」 プラグインをインストールし、復元します。
「パーマリンク構造を保存する」をクリックするとログイン画面になるので、旧サーバーと同じID/PASSでログインし、設定を保存します。
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
で表示するように設定します。
設定>一般設定の「サイトアドレス(URL)」を変更します。ついでにHTTPS化もしておきます。
http://example.com/folder-4
→https://example.com
WordPressアドレス(URL)もHTTPS化します。※ここはサブディレクトリのまま
http://example.com/folder-4
→https://example.com/folder-4
folder-4
の中にある.htaccess
をルートディレクトリにコピーします。folder-4
の中にあった.htaccess
は削除しても残しておいてもどちらでも大丈夫ですが、今回は残しておきました。
※今回のパターンでは、public_html
がルートディレクトリにあたります。
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
はそのまま編集前の状態で残しておきました。
これで設定は完了!と思いきや、まだエックスサーバーの初期ページが表示されます。index.php
よりindex.html
が優先されているのですね。
そのため、ルートディレクトリにあるindex.html
(とdefault_page.png
)を削除します。
https://example.com
でページが表示されるようになりました!
通常、画像やファイルを指定する際は/img.jpg
などと記載するのですが、たまにhttps://example.com/img.jpg
などの絶対アドレスで記載している場合があります。
今回の移行でWordPressのインストール先はfolder-4
ですから、メディアファイルのURLはhttps://example.com/folder-4/img.jpg
に変わっています。
画像が表示されないな?と思ったら画像URLを確認して再設定しましょう。
ネームサーバ―の変更
さて、新サーバーでページが表示されるようになりましたが、これはhostsファイルを編集して自分のPCでのみアクセスできる状態です。
移行に問題がないかざっと確認したら、ネームサーバ―をエックスサーバー指定のものに変更します。
今回はメールサーバーやBASEを別途設定していたので、ネームサーバ―を変更した後、そちらのレコードも忘れずにエックスサーバーで追加しておきます。
ネームサーバ―を変更した直後は新サーバー、旧サーバーどちらに繋がるか不安定な状態になります。
最大72時間で完全に切り替わると言われているので、その間はどちらのサーバーも契約したままにしておきましょう。