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

つづき。

Contents

WP-CLI をインストールする

シェルを zsh に変更

WordPress の移行には直接関係ないが、さくらのサーバのシェルを zsh に変更する。
以降、zsh 前提で記述する。

パスを追加する

~/.zshrc にパスの設定を追加する。

~/.zshrc
# ~/local path を追加
export TMPDIR=$HOME/local/tmp
export PATH=$HOME/local/bin:$PATH

ディレクトリを作成する。

$ mkdir local/bin local/tmp

インストールと設置

wp-cli をダウンロード、設置する。

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ mv wp-cli.phar ~/local/bin/wp

composer をダウンロード、設置する(WordPress 移行に必須ではない)。

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ mv composer.phar ~/local/bin/composer

参考までにシェルスクリプトにしておく。

WordPress の設定

ユーザーは、インストール時に既存サイトと同じアカウントを作成しておく。

  • user

以下、WP-CLI を利用していく。
wp コマンドは wp-config.php のあるディレクトリで実行する。

$ cd ~/www/com.example.www/wordpress

初期化

インストール時に投稿されている不要なポストやページなどを削除する。

  • category
  • tag
  • post
  • page
  • comment
# Delete all categories.
$ wp term list category --field=term_id | xargs wp term delete category

# Delete all post tags.
$ wp term list post_tag --field=term_id | xargs wp term delete post_tag

# Delete all posts.
$ wp post delete --force $(wp post list --format=ids)

# Delete all pages.
$ wp post delete --force $(wp post list --post_type='page' --format=ids)

# Delete all comments.
$ wp comment delete --force $(wp comment list --format=ids)

参考までにシェルスクリプトにしておく。

カテゴリーは必ず1つ必要なようで「未分類」は消せない。

$ wp term list category --field=term_id
1
$ wp term delete category 1
Warning: category 1 doesn't exist.
Success: Term already deleted.

オプション設定

wp option list で必要なオプションを確認する。

  • option (dashbord)
$ wp option list
+---------------------------------+-------------------------------------------------------------------------------------------------+
| option_name                     | option_value                                                                                    |
+---------------------------------+-------------------------------------------------------------------------------------------------+
| siteurl                         | https://stg.example.com/wordpress                                                                |
| home                            | https://stg.example.com/wordpress                                                                |
| blogname                        | New                                                                                             |
| blogdescription                 | Just another WordPress site                                                                     |
    :
| date_format                     | Y年n月j日                                                                                       |
| time_format                     | g:i A                                                                                           |
    :
| permalink_structure             | /%year%/%monthnum%/%day%/%postname%/                                                            |
    :

サイトに応じて必要なものを設定する。
wp option update で実行する。

wp option update siteurl 'https://stg.example.com/wordpress'
wp option update home 'https://stg.example.com/wordpress'
wp option update blogname 'foo'
wp option update blogdescription ''
wp option update timezone_string 'Asia/Tokyo'
wp option update date_format 'Y/m/d'
wp option update time_format 'H:i'
wp option update permalink_structure '/blog/%year%/%monthnum%/%day%_%post_id%.html'

参考までにシェルスクリプトにしておく。

記事データと画像の移行

以下の点から、XML ファイルのエクスポート・インポートでデータ移行を行う事とする。

  • DB Version, Engine が変わる
  • MySQL innodb の key prefix length の制限。

XML ファイルのエクスポート

現行の WordPress から WXR をエクスポートする。

  • 「ツール > エクスポート > すべてのコンテンツ」から XML ファイルをエクスポートする。

XML ファイルのインポート

  • 「ツール > インポート > WordPress」から書き換えた XML ファイルをインポートする。
  • 「添付ファイルをダウンロードしてインポートする」を選択し、しばし待つ。

もしインポートするファイルのサイズが WordPress Dashbord に表示されている最大サイズより大きい場合は、さくらのレンタルサーバの「コントロールパネル > PHP設定の編集」でサイズを変更する。

php.ini
post_max_size = 20M
upload_max_filesize = 20M

「メディア のインポートに失敗しました」と表示されるが無視する。
(前段のアップロード可能最大サイズを画像込みのサイズにすれば、失敗しないものと推測される。)

メディアファイルのインポート

元サイトからメディアファイル(画像)を SFTP 等でインポートする。
ディフォルト設定であれば、下記パスの「年/月」フォルダが対象。

  • 元サイトの /wordpress/wp-content/uploads/年/月

前段の「メディアのインポート」に成功していれば必要ない。

プラグインとテーマ

  • plugin
  • theme

プラグインとテーマの同期

プラグインとテーマファイルを同期させておく。
「さくらのレンタルサーバ かんたんインストール」でディフォルトインストールされるプラグインと必要なプラグインを同期させる。

  • /wp-content/plugins/

同じく必要なテーマを同期させる。

  • /wp-content/themes/

プラグインの有効化と設定

各プラグインの有効化と設定を GUI で行う。面倒くさい
プラグインによっては、設定のエクスポートとインポートができるものもある。

テーマのカスタマイズ設定

表示に必要な設定を行う。
操作は Dashbord からが進めやすい。

  • メニューを設定
  • サイドバーを設定
  • ウィジェットを設定

動作確認

ページが意図したとおりに表示されるか確認する。

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

後で直す。

サイトルートに表示する設定

必要に応じて、サブディレクトリに設置した WordPress をサイトのルートに表示するよう変更する。

  • 現状、下書きのプレビューが 404 となる。

ToDo

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

  • 「ドメイン/SSL設定」の本番環境への切り替え。
  • 「Webアプリケーションファイアウォール」の設定を保留。
  • 「バックアップ & ステージング」の設定を保留。

確認

  • WXR のインポート で改行が詰められてしまうので markdown が壊れた。
  • カテゴリの親子関係が壊れた(ex. WordPress > WordPress の親と子がマージされ子がなくなった)。
  • 現状、下書きのプレビューが 404 となる。

つづく。