WordPressは、大きく分けると2種類のデータで動いています。データベース(MySQL)とそれ以外のファイルの二つです。そして、WordPressの引っ越し(移転・移行)では、この2種類のデータを個別に移動させる必要があります。
1)データベース(MySQL)の移動(エクスポート及びインポート)
2)データベース以外のファイル(サイトデータ)の移動(ダウンロード及びアップロード)
以下では、Xserver以外(移動元)からXserver(移動先)へのサーバー間の引っ越し(移転・移行)を想定しています(ドメインの変更を伴うサーバーの引っ越しも含みます)。なお、移動元での操作でもXserverを使って説明している箇所があります。
ところで、上記のエクスポートとダウンロード、及びインポートとアップロードは、それぞれ同義語と考えてよいでしょう。
3)各種の設定変更が必要
WordPressは、これら2種類のデータをただ単に移動させただけでは動きません。データを移動させるとともに、WordPressとデータベース(MySQL)を関連付けるための設定変更や、サーバーがXserver以外からXserverに変わったことを知らせる設定変更が必要となります。さらに、ドメインの変更を伴うサーバーの引っ越しの場合には、データベース内の旧ドメイン設定を新ドメインに書き換えることも必要です。(最下段にて詳説)
いずれにしても、まずは移動元のバックアップを取ることになります。バックアップ作業は、トラブルがあったときの対応のためにも必要不可欠なことです。WordPressを使っていて不具合が生じることはまれではありません。テーマやプラグインの設定時などは、特に気を付ける必要があります。定期的にバックアップを取る習慣を付けることが大切です。
以下では、Xserverの公式マニュアル「Xserver >> マニュアル >> WordPressの移転について」 を基にして、私なりに手順及び考え方をまとめてみました。
https://www.xserver.ne.jp/manual/man_install_transfer_wordpress.php
Xserverのサポートがすごい
今回ちょっとしたことから、Xserver以外のレンタルサーバーからXserverへ、WordPressを引っ越ししてみようと思い立ちました。Xserverは以前から盛用しており、WordPressもほかのサーバーで導入したことはあります。しかし、XserverではWordPressはほとんど使ったことはありませんでした。
今回は、Xserver以外で記事数が百数十までに育ったWordPressを、Xserverに移し替えて本格的な運用を図りたいと考えました。しかし、WordPressには少し慣れてきたとはいえ、WordPressの引っ越しは経験したことがありません。上記Xserverの公式マニュアルを手元に置いて作業を進めるのですが、どうしてもどこかで引っかかってしまいます。
その度に、Xserverのカスタマーサポートを頼ることになってしまいました。疑問点が出るたびにメールを入れました。夜間に作業することが多いのですが、翌日の午前11時ころには丁寧な回答が届きます。それを見てまた夜に作業をして、よく分からないことがあればまたメールする、すると翌日午前の同じ頃また回答が届くということの繰り返しです。
データベースやサイトデータを幾度となく入れ替え、設定をやり直しました。そして、やっと今日満足のいく結果を得ることができました。
Xserverのサポートは素晴らしいの一言に尽きます。まず最初に、こちらの疑問点・問題点をきちんと把握していただけるので安心感があります。そして次に、的確な対応方法を示していただけるので、無駄な作業をすることがありません。
メールを何度もやり取りすることになったのは、こちらの理解不足からです。今回のメールのやり取りで、インターネットとサーバー及びWordPressとの関係・仕組み、あるいは考え方を理解することができました。
Xserverのサポートは昼夜を問わず行われているのでしょうか。少なくとも今日7月2日(日)も同じタイミングで、違うサポーターの方の名前でメールが届きました。一つの案件について連携プレーもうまくできているのでしょう。2017/6/27~7/2
Xseverにしない理由が私には思い当たりません。
移動元データをバックアップする
手順1)データベース(MySQL)のバックアップ(phpMyAdminを使う)
データベース(MySQL)のバックアップには、「phpMyAdmin」の「エクスポート」機能を使う。
もちろん、プラグイン(BackWPupなど)や、レンタルサーバー付属のバックアップツール(Xserverにも有り)を使用することもできる。しかしながら、WordPressはデリケートな部分があるようで、いざデータを復元しようとするとエラーが出ることがある。
そこで、「phpMyAdmin」を使うとよい。後々エラーの雨霰(あめあられ)にやられてしまわないためには、次のようなステップで必要な項目にチェックを入れながらやっていくことになる。この方法が結局は一番確実である。
「phpMyAdmin」を立ち上げる(以下、Xserverの場合で説明)
XServerにログインして、「XSERVERアカウント」画面を開く。
ご契約一覧 >> 「サーバー管理」ボタンを押して、「サーバーパネル」画面を開く。
設定対象ドメインを設定する→Akimasa21.Net
データベース >> phpmyadmin(MySQL5.7)
データベースを指定してダウンロードする(phpMyAdminを使う)
「phpMyAdmin」画面一番左のサイドで、ダウンロードすべきデータベースを選択する
(当然ながら一番最初にやるべき最も大切な操作である)
データベース名: akimasa21_kusuri
URLは「yakugai」だが、データベース名は「~kusuri」(2020/06/07現在)としている。
テーブルがExcelの表のような感じで表示されるので、全ての行にチェックを入れる
エクスポート、クリックする
エクスポート方法 ⇒ 「詳細 – 可能なオプションをすべて表示」チェックを入れる
「実行」ボタンを押すと、「akimasa21_kusuri.sql」がダウンロードされる。
ユーザー名、パスワードの確認(wp-config.php)
ユーザー名、パスワードの入力を求められた場合は、必要に応じて対応する。
ユーザー名・パスワード情報は、wp-config.phpに書き込まれているので、以下のとおり確認する。(Webに組込み済みのFTPを使う)
「サーバーアカウント」画面 >> ファイル操作 >>「ファイル管理」ボタンを押すと、
「WebFTP」画面が開く。
web-config.phpは、以下のフォルダに入っている。
akimasa21.net >> public_html >> yakugai
フォルダ(ファイル)一覧の中から、web-config.phpにチェックを入れる。
「ファイルの操作(編集)」で開いて以下を確認する。
/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘akimasa21_****’);
/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘********’);
注)上記の場合には、サブドメインの設定になっている。
つまり、https://yakugai.akimasa21.net/である。
この場合、akimasa21.net >> public_htmlの下にあるサブドメイン名フォルダ(yakugai)の中に、
データベース「akimasa21_kusuri」とPHPファイル「web-config.php」が入っている。
サブドメインではなく、akimasa21.netに直接WordPressを設置しているならば、
つまり、https://www.akimasa21.net/ならば、
データベース及びwp-config.phpのある場所は、akimasa21.net >> public_htmlフォルダとなる。
2018/07/03時点の書き込み
なお、2018/07/03作成のマニュアルでは、以下の設定を行っている。
その当時とは設定画面も異なっているようである。
エクスポート、クリックする
エクスポート方法 ⇒ 「詳細 – 可能なオプションをすべて表示」選択
全選択/全選択解除 >> 全選択された状態(デフォルト)のままでOK
出力 >> ファイルの文字セット:utf-8(絶対にこのままで手を付けないこと)
出力 >> 圧縮「なし」が一番確実。データベースが大きくて圧縮したいときは、移動先でインポートファイルとして採用されている形式を事前に調べておく必要がある(zip、gzipあるいはbzip2形式など)。
フォーマット特有のオプション >> コメントの表示、チェックを入れる
フォーマット特有のオプション >> 構造とデータ、チェックを入れる
生成オプション:チェックが必要(重要)
「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する」、チェックを入れる。
理由は、データベースは同じ名前のテーブルを複数つくることができない仕様になっているからです。ここにチェックを入れておかないと、既存のデータベースに上書きができないのです。ただし、空のデータベースにインポートするときは、チェックが無くても問題はありません。とはいうものの、常にチェックを入れることにしておけば、何も考える必要がなくて楽です。
【補足】
phpMyAdminでデータベースをエクスポートする際のご注意(Xserver手順書より)
移転元のphpMyAdminでデータベースをエクスポートする際、以下3項目にチェックをされていない場合はエラーが発生する可能性があります。
以下の3項目をチェックして作業を進めてください。
- 【データ】
- 完全な INSERT 文を作成する
- 長い INSERT 文を作成する
手順2)サイトデータ(データベース以外のファイル)のバックアップ(FTPソフトを使う)
FTPソフトを立ち上げる。
必要なフォルダ(あるいはファイル)をダウンロードする。
(以下、Xserverの場合で説明)
akimasa21.net >> public_html >> yakugai
(サブドメイン設定になっている)
「yakugai」フォルダには、WordPress関連の下記フォルダ(あるいはファイル)がある。
wp-adminフォルダ
wp-contentフォルダ
wp-includesフォルダ
また、上記フォルダの外に.htaccessファイルなどもある。
なお、2018/07/03時点のコメントでは、以下のように記述している。
キャシュファイルが多いとダウンロードに時間が掛かってしまいます。キャッシュファイルは、ダウンロードファイルに含めなくても大丈夫です。
Xserver(移動先)の作業を行う
手順3)ドメインの追加設定(独自ドメインで運用する場合)
Xserverで独自ドメインを利用するには、ドメインの追加設定をする必要がある。
なお、ドメイン設定を行うには、事前にドメインを取得(所有)している必要がある。
エックスサーバー(Xserver)>> InfoPanel >> サーバーID選択 >> サーバーパネル、ログイン
ドメイン >> ドメイン設定
ドメイン追加設定、追加設定(確認)
作業が完了すると、サーバー内に独自ドメインと同じ名前のフォルダが作成される。そしてそのフォルダの中にはpublic_htmlフォルダが入っている。
手順4)新たなデータベースの作成
移動元のデータベースの受け皿として、事前に新たなデータベースを作成しておく。
エックスサーバー(Xserver)>> InfoPanel >> サーバーID選択 >> サーバーパネル、ログイン
データベース >> MySQL設定
MySQL追加タブ ⇒ 「MySQLデータベース名」設定・追加
MySQLユーザ追加タブ ⇒ 「MySQLユーザID」設定・追加(パスワードも設定する)
MySQL一覧タブ
⇒ 該当するデータベースを選択
⇒ アクセス権未所有ユーザの中から、アクセス権を設定したいユーザーを選択・追加する
⇒ 該当するデータベースの中に、アクセス権を設定したいユーザー(アクセス権所有ユーザー)が追加される
MySQL5.7 ホスト名を確認しておく(例えば、mysql****.xserver.jp)
手順5)データベースのインポート(phpMyAdminを使う)
移動元データベースをXserver(移動先)にインポートする方法は以下のとおりである。phpMyAdminを使う。
エックスサーバー(Xserver)>> InfoPanel >> サーバーID選択 >> サーバーパネル、ログイン
データベース >> phpmyadmin(MySQL5.7)
データベースに設定したユーザー名とパスワードでログインする。
ユーザー名:MySQLユーザー名(例えば、example_wp1)
パスワード:MySQLユーザー名(例えば、example_wp1)のパスワード
インポートするファイル >> ファイルを選択、ボタンをクリック
該当するファイルを選択、実行をクリックする
データベースのURLを変更する
移動先に移行したデータベースのURLは、移動元のURLのままになっている。以下のようにして、移動先のURLを設定する。
「phpMyAdmin」画面で、データベース選択 >> 「wp-options」テーブルを選択して、クリックする。
「データ」修正で、「siturl」と「home」(option_name)を修正する。
例えば、localbyflywheelでは、二つともhttp://Local Sites/yakugaiとする。(SLLは無効化しておいた方がよさそう)
手順6)サイトデータのアップロード(FTPソフトを使う)
移動元からダウンロードしたサイトデータは、以下のフォルダに入っている。
wp-adminフォルダ
wp-contentフォルダ
wp-includesフォルダ
また、上記フォルダの外にindex.phpファイルなどもある。
上記フォルダ(あるいはファイル)を、Xserver(移動先)のpublic_htmlの下に設置する。
http://example.com/の場合、
FTP上での設置先は、http://example.com/public_html/である。
http://test.example.com/の場合(サブドメイン)、
FTP上での設置先は、http://example.com/public_html/testである。
なお、下記2つのファイルが存在する場合には、ファイル名を変更するか、またはファイルを削除する。
・index.html
・default_page.png
各種の設定変更を行う
手順7)wp-config.phpファイルの書き換え
データベース(例えば、example_wp1)は、レンタルサーバー(例えば、mysql****.xserver.jp)内に保管されている。そして、該当するデータベースにアクセス権を設定したユーザー(アクセス権所有ユーザー、例えば、example_wp1)、及びアクセス権所有ユーザーのパスワードを使って管理する(紐付けられている)。
wp-config.phpファイルは、これらの設定をあらかじめ書き込んでおくためのファイルである。public_htmlフォルダ内にある。
さて、ここまでの手順では、このwp-config.phpファイルは、移動元サーバーの情報が書き込まれたままの状態になっている。そこで、これらの古い情報をXserverのものに書き換えてやる必要がある。
wp-config.phpファイルをテキストエディタで開いて編集する。そして、以下の4つの項目を必要に応じて書き換える。なお、下記の項目は、当然ながらXserverで「phpMyadmin」を操作するときに必要とする項目と全く同じである。
1)MySQLデータベース名(例えば、example_wp1)
2)MySQLユーザーID(例えば、example_wp1)
3)MySQLユーザーIDのパスワード
4)MySQLホスト名(例えば、mysql****.xserver.jp)
この項目の設定を誤ると「データベース接続確立エラー」ですと叱られてしまう。画面は真っ白いままとなってしまい、WordPressで何も表示されなくなってしまう。
プラグイン better search replace
有効化
手順8)ドメインネームサーバの変更、及びサイトの動作確認
最後に、今後はXserver(新しいサーバー)でWordPressを運用することをインターネット上で開示しなければいけない。
ドメイン管理事業者(お名前.COMなど)のWeb上で、ネームサーバーを以下のように書き換える。
ネームサーバー1:ns1.xserver.jp
ネームサーバー2:ns2.xserver.jp
ネームサーバー3:ns3.xserver.jp
以下、必要に応じてネームサーバー4~5を設定する。
なお、使用している「パソコンの「hosts」ファイルを編集することで、ネームサーバーの切り替え前に動作確認ができる」ようだが、これは試みていない。
手順9)ドメインの変更を伴うサーバーの引っ越し(旧ドメインの書換えが必要)
独自ドメインの変更を伴うサーバーの引っ越し、あるいは、開発環境から本番環境へ移行する際などには、データベース内の旧ドメインを新ドメインに書き換える必要がある。
つまり、データベースを移動させただけでは、データベース内には旧ドメインの記述が残ったままになっており、それらを全て新ドメインに書き換えなければならない。
phpMyAdminで一括変更することも考えられるが、不具合を生じる箇所がある。そこで、データベースのレコードを書き換えるツール「Search and Replace for WordPress Databases Script」を使用する。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
ファイルをダウンロードして、zipファイルを解凍する。解凍してできたフォルダ「Search-Replace-DB-master」を、フォルダごとWordpressファイルと同じ階層にアップロードする。
次いで、アップロードしたファイルのディレクトリにアクセスする。
例えば、http://example.com/Search-Replace-DB-master/
ドメインを入力
「replace」⇒ 旧ドメインを入力
「with」⇒ 新ドメインを入力
注:「http://」、最後の「/」は必要ない。
テスト、実行
「dryr run」ボタン ⇒ テスト
「live run」ボタン ⇒ 書き換えを実行
完了、削除
作業が無事完了したら、最後に「delete me」ボタンをクリックして、このスクリプトをサーバー上から削除する。スクリプトが残っていると、外部からアクセスされる可能性があるので危険である。作業完了後は、スクリプトを必ず削除すること。
以上。