WordPressで制作したサイトを別サーバーへ移行する作業が必要になり、方法をしらべるとduplicatorというプラグインで楽々に出来ることがわかりました。
サーバー移行で一通りやった流れを参考サイトを元にまとめておきます。細かい手順は参考記事が参考になりすぎるので当記事は補助的に見てもらえればと。
今回の例は、元のサーバーがロリポップ。新しいサーバーがさくらサーバーです。
この記事の概要は
・duplicatorをつかってサーバー移行を完了するまで
・新サーバーでベーシック認証がはずれてしまった
・さくらサーバーのサイトURLに/wp/がついてしまう
です。
duplicatorの使い方の参考
以下記事を参考にすれば完璧なので詳細な使い方は割愛。
旧サーバー側(ロリポップ)の作業
移行前のサーバー側での作業です。
1)プラグインで「duplicator」を検索し、インストール
検索で似たような候補が出てきますが、作者が「LifeInTheGrid」のプラグインを選んで下さい。以下のようなロゴです。
・Duplicator — WordPress Plugins
2)WordPress管理画面からduplicatorを使って移行用のデータを作成
duplicatorでのスキャン時、PHP Setupに警告がでました。
訳すと「max_execution_timeを150以上にして下さい。」とのことですが、規模の小さいサイトだからか問題なくビルドできました。
生成されたファイル(zipとinstaller.php)をダウンロードしておきます。
max_execution_timeについてはこちらが参考になります
・PHPスクリプトの実行時間を制御する(max_execution_time) - hogehoge foobar Blog Style5
ロリポップ側での作業はこれで完了。
新サーバー側(さくらサーバー)の作業
こちらは移行するサーバー側での作業です。
1)サーバーコントロールパネルにアクセスし以下の作業をします
コントロールパネル画面はこちら(さくらインターネットサーバコントロールパネル)
・データベースを作成
・WordPressをクイックインストール
(ひとまず/wp/ディレクトリにインストールしました。)
参考:WordPressでブログを始めよう!|さくらインターネット公式サポートサイト
2)duplicatorで生成したデータファイル(zipファイル)とinstaller.phpをアップロード
旧サーバーでduplicatorで生成したファイルを、先ほどWordPressをインストールした「wp」フォルダ内にFTPでアップロードします。
3)http://ドメイン名/wp/installer.phpへアクセス
ブラウザでinstaller.phpにアクセスするとフォームが表示されます。参考記事をもとにフォームを入力し、実行。
ここでエラー発生。
翻訳すると「すでにDBに情報があります。duplicatorは空のDBで動きます」のような内容です。WordPressをクイックインストールした時にサンプルデータが作成されたのでしょうか。
さくらのサーバーコントロールパネルからphp my adminにログインし、DB内のデータを削除します。
php my adminには
コントロールパネルの「データベースの設定」→作成したデータベースの「管理ツール ログイン」
からログインできます。
4)再度実行
今度は別のエラーが発生
INSTALL ERROR!
A wp-config.php already exists in this location. This error prevents users from accidentally overwriting the wrong directories contents. You have two options:
Empty this root directory except for the package and installer and try again.
Delete just the wp-config.php file and try again. This will over-write all other files in the directory
「すでにwp-config.phpがあります」とのことです。
FTPで/wp/ディレクトリ内のwp-config.phpを削除。
5)再度実行
成功!
これで「http://ドメイン名/wp/」にアクセスするとサーバー移行前と全く同じサイトが見れるようになりました。インストールしたプラグインや記事IDもそっくりそのまま!最後にinstaller.phpは削除しておきます。
新サーバー側でベーシック認証がはずれてしまった
新サーバー側でベーシック認証を再設定
今回はテスト環境からテスト環境への引っ越しでした。まだ非公開なのでベーシック認証を再度かけ直します。
duplicatorでデータ移行した場合も.htaccessは書きなおす必要があります。
(.htaccess.origというファイル名で移行元の.htaccess情報は残っています。)
ベーシック認証をかけるために必要な.htaccessを読みに行くフルパスがロリポップとさくらサーバーでは違うので変更します。
・ロリポップ側 .htaccessのベーシック認証設定例
ユーザー専用ページ→「アカウント情報」にフルパスが載っています
AuthUserFile /home/users/0/○○○○○○○○/web/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
この「AuthUserFile」の部分を以下のように変更します。
・さくらサーバー側 .htaccessのベーシック認証設定例
AuthUserFile /home/●●●●●●●●●/www/wp/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
●●●●●●●●●には「●●●●●●●●●.sakura.ne.jp」が入ります。
参考:さくらインターネットでのBasic認証におけるAuthUserFileについてのメモ|Webディレクター視点で語るWeb制作・開発Tipsブログ【Labs to Web】
これでベーシック認証が動きます。
.htpasswdは移行前と同じなので、ID、PASSは旧サーバーと同じでOKです。
サイトのURLが「http://ドメイン名/wp/」になってしまうので「wp」を消したい
さくらサーバーのwpディレクトリの変更
さくらサーバーでWordPressをかんたんインストールする際、設置ディレクトリを指定しなければいけません。よくある例では「wp」ディレクトリを指定しインストールしますが、実際にサイトが表示されるディレクトリも「http://ドメイン名/wp/」になってしまいます。
この「wp」、消したいですよね。
1)WordPressの管理画面で「サイトアドレス(URL)」を変更
WordPress管理画面→「設定」→「一般」
ここの「サイトアドレス (URL)」を
http://ドメイン名/wp
↓
http://ドメイン名
に変更し保存。
2)FTPで「.htaccess」と「index.php」を移動
「/wp/」フォルダ直下にある.htaccessとindex.phpを「/www/」フォルダ直下へコピー
3)「.htaccess」の編集
先ほどコピーした.htaccessを開き、以下の部分を変更。
RewriteBase /wp/
↓
RewriteBase /
RewriteRule . /wp/index.php [L]
↓
RewriteRule . /index.php [L]
「wp/」を削除しました。
4)「index.php」の編集
先ほどコピーしたindex.phpを開き、以下の部分を変更
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
↓
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
こちらは「wp/」を追加しました。
これで「http://ドメイン名」にアクセスしてサイトがみれるようになりました。
参考:サブディレクトリにインストールしたWordPressをルートディレクトリ表示に変更(さくらインターネット編) | 西沢直木のIT講座
プラグインを使わずにサーバー移行する場合はこちら
・プラグインを頼らずWordPressのサーバー移行。新ドメインでも大丈夫!
・WordPressをロリポップからさくらサーバーへ移管する方法 | 自分のアップデート
プラグインを使ったら早いし簡単なので、それはそれでいいのですが、
何がどうなっているのか仕組みをちゃんと理解したうえでデータを移行できるに越したことはないですね。