[Server & Network] 新生さくらのレンタルサーバへ WordPress を引っ越すための手順 (3)

Pocket

つづき。

データベース内で保存されている URL の書き換え

ドメインやインストールパスの変更がある場合に行う。
データベース内にデータとして書き込まれている URL を移行先にあわせて書き換える。

例えば以下の通り。

  • HTTPS対応に伴い、データ内のURLを書き換える。
    • http://www.example.comhttps://www.example.com に置換する。
  • WordPress インストールパスの変更を行う(画像などがインストールパス配下の wp-content を参照している)。
    • https://www.example.com/wordpress を移行先のパスへ置換する。

その昔は「ダウンロードしたsqlをエディタで開いて(あるいはphpMyAdmin上で)URLを検索置換」という方法が推奨されていましたが、Codexから記載が削除されたとおり、現在ではおすすめされる方法ではありません。 その理由が 「データベース内で保存されている内容がシリアライズされている可能性」 があるからです。

WordPressの引っ越しに便利な wp search-replace – Gatespace’s Blog

http -> https

wp コマンドは wp-config.php のあるディレクトリで実行する。
格納されている値を確認してみる。

$ wp db search 'http://www.example.com' | less

http -> https に書き換える。

$ wp search-replace 'http://www.example.com' 'https://www.example.com'
+-----------------------+-----------------------+--------------+------+
| Table                 | Column                | Replacements | Type |
+-----------------------+-----------------------+--------------+------+
| wp111111commentmeta   | meta_key              | 0            | SQL  |
| wp111111commentmeta   | meta_value            | 0            | SQL  |
| wp111111comments      | comment_author        | 0            | SQL  |
| wp111111comments      | comment_author_email  | 0            | SQL  |
| wp111111comments      | comment_author_url    | 104          | SQL  |
| wp111111comments      | comment_author_IP     | 0            | SQL  |
| wp111111comments      | comment_content       | 1            | SQL  |
| wp111111comments      | comment_approved      | 0            | SQL  |
| wp111111comments      | comment_agent         | 0            | SQL  |
| wp111111comments      | comment_type          | 0            | SQL  |
| wp111111links         | link_url              | 0            | SQL  |
| wp111111links         | link_name             | 0            | SQL  |
| wp111111links         | link_image            | 0            | SQL  |
| wp111111links         | link_target           | 0            | SQL  |
| wp111111links         | link_description      | 0            | SQL  |
| wp111111links         | link_visible          | 0            | SQL  |
| wp111111links         | link_rel              | 0            | SQL  |
| wp111111links         | link_notes            | 0            | SQL  |
| wp111111links         | link_rss              | 0            | SQL  |
| wp111111options       | option_name           | 0            | SQL  |
| wp111111options       | option_value          | 0            | PHP  |
| wp111111options       | autoload              | 0            | SQL  |
| wp111111postmeta      | meta_key              | 0            | SQL  |
| wp111111postmeta      | meta_value            | 282          | PHP  |
| wp111111posts         | post_content          | 397          | SQL  |
| wp111111posts         | post_title            | 0            | SQL  |
| wp111111posts         | post_excerpt          | 0            | SQL  |
| wp111111posts         | post_status           | 0            | SQL  |
| wp111111posts         | comment_status        | 0            | SQL  |
| wp111111posts         | ping_status           | 0            | SQL  |
| wp111111posts         | post_password         | 0            | SQL  |
| wp111111posts         | post_name             | 0            | SQL  |
| wp111111posts         | to_ping               | 0            | SQL  |
| wp111111posts         | pinged                | 0            | SQL  |
| wp111111posts         | post_content_filtered | 0            | SQL  |
| wp111111posts         | guid                  | 789          | SQL  |
| wp111111posts         | post_type             | 0            | SQL  |
| wp111111posts         | post_mime_type        | 0            | SQL  |
| wp111111term_taxonomy | taxonomy              | 0            | SQL  |
| wp111111term_taxonomy | description           | 0            | SQL  |
| wp111111termmeta      | meta_key              | 0            | SQL  |
| wp111111termmeta      | meta_value            | 0            | SQL  |
| wp111111terms         | name                  | 0            | SQL  |
| wp111111terms         | slug                  | 0            | SQL  |
| wp111111usermeta      | meta_key              | 0            | SQL  |
| wp111111usermeta      | meta_value            | 0            | PHP  |
| wp111111users         | user_login            | 0            | SQL  |
| wp111111users         | user_nicename         | 0            | SQL  |
| wp111111users         | user_email            | 0            | SQL  |
| wp111111users         | user_url              | 0            | SQL  |
| wp111111users         | user_activation_key   | 0            | SQL  |
| wp111111users         | display_name          | 0            | SQL  |
+-----------------------+-----------------------+--------------+------+
Success: Made 1573 replacements.

stg -> www

格納されている値を確認してみる。

$ wp db search 'stg.example.com' | less

本番化に向けて stg -> www に書き換える。

