Ghostを1.21から2.16へアップデートする

当ブログではブログシステムにGhostを使用しています。今回はghost1.21から2.16.4へアップデートしてみました。OSはUbuntuです。

アップデート前の準備として、記事のバックアップは取っておきましょう。

アップデート

初めに、Nodeをアップデートします。apt-getを使用します。

# パッケージ取得
$apt-get update

# アップデート適用
$apt-get upgrade

続いて、ghost-cliのバージョンが古いとアップデートできないので、ghost-cliをアップデートします。

$npm update -g ghost-cli@latest

ghost-cliがyarnを使うようになったので、yarnをインストールします。

$curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$sudo apt-get update && sudo apt-get install yarn

回線が貧弱だとyarnがタイムアウトするので、yarnのタイムアウト設定を変更します。

$yarn config set network-timeout 180000

ghost-cliの最新バージョンでは、管理者ユーザ("root"ユーザ)と、ghost-cliがsystemdで使用するユーザ("ghost"ユーザ)がghost-cliの実行をすることができなくなりました。

ghost-cliのsystemdが使用するユーザは以下の方法で確認できます。catで出力された内容のUser=ユーザIDの行を見てください。

# systemdを確認する(4geekの部分はインストール時のものに書き換えてください)
$cat /etc/systemd/system/ghost_4geek.service

私の環境ではghost-cliを使用するために新しくアップデート用のユーザを作成する必要がありました。

アップデート用のユーザ(ghost-user)を追加します。

$adduser ghost-user

ghostのインストール時に作成した、ghostディレクトリを管理しているグループを確認します。

$ls -l /var/www

ghostディレクトリを管理しているグループ(ghostグループ)にghost-userユーザを追加します。

$gpasswd -a ghost-user ghost

アップデート用のユーザ(ghost-user)に切り替えます。

$su - ghost-user

ghostをインストールしたディレクトリに移動します。

$cd /var/www/ghost

ghostをアップデートします。

$ghost update

最後に

簡単なエラーであれば、ghost doctorでエラーの原因を調べましょう。それでも解決できないときは、エラーメッセージでググり、Githubのissueを読むのがおすすめです。

参考資料
Consider yarn network timeouts · Issue #641 · TryGhost/Ghost-CLI · GitHub
Debian/Ubuntuにnodejsとyarnをinstall - Qiita
Linuxでユーザーをグループに追加する - Qiita