当ブログではブログシステムに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