$ wp search-replace 'stg.example.com' 'www.example.com'
+-----------------------+-----------------------+--------------+------+
| Table                 | Column                | Replacements | Type |
+-----------------------+-----------------------+--------------+------+
| wp111111commentmeta   | meta_key              | 0            | SQL  |
| wp111111commentmeta   | meta_value            | 0            | SQL  |
| wp111111comments      | comment_author        | 0            | SQL  |
| wp111111comments      | comment_author_email  | 0            | SQL  |
| wp111111comments      | comment_author_url    | 0            | SQL  |
| wp111111comments      | comment_author_IP     | 0            | SQL  |
| wp111111comments      | comment_content       | 0            | SQL  |
| wp111111comments      | comment_approved      | 0            | SQL  |
| wp111111comments      | comment_agent         | 0            | SQL  |
| wp111111comments      | comment_type          | 0            | SQL  |
| wp111111links         | link_url              | 0            | SQL  |
| wp111111links         | link_name             | 0            | SQL  |
| wp111111links         | link_image            | 0            | SQL  |
| wp111111links         | link_target           | 0            | SQL  |
| wp111111links         | link_description      | 0            | SQL  |
| wp111111links         | link_visible          | 0            | SQL  |
| wp111111links         | link_rel              | 0            | SQL  |
| wp111111links         | link_notes            | 0            | SQL  |
| wp111111links         | link_rss              | 0            | SQL  |
| wp111111options       | option_name           | 0            | SQL  |
| wp111111options       | option_value          | 4            | PHP  |
| wp111111options       | autoload              | 0            | SQL  |
| wp111111postmeta      | meta_key              | 0            | SQL  |
| wp111111postmeta      | meta_value            | 0            | PHP  |
| wp111111posts         | post_content          | 59           | SQL  |
| wp111111posts         | post_title            | 0            | SQL  |
| wp111111posts         | post_excerpt          | 0            | SQL  |
| wp111111posts         | post_status           | 0            | SQL  |
| wp111111posts         | comment_status        | 0            | SQL  |
| wp111111posts         | ping_status           | 0            | SQL  |
| wp111111posts         | post_password         | 0            | SQL  |
| wp111111posts         | post_name             | 0            | SQL  |
| wp111111posts         | to_ping               | 0            | SQL  |
| wp111111posts         | pinged                | 0            | SQL  |
| wp111111posts         | post_content_filtered | 0            | SQL  |
| wp111111posts         | guid                  | 137          | SQL  |
| wp111111posts         | post_type             | 0            | SQL  |
| wp111111posts         | post_mime_type        | 0            | SQL  |
| wp111111term_taxonomy | taxonomy              | 0            | SQL  |
| wp111111term_taxonomy | description           | 0            | SQL  |
| wp111111termmeta      | meta_key              | 0            | SQL  |
| wp111111termmeta      | meta_value            | 0            | SQL  |
| wp111111terms         | name                  | 0            | SQL  |
| wp111111terms         | slug                  | 0            | SQL  |
| wp111111usermeta      | meta_key              | 0            | SQL  |
| wp111111usermeta      | meta_value            | 0            | PHP  |
| wp111111users         | user_login            | 0            | SQL  |
| wp111111users         | user_nicename         | 0            | SQL  |
| wp111111users         | user_email            | 0            | SQL  |
| wp111111users         | user_url              | 0            | SQL  |
| wp111111users         | user_activation_key   | 0            | SQL  |
| wp111111users         | display_name          | 0            | SQL  |
+-----------------------+-----------------------+--------------+------+
Success: Made 200 replacements.

本番化

Basic 認証の解除

認証を解除する。

WordPress 設定の変更

本番運用ドメインに siteurlhome を書き換える。

$ wp option update siteurl 'https://www.example.com/wordpress'
$ wp option update home 'https://www.example.com/wordpress'

ドメイン/SSL設定

さくらのコントロールパネルで作業する。
ドメインと DNS は他社のサービスで管理している。

(新規の開設であれば、以降の手順で完了するはず)

「新しいドメインの追加 > 他社で取得したドメインを移管せずに使う > 他社で取得された独自ドメインのサブドメインを追加」を選択する。

  • example.com

「ドメイン詳細設定」を行う。

  • 「マルチドメインとして使用する(推奨)」を選択する。
  • 「マルチドメインの対象のフォルダをご指定ください」に com.example.www を設定する。
  • 「SSLの利用をお選びください」は「共有SSL、SNI SSLを利用しない」としておく。

また、必要に応じて stg.example.com の設定は、変更か削除する。

コントロールパネルに戻り、「ドメイン/SSL設定」の一覧より「SSL証明書 > 登録」を選択する。
ステージング用に「無料SSL証明書」を設定する。

DNS の切り替え

他社の DNS 管理サービスでの作業

  • サブドメイン www の A レコードに「新しいさくらのレンタルサーバの IP アドレス」を登録する。

以上で終了。

なのだが、今回の「旧さくらのレンタルサーバから新生さくらのレンタルサーバへの移行」にあたって、以下の点について苦労したので投稿を分ける。

  • 「ドメイン/SSL設定」に旧サーバと同じサブドメイン設定を行うと「指定されたドメイン名は登録されています」というエラーが発生する。
  • 「ドメイン/SSL設定」で「DNS の切り替え」前に「SNI SSL」の設定・有効化ができない。

ToDo

次稿に譲る。

  • 「ドメイン/SSL設定」に旧サーバと同じサブドメイン設定を行うと「指定されたドメイン名は登録されています」というエラーが発生する。
  • 「ドメイン/SSL設定」で「DNS の切り替え」前に「SNI SSL」の設定・有効化ができない。

ここまでの積み残しは以下の通り。

  • 「Webアプリケーションファイアウォール」の設定を保留。
  • 「バックアップ & ステージング」の設定を保留。

確認

  • WXR のインポート で改行が詰められてしまうので markdown が壊れた。
  • カテゴリの親子関係が壊れた(ex. WordPress > WordPress の親と子がマージされ子がなくなった)。

つづく。

補遺

Pocket