HexoにWordPressの記事をマイグレートする
はじめに
こんにちは。インフラエンジニアレベル1のf_prgです。 今までWordPressでブログを構築し運用していたのですが ログインのブルートフォースアタックなどセキュリティ面を考え、 Hexoでデプロイ静的ファイルのサイトに移行しようと思います。
HexoにWordPressの記事をマイグレートする
ブログを新規構築する
ブログを新規構築します。 既に記事を作っている場合、マイグレートすると記事が混ざりそうなので ブログを構築してファイルを移動していきたいと思います。 新規構築のブログにWordPressの記事をマイグレートすれば、比較もしやすいと考えました。
[08:33:08][f_prg@mba:node-hexo-blog]# hexo init my-wp-migrate[info] Copying data[info] You are almost done! Don't forget to run `npm install` before you start blogging with Hexo!WordPressのmigratorプラグインをインストールします。
hexoのドキュメントはコチラです。 http://hexo.io/docs/migration.html npmのページはこちらです。 https://www.npmjs.org/package/hexo-migrator-wordpress
インストールは下のコマンドで実行できます。
[08:35:18][f_prg@mba:node-hexo-blog]# cd my-wp-migrate/[08:39:01][f_prg@mba:my-wp-migrate]# npm install hexo-migrator-wordpress --savenpm http GET https://registry.npmjs.org/hexo-migrator-wordpressnpm http 304 https://registry.npmjs.org/hexo-migrator-wordpressnpm http GET https://registry.npmjs.org/xml2js/0.4.2npm http GET https://registry.npmjs.org/asyncnpm http GET https://registry.npmjs.org/to-markdown/0.0.1npm http GET https://registry.npmjs.org/requestnpm http 200 https://registry.npmjs.org/asyncnpm http 200 https://registry.npmjs.org/requestnpm http 304 https://registry.npmjs.org/to-markdown/0.0.1npm http 200 https://registry.npmjs.org/xml2js/0.4.2npm http GET https://registry.npmjs.org/xml2js/-/xml2js-0.4.2.tgznpm http 200 https://registry.npmjs.org/xml2js/-/xml2js-0.4.2.tgznpm http GET https://registry.npmjs.org/saxnpm http GET https://registry.npmjs.org/xmlbuildernpm http 304 https://registry.npmjs.org/saxnpm http GET https://registry.npmjs.org/qsnpm http GET https://registry.npmjs.org/json-stringify-safenpm http GET https://registry.npmjs.org/mime-typesnpm http GET https://registry.npmjs.org/forever-agentnpm http GET https://registry.npmjs.org/node-uuidnpm http GET https://registry.npmjs.org/form-datanpm http GET https://registry.npmjs.org/tough-cookienpm http GET https://registry.npmjs.org/tunnel-agentnpm http GET https://registry.npmjs.org/http-signaturenpm http GET https://registry.npmjs.org/oauth-signnpm http GET https://registry.npmjs.org/hawk/1.1.1npm http GET https://registry.npmjs.org/aws-sign2npm http GET https://registry.npmjs.org/stringstreamnpm http 304 https://registry.npmjs.org/json-stringify-safenpm http 304 https://registry.npmjs.org/forever-agentnpm http 304 https://registry.npmjs.org/node-uuidnpm http 200 https://registry.npmjs.org/qsnpm http 304 https://registry.npmjs.org/form-datanpm http 304 https://registry.npmjs.org/tough-cookienpm http 304 https://registry.npmjs.org/tunnel-agentnpm http 304 https://registry.npmjs.org/oauth-signnpm http 304 https://registry.npmjs.org/http-signaturenpm http 304 https://registry.npmjs.org/aws-sign2npm http 304 https://registry.npmjs.org/stringstreamnpm http 200 https://registry.npmjs.org/xmlbuildernpm http 304 https://registry.npmjs.org/mime-typesnpm http 304 https://registry.npmjs.org/hawk/1.1.1npm http GET https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgznpm http 200 https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgznpm http GET https://registry.npmjs.org/mimenpm http GET https://registry.npmjs.org/combined-streamnpm http 304 https://registry.npmjs.org/combined-streamnpm http 200 https://registry.npmjs.org/mimenpm http GET https://registry.npmjs.org/ctype/0.5.2npm http GET https://registry.npmjs.org/assert-plus/0.1.2npm http GET https://registry.npmjs.org/asn1/0.1.11npm http GET https://registry.npmjs.org/delayed-stream/0.0.5npm http 304 https://registry.npmjs.org/assert-plus/0.1.2npm http 304 https://registry.npmjs.org/ctype/0.5.2npm http GET https://registry.npmjs.org/punycodenpm http 304 https://registry.npmjs.org/delayed-stream/0.0.5npm http 304 https://registry.npmjs.org/punycodenpm http GET https://registry.npmjs.org/sntpnpm http GET https://registry.npmjs.org/hoeknpm http GET https://registry.npmjs.org/boomnpm http GET https://registry.npmjs.org/cryptilesnpm http 304 https://registry.npmjs.org/sntpnpm http 304 https://registry.npmjs.org/hoeknpm http 304 https://registry.npmjs.org/cryptilesnpm http 200 https://registry.npmjs.org/boomnpm http 304 https://registry.npmjs.org/asn1/0.1.11npm http GET https://registry.npmjs.org/lodash-nodenpm http 200 https://registry.npmjs.org/lodash-nodehexo-migrator-wordpress@0.1.1 node_modules/hexo-migrator-wordpress├── async@0.9.0├── to-markdown@0.0.1├── request@2.40.0 (json-stringify-safe@5.0.0, forever-agent@0.5.2, aws-sign2@0.5.0, oauth-sign@0.3.0, stringstream@0.0.4, tunnel-agent@0.4.0, qs@1.0.2, node-uuid@1.4.1, mime-types@1.0.2, tough-cookie@0.12.1, form-data@0.1.4, hawk@1.1.1, http-signature@0.10.0)└── xml2js@0.4.2 (sax@0.5.8, xmlbuilder@2.4.3)wordpressからXMLをダウンロードする。
- 使っているwordpressの管理画面にログインする
- メニューのツール—>エクスポートよりXMLをダウンロードしてください。
- ダウンロードしたファイルを、my-wp-migrateのフォルダに置きます。
migrateコマンドを実行する
下のコマンドのmigrateを実行しますと、解析してファイルが作成されます。
[09:13:52][f_prg@mba:my-wp-migrate]# hexo migrate wordpress ./f_prg.wordpress.2014-08-16.xml[info] Analyzing ./f_prg.wordpress.2014-08-16.xml...[info] Page found: 紹介[info] Page found: About[info] Post found:[info] Page found:[info] Page found:
下書きとか一覧に出てるので割愛します。
[info] Post found:[info] 159 posts migrated.生成されたファイルを確認する
今回は手動で記事のファイルを移動させました。その後に改修をした作業内容を紹介します。 「Varnish 4.0 Release Partyに参加してきました。 #v4rp #v4rp_tokyo」 という記事になります。
ファイル名の変更
日本語のタイトル名からファイル名を決定しているようなので varnish-4-0-release-partye381abe58f82e58aa0e38197e381a6e3818de381bee38197e3819fe38082-v4rp-v4rp_tokyo.md となってますね。ちょっと使いづらいので、varnish-4-0-release-party.mdに変えます。 /2014/04/29/varnish-4-0-release-party/
ファイルのプロパティ
WordPressのidとcommentが入ってますね。 まあ、これはこのままで大丈夫のようです。
title: "Varnish 4.0 Release Partyに参加してきました。 #v4rp #v4rp_tokyo"id: 1459comment: falsecategories: - Varnishdate: 2014-04-29 20:12:45tags:- AWS- Varnish- 勉強会ファイルの内容
markdownの部分には特に問題はありませんでした。 もしかしたら、このファイルは上手く行ったのかもしれませんね。 ただ、画像については次の項目で独自の改修をしました。
画像の変更
画像の保存先を変えます。 _config.ymlで
post_asset_folder: trueと設定していますので source/_posts/2014/04/29/varnish-4-0-release-party というフォルダを作成して移動させました。
markdownの画像のパス
画像のパスのwp-contentを変換させます。フォルダをそのままアップしてもよかったのですが 手動で画像の確認をしながら移動させました。
[](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201943.jpg)[](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201953.jpg)[](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-202000.jpg)だったのを
[](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg)[](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg)[](/2014/04/29/varnish-4-0-release-party/20140429-201953.jpg)[](/2014/04/29/varnish-4-0-release-party/20140429-202000.jpg)としました。
まとめ
私は記事の見直しをかけて、手動で行いました。 記事のファイルを移動し、wp-contentファイルをアップロードすれば 移行にそれほど時間がかからないかもしれませんね。
参考資料・リンク
http://hexo.io/docs/migration.html https://www.npmjs.org/package/hexo-migrator-wordpress