{“content”: “\u003cdiv data-theme-toc="true"\u003e \u003c/div\u003e\n\n2つのDiscourseサイトを1つにまとめたい場合、このガイドはあなたのためです。\n\ndiscourse_mergerというツールがあり、1つのDiscourseサイトを別のサイトにマージできます。\n\n# 前提条件\n\nこれは簡単な作業ではなく、Discourseへの他の移行と同じように扱う必要があります。discourse_mergerを本番稼働中のサイトで実行することはありません。マージは、結果を本番環境に移行する前に確認できる別の環境で実行します。\n\n### コピー vs マージ\n\nほぼすべてが一方のサイトから他方のサイトへコピーされますが、カテゴリとユーザーはマージして重複を防ぐことができます。\n\n* 両方のサイトのユーザーが同じメールアドレスを持っている場合、ユーザーはマージされます。\n* 名前が同じ場合、カテゴリはマージされます。\n\nデータの再編成を行いたい場合は、マージ前にそれを実行してください。\n\n### 宛先サイトの選択\n\nデータの宛先となるサイトを選択します。このサイトがすべてのスタイルと設定を保持します。もう一方のサイトのユーザー、カテゴリ、トピック、投稿、アップロードなどが、宛先サイトにコピー/マージされます。\n\n# 手順\n\n両方のサイトのファイルを含むバックアップを取得し、マージを実行する環境にコピーします。これらは異なるバージョンのDiscourseからのものである可能性があるため、同じバージョンにする必要があります。マージを実行する際は、最新バージョンのDiscourseを使用することをお勧めします。\n\n宛先サイトをマージ環境にリストアします。コマンドラインから行う場合:\n\n\nbundle exec ruby script/discourse restore destination-2018-08-02-134227-v2018xxx.tar.gz\n\n\n次に、もう一方のサイトを展開します。\n\n\ncd /path/to/data\ntar xvzf other-2018-08-02-134227-v2018xxx.tar.gz\n\n\n出力には、データベースダンプとアップロードファイルが含まれます。\n\nデータでデータベースを作成します。\n\n\npsql\nCREATE DATABASE \"copyme\" ENCODING = 'utf8';\n\\q\ngunzip \u003c /path/to/data/other-2018-08-02-134227-v2018xxx.tar.gz | psql -d copyme\n\n\n公式Dockerコンテナ(推奨)でインポートを実行する場合、スクリプトがデータベースにアクセスできるようにpostgresユーザーのパスワードをリセットする必要があります。そうしないと、postgresユーザーがデータベースにアクセスできないというエラーが発生する可能性があります。\n\nパスワードを変更するには:\n\nsudo -u postgres psql\n\\password postgres\n(新しいパスワードを入力)\n\\q\n\n\nこれでスクリプトを実行する準備が整いました。設定する環境変数の一部:\n\nDB_NAME: マージされる宛先サイトのデータベース名。\nDB_HOST: (オプション) マージされるデータベースのホスト名。ローカルの場合は空白のままにします。\nDB_PASS: データベースにアクセスするためのpostgresユーザーのパスワード\nUPLOADS_PATH: 「original」ディレクトリと「optimized」ディレクトリを含むディレクトリの絶対パス(マージされるサイトのもの)。例: /path/to/data/uploads/default\nSOURCE_BASE_URL: マージされるサイトのベースURL。例: https://meta.discourse.org\nSOURCE_CDN: (オプション) マージされるサイトのCDNのベースURL。\n\nインポートスクリプトを実行する前に、エラーを避けるためにバンドルインストールが必要になる場合があります。これを行うには:\n\nsu discourse -c 'bundle config set --local with generic_import \u0026\u0026 bundle install'\n\n\n最初の実行時には、インポートスクリプトで必要なgemのために追加の依存関係をインストールする必要がある場合があります。\n\nバンドルが完了したら、インポートを実行します。\n\n\nsu discourse -c 'DB_NAME=copyme DB_PASS=password SOURCE_BASE_URL=http://copy.othersite.com UPLOADS_PATH=/shared/import/data/uploads/default bundle exec ruby script/bulk_import/discourse_merger.rb'\n\n\n\n完了したら、Webブラウザで結果を確認します。\n\n古いフォーラムからのリンクを更新するには、remapツールを使用できます。\n\n\nbundle exec ruby script/discourse remap 'copy.othersite.com' 'hot.newsite.com'\n\n\nまた、アップロードを含むすべての投稿を再ベイクします。\n\n\nrake posts:rebake_match[\"upload:\"]\n\n\nすべて問題ないように見えたら、結果のバックアップを取得し、本番サーバーにリストアします。\n\n\nbundle exec ruby script/discourse backup\n”}
「いいね!」 45