WordPressからGhostに移管してみた

WordPressからGhostに移管してみた

長らくWordPressでこのブログを更新してきましたが、前々から気になっていたGhostに移管をしてみました。

その時に行ったことをメモしておきます。

目次

Ghostの準備

まずはGhostのインストールを行います。その間にh2oがうまく動かなくなってしまったので、現状の環境としてはCentOS7 + nginx + MySQL + Node.jsという感じです。

Node.jsをnvmでインストール

Node.jsはepelリポジトリからyumでインストールをすることが可能ですが、今回はnvm経由でインストールします。

# nvmをインストール
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh

# ログイン時に有効化されるようにしておく
# 下記を追加
$ vi ~/.bash_profile
if [[ -s ~/.nvm/nvm.sh ]];
 then source ~/.nvm/nvm.sh
fi

# インストールできるバージョンを確認
$ nvm ls-remote

# インストール
$ nvm install v4.4.2

# デフォルトに設定
$ nvm alias default v5.10.1

Ghostをインストール

次にGhostをインストールします。

# ソースコードを取得
$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
$ unzip -uo ghost.zip -d ghost
$ cd ghost

# 必要ライブラリをインストール
$ npm install sqlite3 --build-from-source
$ npm install --production

# とりあえず動かしてみる
$ npm start

config.jsを書き換えることで、実行するIPアドレスやポート、URLを変更することが出来ます。

Node.jsの実行をデーモン化する

npm startでも実行はできますが、デーモン化されないので、foreverをインストールしました。

$ npm install forever -g

これで、実行する際は、

$ NODE_ENV=production forever start index.js

停止する際は、

$ forever stop index.js

を叩けばOKです。

nginxからGhostを実行する

ドメインから実行できるようにnginxからGhostを実行させます。ココに関しては特に難しくもなく、公式マニュアルの方法に則って設定しています。

若干違う点としては、SSLで運用していますので、一部記述が増えています。

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate      /path/to/ssl.pem;
    ssl_certificate_key  /path/to/ssl.key;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

インストールや、初期設定などについては割愛します。

記事データの移管

次に、これまで書いてきた記事データの移管を行います。WordPressにGhost向けにjson形式変換してエクスポートするプラグインが用意されていますので、そちらをインストールしてデータを取得します。

データがダウンロード出来たら、Ghostの管理画面にログインし、Labsメニューからアップロードしてインポートします。

基本的なテキストデータはコチラで引き継ぐことが出来ました。

手直しが必要なモノ

上記プラグインで全て引き継ぐコトが出来る訳ではありません。
自分の場合は下記の作業を手作業で行いました。

画像の移管
参照先のURLが変わらないので、WordPressのサーバが残るのであれば、そのままでもOK
WordPressのショートコード[*][/*]
変換されないので、手で直す必要があります
微調整
たまに綺麗にMarkdownになっていないコトがあるので、微調整

この作業が一番手間かもしれません…。

雑感

前々から気になっていたのですが、やっと試すことが出来ました。

以前も一度インストールしてみようかと思っていたのですが、npm installがどうにもうまく実行できずに諦めてしまっていました。
今回はちゃんと動いてくれたので良かったです。

Markdownも最近PCでメモを取るときは利用することが多くなったため、ブログ記事もMarkdownで記入できると楽だなぁと今回思いました。

WordPressの時もJetpackプラグインでMarkdown対応出来たと思いますが、他の記事に影響がありそうで怖くて使っていませんでした…。使い勝手的にはどうなのでしょうね?

しかし、まだまだv1.0にもなっていないので、色々起きるかもしれませんが、ちょこちょこ試してみようかと思います。テーマも取り急ぎ不要なモノを削っただけなので、そちらもいじってみたいですね。