メインコンテンツまでスキップ

ubuntu環境のgrowi移行手順

· 約5分
時雨風
箱庭の管理者

UbuntuのサーバーからUbuntuのサーバーへGrowiを移行する際、手こずったのでここに手順を記しておきます。ちなみにですが、Growiの部分というよりはDockerの部分で手こずりました。手順自体はさほど難しくありません。

環境

UbuntuからUbuntuへGrowiのデータを移行します。

稼働中のサーバー

  • Ubuntu Server 20.04

移行予定のサーバー

  • Ubuntu Server 20.04

手順

大まかな手順は下記のとおりです。

  1. Growi環境の構築
  2. データの転送
  3. Dockerのスタートとリビルド

まずは、移行予定のサーバーに環境を整えます。移行予定のサーバーにDocker EngineとDocker Composeをインストールします。

Dockerのインストール

Install Docker Engine on Ubuntu | Docker Documentation Docker Compose のインストール — Docker-docs-ja 19.03 ドキュメント

Growiデータの転送準備

続いてサーバーからサーバーへデータを転送します。転送の前に、ファイルの所有者を確認します。ファイルの所有者がrootなので管理者権限が必要になります。稼働中のサーバーでGrowiを停止します。sudo docker-compose stop

Ubuntuは管理者権限sudoを使用してDockerを起動します。よって、Dockerのコマンドを使用して作成されたファイルが管理者の所有になっています。これに気づかないとscpコマンドを使用してもsudoを使用しない限り、ファイルが転送できません。

ファイルの転送

続いて、ファイルの転送を行います。Dockerのvolumeがどこにあるかを確認します。

特に設定していない場合

特に設定していない場合は/var/lib/docker/volumesにデータが保存されています。

/var/lib/docker/volumes # lsコマンド
backingFsBlockDev
growi_growi_data
growi_mongo_db
growi_es_data
growi_mongo_configdb
metadata.db

Growiとついているデータを転送すれば大丈夫です。

bindした場合

詳しい説明はこちらです。 https://www.tokiukaze.com/recommended-by-growi/#toc28

bindをすることによって、データの場所が分かりやすくなります。バックアップも行いやすくなるので、この機会に設定してみるとよいかもしれません。

ファイル所有者の確認

ファイル所有者はls -lで確認できます。ファイルの所有者がrootになっている場合は、管理者権限で転送を行う必要があります。コマンドは下記のとおりです。

sudo -i

転送コマンド例

稼働していたサーバーでターミナルを使用します。カレントディレクトリにGrowiのデータが入ったdataがあり、.ssh/configに移行予定のサーバーnew-serverが設定されているとします。展開先は/optです。

scp -r ./data new-server:/opt

docker-composeの起動

移行予定のサーバーにてデータが転送されたかを確認します。続いて/opt/growiに移動します。そこでsudo docker-compose up -dを実行し、起動するまで待ちます。

全文検索のリビルド

ログインできることを確認します。次に検索機能が使用できるかを確かめてください。もし使用できないのであれば、設定 > 全文検索管理 > リビルドよりインデックスのリビルドを行ってください。

以上です。