Blogger からKusanagi-WordPress への移転が完了し、一段落したので、これまでの経緯を振り返り、次回のためのマニュアルとして記す。
- BloggerからWordPressに移行決定。
- Bloggerでも独自ドメインで運用していた。
- WordPressでも同一ドメインで運用する。
- 使用中のお名前コムのVPSでセットアップ+インポートしてみたが、Blogger Importer Extended でのデーター削除+再インポートの試みが成功せず、Kusanagiサーバーを試してみる良い機会とした。
- Kusanagi-WordPressが使えるサーバーを探す。 システム構成: WordPress 4.3 (KUSANAGI専用プラグイン同梱) ・CentOS 7・Nginx 1.8・HHVM 3.9・MariaDB Galera Server 10.0・PHP 5.6・php-fpm 5.6
- AmazonAWSが1年間無料で使用できるので、それにしてみる。
- AmazonAWSの無料利用枠を確認。
- 一ヶ月の転送量(送信)15 GB、ストレージ 20GB、を超えるならConohaにした方がいい。転送量15GBを超えたらどうなるのか未だ不明。
- AmazonAWSのサインアップ。「まずは無料で始める」
- Kusanagiの設定開始。この通りにすれば良い。
- AmazonAWSにログインして初期設定のリジョンが米國西部(オレゴン)になっているので東京に変更する。
- 「タイプ」から「t2.medium」を選択します。※KUSANAGIはメモリ4GiB以上を推奨していますので t2.medium を選んでいます。」とあるが、無料利用枠のメモリー1GBの t2.micro を選択する。
- 「1-7 ステップ6:セキュリティグループの設定」で、ポートが22(ssh)と80(httpd)しか開いていないことを確認する。https でアクセスするなら、443を、FTPでアクセスするなら、ポート20を、メールサーバーも運用するなら、最初から全部のポートを開放しておいて、後で閉じるのも効率的。このポートの開放は後でwebmin1をインストールしてHTTPSでアクセスできなくて困ってから思い出してもよい。
- ログインすべきサーバーのIPアドレスを確認する
- poderosa か tera term を使用して、AWS+KUSANAGIサーバーにログインする。TeraTermをずっと使い慣れているのでTeraTermを使用する。
- ユーザー名は「centos」、鍵ファイルは「1-9 キーペアの作成とダウンロード」にてダウンロードしたキーペアのファイル kusanagi_aws.pemを使用する。
- rootになるには、
$ sudo su - [root@<ホスト名> ~]#
- このホスト名がむやみに長くて作業の目ざわりになるので早めにこのサーバーで運用するドメイン名に変更しておくと楽になる。ここでは例として、 ホスト名 blog.makotoiwasaki.com を設定する。
[root@<ホスト名> ~]# hostname blog.makotoiwasaki.com root@blog/#
- このドメインblog.makotoiwasaki.com (Bloggerで運用中のドメイン名 www.makotoiwasaki.com とは異なるが、後で変更する)でこのサーバーにアクセスできるようにするためには、DNSサーバーの設定を追加する。
- Value-Domain の無料ネームサーバーを使用することもできる。次のように自分の新規サーバーのIPアドレスを設定する。約30分でこのドメイン名で kusanagi サーバーにアクセスできるようになる。
a blog 303.202.101.5
- KUSANAGI の初期設定、WordPressのプロビジョニング(インストール) を進める。
- WordPressの管理画面にアクセスしたら、Blogger からデーターをインポートするためのプラグインをインストールする。次のプラグインを使用した。最初に全部インストールしておくのもよい。
Blogger Importer Extended
Import External Images
Simple Image Sizes
Redirection
Blogger To WordPress (これは必要ないかも、同一ドメインの移転の場合) Taxonomy Converter (タグをカテゴリーに変換)
Batch Cat (カテゴリーの一括変換)
UpdraftPlus - Backup/Restore (バックアップツール) - インポートする前に、やるべきことは、パーマリンクの設定である。 設定」→「パーマリンク設定」で、カスタム構造 を選択し、 /%year%/%monthnum%/%postname%.html
と入力する。これでBloggerのパーマリンク構造と同じになる。 - インポートする前に、取り込むべき画像のサイズ、自動的に作成されるサムネイル画像のサイズを決めておくには、Simple Image Sizes が有効。 設定→メディアで設定可能。
- Blogger Importer Extended を有効化し、インポートを完了する。テーマはまだ標準のままインポートする。これで、画像も取り込まれるが、画像をクリックした時に表示される元画像(リンク画像、blogspot.jp,googleusercontent.comに保存されている画像)は取り込まれないので注意。リンク画像は、後で、Import External Images で取り込むことができる。
- Theme テーマ(テンプレート)を決める。ここでは Simplicityと Simplicity child を採用する。
- 「テーマ」、「カスタマイズ」でカスタマイズする。Simplicity child でカスタマイズする。
- スタイルシート、CSSは「テーマ」→「テーマの編集」→ style.css で編集できるようにするためにファイルのパーミションを666(書き込み可能)に変更する。 そのためには、SSHでログインし、 /DocumentRoot/wp-content/themes/simplicity-child/style.css を、変更
# cd /DocumentRoot/wp-content/themes/simplicity-child/ # chmod 666 style.css
- style.css を編集し、好みのデザインに変更する。 cssを扱い慣れていないと、どの要素を変更すればよいのかわかりづらいが、 Chrome の 要素を検証 機能を利用するとよい。 Firefox でも同様機能がある。
- モニターのサイズが大きくて、テーマの編集の入力フォームのサイズが縦に小さいのが気になる場合は、 /DocumentRoot/wp-admin/theme-editor.php の199行目を次のように編集する。
diff theme-editor.php theme-editor.php.org 199c199 < <div><textarea cols="100" rows="56" name="newcontent" id="newcontent" aria-describedby="newcontent-description"><?php echo $content; ?></textarea> --- > <div><textarea cols="70" rows="30" name="newcontent" id="newcontent" aria-describedby="newcontent-description"><?php echo $content; ?></textarea>
- いろいろいじっているうちに、全部の記事を削除して再インポートしたいと思い、Blogger Importer Extended でインポートしようとしてもできない。失敗する。その場合は、データーベースから、「インポート完了」のデータを削除する必要がある。
- PHPmyadmin をインストールして、作業する。次のコマンドを実行する。 参照:https://wordpress.org/support/topic/re-import-failed
DELETE FROM wp_options WHERE option_name LIKE 'bie_status_%';
- 新サイトを公開してよい段階になったら、DNSの設定変更にとりかかる。
- 設定→一般」で、サイトアドレスを仮ドメイン名 blog.makotoiwasaki.comから、Bloggerから移転するドメイン名 www.makotoiwasaki.com に変更する。 WordPress アドレス (URL)は、まだ変更しない。これを変更すると、DNS設定が完了するまでWordpress管理画面にアクセスできなくなるので注意。
- これだけで、データベース内の全ドメイン名が移転ドメイン名に変更されるのかと思ったらそうではなかったので、それを書き換える作業が必要になる。
- Search-Replace-DB-master をダウンロードし、/DocumentRoot/以下に配置し、ブラウザーでアクセスする。
- Search forに、blog.makotoiwasaki.com Replace withに www.makotoiwasaki.com (Bloggerから移転させるドメイン) と記入し、データーベース名、パスワードを記入する。 table は、all table actions は、 dry run がテストのみで置換はしない。 live run で全置換を実行。
- live run で全置換に成功したら、すぐにこのツールを削除しておく。この置換で、WordPress アドレス (URL)も変換されている。
- DNSの設定を変更する。Value-Domain の無料ネームサーバー。
a blog 303.202.101.5 a www 303.202.101.5
これで30分以内にBloggerのサーバーではなく、kusanagi wordpress の新サーバーにアクセスされるようになる。Blogger 側では何もする必要はない。
- Google検索で自分のサイトを検索して、検索結果のリンクから新サーバーにアクセスできるかどうか確認する。 月別のアーカイブのトップページ、ラベル(タグ)のトップページ 個別ページ /p/page.html 等 mobile用ページ 、html?m=1 ?m=0 は404 NOT Found エラーになる。
- Redirection プラグインをインストールし、リダイレクトの設定をすることでエラーがでないようになる。
ソース URL: /(.*)?m=[0-9] ターゲット URL: /$1
- アーカイブとラベルのトップページのリダイレクト設定は、/etc/nginx/conf.d/www-mydomain.conf に次のように設定したら成功した。Redirection プラグインを発見する前の試みを残しておく。 Server { 内の適当なところ、 rewrite /wp-admin$ $scheme://$host$uri/ permanent; の行の後ろにでも挿入すると機能する。
rewrite ^/([0-9][0-9][0-9][0-9])_([0-9][0-9])_([0-9][0-9])_archive.html$ "/$1/$2" permanent; rewrite ^/search/label/(.*)$ "/category/$1" permanent;
XML Sitemap Generator プラグインをインストールし、設定すると、Nginxには次のコードを設定せよ、との説明があったので、sitemap.xml で404エラーが出ている場合はついでに挿入する。
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;
- Nginxでは、Apache でお馴染みの .htacces ファイルでリダイレクトの設定はできない。サーバー設定ファイルを編集する必要がある。Reweite 構文もApache とNginxは異なる。 .htacces のRewriteRule をNginxのRewriteに変換するにはこのツールが便利。 * Convert apache htaccess rewrite rules to nginx rewrite rules automatically
- 404エラーログを見ると、URLページの最後の1文字から2文字が脱落しているケースがあった。t 等の1文字が脱落していて .html で404見つからないエラーが8件ぐらいあった。個別にリダイレクト設定する。
後で、Import External Images で外部リンク画像をインポートすると、スラッグ中の_が- ハイフンに勝手に置き換わっていた。 全部ではなく半数ぐらいが。 この問題の対処法はこちら。 結局ファイル名が変わるのであれば、最初からファイル名の変更を伴うパーマリンク設定をしておくことも可なり。 WordPress の困りごとは、勝手にファイル名が変更されることである。 過去に遡ってファイル名が全部変更される。 記事のタイトルが変更されたりすると、ファイル名=スラッグも日本語に知らぬ間に変わってたりする。 記事を更新するたびにこんなことが発生するリスクがある。 せめて過去記事のスラッグ名は勝手に変更されないようなシステムでありたいものである。 パーマリンクの最後の文字でt が脱漏していたりすることも多い。