WordPressで作成したサイトをXserverに移転することにしたのですが、マニュアルに書いていないところもあり、つまづいたので情報をまとめておきます。手動で移行する場合はphpMyAdminのインストール、エクスポートしたデータベースの編集が必要でした。
WordPress簡単移行のマニュアル
https://www.xserver.ne.jp/manual/man_install_transfer_wp.php
簡単移行が使えないときの手動移行マニュアル
https://www.xserver.ne.jp/manual/man_install_transfer_wordpress.php
手動移行の3つのつまづきポイント
・移行元のサーバーにphpMyAdminをインストールしてデータベースの情報をエクスポート
・Xserverのサーバーにデータベース情報をインポートする時のエラー
・データベースのサイトURLの変更(必要な場合)
その前に:WordPress簡単移行は本当に使えませんか?
マルチサイトなど、一つのサーバに複数のサイトを入れてたりする場合にこのWordpress簡単移行が使えないことがあります。一方で入力ミスによりエラーが出ていることもあります。筆者の場合、3つ目のフィールドへの入力で’wordpress’のみを入力すべきところ、’wordpress/wp-login.php’と打ち込んでいたせいでWordpress簡単移行を使うことができませんでした。

手動でサイトを移行する時の手順
手動でサイトを移行する際にやることは大きく分けて下記の5つです。
- 移行元のWordpressのデータをダウンロード(バックアップ)する
- 移行元のデータベースファイルをエクスポートする
- Xserver上に新規DataBaseを作成し、移行元のデータベースファイルをインポート
- 移行元のWordpressのwp-config.phpのデータベース設定を変更して、移行元のデータを移行先にアップロード
- データベースのサイトURLの変更(必要な場合)
つまづき①:phpMyAdminでデータベースのエクスポート
推奨されているphpMyAdminをインストールして、データベースのエクスポートを行います。
こちらがphpMyAdminのメインページです。サーバーで使用しているphpのバージョンによって使えるphpMyAdminのバージョンも異なるので注意が必要です。phpのバージョンが7.2以上であれば最新のphpMyAdmin-5.2.0が使えますので、本記事ではphpMyAdmin-5.2.0のインストールを前提に進めていきます。
phpMyAdminのインストール手順
楽をするために、nginxの公開フォルダに移動して、直接公開フォルダでzipを解凍してインストールする作戦で行きます。sshでサーバーに移動した後、下記のような流れでインストールします。
#nginxの公開フォルダに移動(たいていの方はvar/www/htmlかと思います。)
$ cd /var/www/html
# 公式サイトのダウンロードリンクよりwgetでファイルをダウンロード
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip
# ファイルを解凍
$ sudo unzip phpMyAdmin-5.2.0-all-languages.zip
# ここで、phpMyAdmin-5.2.0-all-languagesというフォルダができているので、このフォルダをphpMyAdminにリネームする
sudo mv phpMyAdmin-5.2.0-all-languages phpMyAdmin
# nginxのユーザーであるwww-dataに権限をつける
sudo chown -R www-data:www-data . /var/www/html/phpMyAdmin
ここまで完了したらブラウザからアクセスしてみます。
http://IPアドレスもしくはドメイン名/phpMyAdmin

このような画面が出れば成功です。
mySQLのIDとパスワードを入力するとログインできます。
このユーザー名とパスワードはphpでデータベースを作成するときに作ったユーザー名とパスワードであり、wordpressのユーザー名とパスワードとは異なるのでご注意ください。
無事ログインできるとこのような画面が出ます。

データベースのIDやパスワードを忘れた場合
データベースのパスワードは見れませんが、IDとパスワードが設定されているかは確認することができます。
sshで接続後、root権限でmySQLにログインします。その後下記コマンドでIDとパスワードのハッシュ値を見ることができます。
root権限でmySQLにログイン
$ sudo mysql -u root -p
パスワードとハッシュ値の取得
SELECT Host, User, authentication_string FROM mysql.user;
すると以下のように情報が出てきます。パスワードが設定されていない場合は下記のuser1のようにauthentication_stringが空欄になります。
+-----------+------------------+------------------------------------------------------------------------+
| Host | User | authentication_string |
+-----------+------------------+------------------------------------------------------------------------+
| % | user1 | |
| % | wordpress | $A$005$m1Dx@4%T/ _2b}vlinfBSz1ct.BVtfrnrwe27tMxs4AucRIScZZYDU7klQ0 |
| localhost | debian-sys-maint | $A$005$o~fX3y].t\8woa(/vr{O5vU4UeiFzbLD5ZQcqRBR5h6gPcGZqwOeP8XPki2C/. |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
+-----------+------------------+------------------------------------------------------------------------+
詳しくはこちらのページに書かれています
データベースのエクスポート
タブの中央あたりにエクスポートをクリックするとエクスポート設定画面に遷移します。
マニュアルには下の図のように注意書きがありましたが、エクスポートはデフォルト設定のままでOKでした。

localhost.sqlというファイルがダウンロードできれば完了です。
つまずき②:データベースのインポート
エクスポートしたlocalhost.sqlをそのままXserver側にインポートしようとしても下の図のようにエラーがでます。
これはエクスポートしたファイルに「エクスポートした名前のDataBaseがない場合に新たにエクスポートした名前のデータベースを作成してそれを用いる」という記述があることが原因です。

#1044 – Access denied for user [ユーザー名] @ `localhost` to database [移管元のデータベース名]というエラーがでます。
対策として、エクスポートしたlocalhost.sqlファイルを開き、下記2行をコメントアウトします。
# ファイルの上段にある下記2行を変更
CREATE DATABASE IF NOT EXISTS `[Dara Base 名]` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
USE `[Dara Base 名]` ;
# このようにハイフン2個とスペースでコメントアウトする。
-- CREATE DATABASE IF NOT EXISTS `[Dara Base 名]` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- USE `[Dara Base 名]` ;
変更後のファイルは正常にインポートできるはずです。

つまずき③:データベースのURL変更
ここまで作業してきましたが、Xserverへの移行時にURLも変更するような場合、WordPressのデータベースのURLを変更しておかないと、古いURLにリダイレクトされます。データべースはPHPmyAdminから変更してしまいましょう。データベースの項目から、’phpmyadmin’を開きます。

ツリーからwp_optionsを選択し、’siteurl’と’home’のURLを新しいものと置き換えます。

以上、意外とつまずきポイントがありました。
本記事はここまでです。ご覧いただきありがとうございました。