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