Ghostのサーバー移行手順 & バックアップしておくデータまとめ
※本記事は広告を含みます
どうも、職業エンジニアです。
最近Ghostで作ったブログを移行しまくってある程度手順が確立できたので、ここに残して置こうと思います。
- サーバー移行するときに必要なもの
- 移行元サーバー、移行先サーバーそれぞれで実施すること
なんかが分かるように記載していきます。
諸注意!
この手順で移行を行うと、以下の情報は引継ぎできません!
- Integrations(APIキーやサードパーティ連携)
- Members(データ・有料会員情報)
- Comments
このあたりの情報も復元したい場合は、データベースをバックアップする必要があります。今回の手順では対応していないので悪しからず。。
移行手順
移行元、移行先それぞれの手順です。順番通りやりましょう。
移行元サーバーで実施すること
① Ghostのデータをエクスポート
管理画面にログインし「Settings」→「Advanced」→「Export」と進みます。その中にある「Content & Settings」をクリックすると、JSON形式のデータがダウンロードできます。

② 画像データ等のダウンロード
Ghostのエクスポート機能は
- 記事データ、ページデータ
- サイトタイトル、説明文、ナビゲーションメニュー、タグ、著者プロフィール等の設定
等は含まれますが、記事内の画像データやテーマファイルは含まれません。
なので、これらは別途持ってくる必要があります。
FileZilla等のFTP/SFTPクライアントソフトを利用して別途ダウンロードしておきましょう。なお、ダウンロード対象のデータは以下にまとまっているので、ここをダウンロードします。
/var/www/ghost/content
※「/var/www/ghost/」の部分はインストール時に決めているので、ここじゃない可能性あり。
③ 環境設定ファイルのダウンロード
次にサーバー設定周りのファイルをダウンロードします。前の設定を忘れると復元できなくなる可能性があるため、バックアップしておくのが推奨です。
- config.production.json (/var/www/ghost/content 配下)
- Nginxの設定ファイル (/etc/nginx/sites-available 配下)
この辺りをダウンロードしておけば、充分なはずです。
移行先サーバーで実施すること
① 移行先サーバーにログイン
移行先サーバーが提供しているターミナル機能や、Tera Termなどで移行先サーバーにログインします。
② OS更新&Ghost用の非rootユーザー作成
以下のコマンドでOS更新とユーザ作成を実施します。「ghostuser」の部分は任意のユーザ名でOKです。なおユーザ作成時に決めたパスワードは忘れないようにメモしておきましょう。今後ずっと使います。
apt update && apt upgrade -y
adduser ghostuser
usermod -aG sudo ghostuser
su - ghostuser
③ Nginx, MySQL, Node.js, Ghost-CLIのインストール
次にGhostのインストール条件を整えます。
sudo apt install -y nginx mysql-server
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g ghost-cli@latest
④ Ghost用ディレクトリの作成&権限付与
Ghostのインストール用ディレクトリの作成と権限付与を実施します。ユーザ名は先ほどの手順で決めたものを指定、作成するディレクトリ「/var/www/ghost」については任意でOKです。
sudo mkdir -p /var/www/ghost
sudo chown ghostuser:ghostuser /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost
⑤ Ghostのインストール
Ghostをインストールします。
ghost install
なお、このコマンドを発行すると色々聞かれます。特にこだわりがないのであれば、以下で入力するのが楽かと思います。
- Enter your blog URL: ブログのURLを指定
- Enter your MySQL hostname: そのままEnterでOK
- Enter your MySQL password: そのままEnterでOK
- Enter your Ghost database name: そのままEnterでOK
- Do you wish to set up "ghost" mysql user? (Y/n) Y
- Do you wish to set up NGINX? (Y/n) Y
- Do you wish to set up SSL? (Y/n) YにするとSSL設定が始まります。Nにすると後で別途実施となります。
- Do you wish to set up Systemd? (Y/n) Y
- Do you want to start Ghost? (Y/n) Y
※Ghostの更新などでインストール時の質問項目が変更される場合があります
⑥ 環境設定ファイルの見直し
移行元の設定情報をベースに、移行先サーバーの設定ファイル群の見直しを実施します。基本的には上書きで問題ないはずです。
⑦ contentディレクトリのアップロード
移行元サーバーからダウンロードしたファイル群を、移行先サーバーにアップロードします。ここもFileZilla等を利用して行いましょう。
⑧ データのインポート
移行元サーバーからエクスポートしたJSONファイルデータをインポートします。
管理画面にログインし「Settings」→「Advanced」→「Import」と進みます。その中にある「Universal import」をクリックすると、アップロード画面が表示されるので、そこからアップロードしてください。

移行完了!
これで移行作業完了です。あとは実際に画面をポチポチしながら、記事が表示されているか、記事内の画像データ等が読み込まれているか等を確認しましょう。それと管理画面にログインできるかどうかの確認も必須です!(設定しくってると、ログインが上手く動かなかったりします)
まとめ
移行前に準備するのは
- エクスポートJSON
- 画像データなど
- 環境設定情報
の3つ!ここさえ押さえておけば移行できます!あと、コマンド作業が多くなりがちなので、クライアント設定は作業前にやっておくと吉です。
最後に
実際の移行にかかった時間より、この記事書くのにかかった時間の方が長い!
コメント