はじめに
こんにちは。インフラエンジニアレベル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 --save npm http GET https://registry.npmjs.org/hexo-migrator-wordpress npm http 304 https://registry.npmjs.org/hexo-migrator-wordpress npm http GET https://registry.npmjs.org/xml2js/0.4.2 npm http GET https://registry.npmjs.org/async npm http GET https://registry.npmjs.org/to-markdown/0.0.1 npm http GET https://registry.npmjs.org/request npm http 200 https://registry.npmjs.org/async npm http 200 https://registry.npmjs.org/request npm http 304 https://registry.npmjs.org/to-markdown/0.0.1 npm http 200 https://registry.npmjs.org/xml2js/0.4.2 npm http GET https://registry.npmjs.org/xml2js/-/xml2js-0.4.2.tgz npm http 200 https://registry.npmjs.org/xml2js/-/xml2js-0.4.2.tgz npm http GET https://registry.npmjs.org/sax npm http GET https://registry.npmjs.org/xmlbuilder npm http 304 https://registry.npmjs.org/sax npm http GET https://registry.npmjs.org/qs npm http GET https://registry.npmjs.org/json-stringify-safe npm http GET https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/forever-agent npm http GET https://registry.npmjs.org/node-uuid npm http GET https://registry.npmjs.org/form-data npm http GET https://registry.npmjs.org/tough-cookie npm http GET https://registry.npmjs.org/tunnel-agent npm http GET https://registry.npmjs.org/http-signature npm http GET https://registry.npmjs.org/oauth-sign npm http GET https://registry.npmjs.org/hawk/1.1.1 npm http GET https://registry.npmjs.org/aws-sign2 npm http GET https://registry.npmjs.org/stringstream npm http 304 https://registry.npmjs.org/json-stringify-safe npm http 304 https://registry.npmjs.org/forever-agent npm http 304 https://registry.npmjs.org/node-uuid npm http 200 https://registry.npmjs.org/qs npm http 304 https://registry.npmjs.org/form-data npm http 304 https://registry.npmjs.org/tough-cookie npm http 304 https://registry.npmjs.org/tunnel-agent npm http 304 https://registry.npmjs.org/oauth-sign npm http 304 https://registry.npmjs.org/http-signature npm http 304 https://registry.npmjs.org/aws-sign2 npm http 304 https://registry.npmjs.org/stringstream npm http 200 https://registry.npmjs.org/xmlbuilder npm http 304 https://registry.npmjs.org/mime-types npm http 304 https://registry.npmjs.org/hawk/1.1.1 npm http GET https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgz npm http 200 https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgz npm http GET https://registry.npmjs.org/mime npm http GET https://registry.npmjs.org/combined-stream npm http 304 https://registry.npmjs.org/combined-stream npm http 200 https://registry.npmjs.org/mime npm http GET https://registry.npmjs.org/ctype/0.5.2 npm http GET https://registry.npmjs.org/assert-plus/0.1.2 npm http GET https://registry.npmjs.org/asn1/0.1.11 npm http GET https://registry.npmjs.org/delayed-stream/0.0.5 npm http 304 https://registry.npmjs.org/assert-plus/0.1.2 npm http 304 https://registry.npmjs.org/ctype/0.5.2 npm http GET https://registry.npmjs.org/punycode npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5 npm http 304 https://registry.npmjs.org/punycode npm http GET https://registry.npmjs.org/sntp npm http GET https://registry.npmjs.org/hoek npm http GET https://registry.npmjs.org/boom npm http GET https://registry.npmjs.org/cryptiles npm http 304 https://registry.npmjs.org/sntp npm http 304 https://registry.npmjs.org/hoek npm http 304 https://registry.npmjs.org/cryptiles npm http 200 https://registry.npmjs.org/boom npm http 304 https://registry.npmjs.org/asn1/0.1.11 npm http GET https://registry.npmjs.org/lodash-node npm http 200 https://registry.npmjs.org/lodash-node hexo-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に変えます。
http://star-flare-blog.s3-website-ap-northeast-1.amazonaws.com/2014/04/29/varnish-4-0-release-party/
ファイルのプロパティ
WordPressのidとcommentが入ってますね。
まあ、これはこのままで大丈夫のようです。
title: "Varnish 4.0 Release Partyに参加してきました。 #v4rp #v4rp_tokyo" id: 1459 comment: false categories: - Varnish date: 2014-04-29 20:12:45 tags: - AWS - Varnish - 勉強会
ファイルの内容
markdownの部分には特に問題はありませんでした。
もしかしたら、このファイルは上手く行ったのかもしれませんね。
ただ、画像については次の項目で独自の改修をしました。
画像の変更
画像の保存先を変えます。
_config.ymlで
_config.yml
post_asset_folder: true
と設定していますので
source/_posts/2014/04/29/varnish-4-0-release-party
というフォルダを作成して移動させました。
markdownの画像のパス
画像のパスのwp-contentを変換させます。フォルダをそのままアップしてもよかったのですが
手動で画像の確認をしながら移動させました。
[![20140429-201943.jpg](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201943.jpg)](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201943.jpg) [![20140429-201953.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-201953.jpg) [![20140429-202000.jpg](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-202000.jpg)](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-202000.jpg)
だったのを
[![20140429-201943.jpg](/2014/04/29/varnish-4-0-release-party/20140429-190537.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg) [![20140429-201943.jpg](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg) [![20140429-201953.jpg](/2014/04/29/varnish-4-0-release-party/20140429-201953.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-201953.jpg) [![20140429-202000.jpg](/2014/04/29/varnish-4-0-release-party/20140429-202000.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
元記事はこちらです。
「HexoにWordPressの記事をマイグレートする」