ubuntu環境のgrowi移行手順

うぶんつでgrowiのひっこし GROWI

ubuntuのサーバーからubuntuのサーバーへgorwiを移行する際、手こずったのでここに手順を記しておきます。
ちなみにですが、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した場合

詳しい説明はこちらです。

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をおこない、起動するまで待ちます。

全文検索のリビルド

ログインできることを確認します。

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

まとめ

macやwindowsでは、docker desktopを利用できます。
docker desktopではdockerをGUIで操作できるほか、sudoによってdockerをたたく必要がありません。よって、ファイルの所有者も自分のままです。しかし、ubuntuの場合はsudoが必要になります。
その結果dockerから出力されたファイルの所有者は管理者になってしまうということです。

自分は時間を溶かしてしまいましたが、よく考えればとても簡単なことでした。

以上です。

コメント

タイトルとURLをコピーしました