WordPressからGhost1.21に移行した

AWS EC2 t1.micro + WordPressでブログをやっていたが、AWSから*Abuse Reportが届いたのをきっかけにConoHa 1GB + Ghostに移行した。

*不正アクセスの兆候等が確認された場合に送られてくるレポート

構築した環境

移行前

EC2 t1.micro(Amazon Linux) + Wordpress + PHP + Nginx(Webサーバとリバースプロキシ) + MySQL

構築にはAmimoto AMI(インスタンスを作るためのイメージファイル)を使用した。

移行後

ConoHa 1GB(Ubuntu) + Ghost + node.js + Nginx(Webサーバ) + MySQL

※Ghostの推奨環境は以下のページに記載されている。
ghost/Docs Install & Setup (production)

※Ghostの推奨環境から外れた構成にしたい場合は以下の記事が参考になる。
How to install Ghost on CentOS7 and MariaDB

この構成を選んだ理由

  1. AWS EC2は料金が高いのでサーバを乗り換えたかった。ServersManとConoHaの2択で悩んだが、ServersManのお知らせ欄の更新が2年以上止まっているのを見てConoHaに決めた。
  2. Ghostのシンプルさに惹かれた。
  3. とりあえずnode.jsに触ってみたかった。
  4. Ghostの推奨環境から外れると面倒なので推奨環境通りの構成にした。

環境構築の前にやっておくこと

移行前のWordPressにGhost用の記事データのエクスポート用プラグインをインストールして、記事をエクスポートしておく。

こちらからプラグインをダウンロードできる。

サーバを作成してsshでログイン出来るようにしておく。

環境構築の方法

基本的にはghost/DocsのInstall & Setup (production)を読んで、それ通りに進める。

まずは"ghost"ユーザーを作成してsudo出来るようにし、ログインする。

adduser ghost
usermod -aG sudo ghost
su - ghost

パッケージのアップデートとインストール済みパッケージのアップデートを行う。

sudo apt-get update
sudo apt-get upgrade

Nginxをインストールし、ファイアウォールに引っかからないようにする。

sudo apt-get install nginx
sudo ufw allow 'Nginx Full'

MySQLをインストールする。(rootのパスワードなども設定する)

sudo apt-get install mysql-server

node.jsのバージョン6をインストールする。

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
sudo apt-get install -y nodejs

Ghost-cliをインストールする。(Ghostをstart, stop, update出来るツール)

sudo npm i -g ghost-cli

Ghostをインストールする。

#Nginxのドキュメントルートにディレクトリを作成する
sudo mkdir -p /var/www/ghost

#権限周りを設定する
sudo chown ghost:ghost /var/www/ghost
sudo chmod 775 /var/www/ghost

#インストールする
cd /var/www/ghost
ghost install

Ghostのインストール時にはホスト名(ドメイン名)やMySQLのユーザ名とパスワードなども聞かれるので随時入力していく。SSLの設定を行うかどうかも聞かれるのでSSLを入れない場合はスキップする。

インストール完了後、インストール時に指定したドメインにブラウザからアクセスするとGhostのトップページが表示される。

http://example.com/ghost/にアクセスするとghostの管理画面に入ることが出来る。

おまけ

執筆時点での最新バージョンのGhost1.21.4をインストールしたところ、バグに遭遇したのでGithubのissueを読んで、バージョンをGhost1.21.3に変更した。

Bug: Ghost upgrade to 1.21.4 prevented scrolling down to older stories #9493

バージョン1.0のリリースから間も無いので、バグに遭遇しやすいのが難点である。

ちなみに以下のコマンドでGhostのバージョンダウンが出来た。

cd /var/www/ghost
ghost update 1.21.3 --force

さらにおまけ

ドメインを変更する機会があったのでメモしておく。

#まずはNginxのconfファイルを書き換える。
#ファイル内のserver_nameの箇所を変更する。
cd /var/www/ghost
sudo vi system/files/example.com.conf

#Nginxを再起動する。
sudo nginx -s reload

#以下のコマンドからシェルとの対話でblog URLを書き換える。
ghost config

#ghostを再起動する。
ghost restart

参考資料
ghost/Docs
How to install Ghost on CentOS7 and MariaDB