pfaffman
(Jay Pfaffman)
1
AWS EC2 上でマルチサイトインスタンスを使用しています。バックアップは次のように設定されています。
DISCOURSE_S3_BACKUP_BUCKET: lc-sitename
DISCOURSE_S3_SECRET_ACCESS_KEY: secret-key
DISCOURSE_S3_ACCESS_KEY_ID: key-id
DISCOURSE_BACKUP_LOCATION: s3
マルチサイトインスタンスのバックアップはバケットのルートに保存されていますが、UX のリストに表示されません。メインサイトのバックアップは、想定どおり default の下に保存されています。これは、バックアップがリストに表示されず、設定に従って削除されないことを意味します。
マルチサイトのスタンザは次のようになっています。
site:
adapter: postgresql
database: site
pool: 25
timeout: 5000
host: data
password: secret
host_names:
- community.site.org
DISCOURE_USE_S3 が設定されていない場合、バックアップが間違った場所(バケットのルート)に保存される可能性がありますか?(discourse.conf で use_s3 を設定しようとしましたが、unicorn を再起動せずにコマンドラインバックアップを実行したところ、サブサイトの名前ではなくルートに保存されました。)
S3 でアップロードに関する問題がありました(おそらくバケットの設定ミス)、そのため S3 はバックアップ専用です。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
さらに1時間半かけてしまいました。
マルチサイトのサイトの1つは、アップロード バックアップを正しいディレクトリに正しく配置していますが、2つはそうではありません。
正しく配置されていないものは、シングルサイトインスタンスからデータベースを復元したため、データベース内の何かが、バックアップをサイト名(またはデフォルトサイトのデフォルト)ではなく、バックアップフォルダのルートに強制しているのではないかと推測しています。
@gerhard、お手数をおかけしますが、私が何か明白な間違いを見落としているかどうか、簡単に確認していただけますでしょうか?
RGJ
(Richard - Communiteq)
3
はい、アップロードストレージは設計によるものです。バックアップがシングルサイトインスタンスからのものであった場合、復元方法は異なります。
was_multisite = BackupMetadata.value_for("multisite") == "t"
upload_path = "/#{Discourse.store.upload_path}/"
uploads_folder = was_multisite ? "/" : upload_path
しかし、これはバックアップがどこに置かれたかということについてであり、画像が復元される場所についてではなかったのではないでしょうか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
4
はい。
その通りです。
しかし、おっと:
私が(正しく)以前に述べたように、このインスタンスは(現在?)バックアップのみにS3を使用しており、アップロードには使用していません。
バックアップがバックアップバケットのルートに配置されているのは、3つのサブサイトのうち2つのバックアップです。プライマリサイトは予想どおり default にプッシュしており、マルチサイトインスタンスの1つは sitename ディレクトリにプッシュしています。
「いいね!」 1
gerhard
(Gerhard Schlager)
5
うーん、それは奇妙な動作ですね。ブラウザからアップロードされたバックアップですか、それともシステムによって作成されたバックアップですか?
システムによって作成されたバックアップが間違った場所にある理由がわかりません。コードは非常にわかりやすいように見えます。
s3_helper は正しいバケットとマルチサイト名で設定されます。
pfaffman
(Jay Pfaffman)
6
Webインターフェイスまたはrakeタスクから、3つのマルチサイトホストのうち2つ(どちらも別のサーバーから移行されたもの)のバックアップを作成すると、バックアップが sitename/backupname の中ではなく、バックアップS3バケットのルートにアップロードされることを意味します。
私にとっても奇妙なことのように思えます。
これらの関数にいくつかの puts を追加して、追跡できるかどうかを確認してみます。
source_path に puts したところ、OSでは正しいフルパスになっていましたが、S3にアップロードされると、パスにサイト名がなくなっていました。
来週、もう一度詳しく見てみます。バックアップは存在しますが、Discourseが見つけられる場所にはありません。