s3_region を文字列値にする

この変数を限定リストにする理由は何でしょうか。何のために?

irb(main):007:0> SiteSetting.s3_region='fr-par'
Traceback (most recent call last):
        5: from (irb):7
        4: from lib/site_setting_extension.rb:548:in `block in setup_methods'
        3: from lib/site_setting_extension.rb:368:in `add_override!'
        2: from lib/site_settings/type_supervisor.rb:149:in `to_db_value'
        1: from lib/site_settings/type_supervisor.rb:207:in `validate_value'
Discourse::InvalidParameters (s3_region の無効な値 `fr-par`)

Scaleway には独自のリージョンがあります。

Configure an S3-compatible Object Storage provider for uploadsに従って、ENV変数で異なる値を設定できます。

「いいね!」 1

思った?

スクリプトで変数の許可される値が、可能な値のリストに従って厳密に制限されている場合、それが役立つと確信していますか?

はい、確信しています。なぜなら、Scaleway ガイドを Configure an S3 compatible object storage provider for uploads で作成し、本番環境でのインストールで動作することを確認したからです。

「いいね!」 1

クール! 2.9.0.Beta9 :slight_smile: で試してみてください。コンソールから変数を変更できない理由を教えてください。

Discourse::InvalidParameters ( s3_region の無効な値 fr-par)

InvalidParameters

わかりましたか? s3_region の無効な値 fr-par - 無効なパラメーター! いいですか?

コンソールで変更するべきではありません。なぜなら、Configure an S3 compatible object storage provider for uploads に従い、環境変数として設定するべきだからです :slightly_smiling_face:

「いいね!」 2

変なことを言っていますね :exploding_head:

  1. ここに投稿する前に、すでにこれを実行しました。
  2. これは機能しません。
  3. コンソールから直接試しました。
  4. これは機能しません。

@Falco Scalewayでバケットとアクセストークンを提供します。今すぐサーバーを作成し、そこにフォーラムを設定して、あなたにアクセス権を与えます。もし成功したら謝罪します :smiling_face_with_three_hearts: :kissing_heart:

真昼にサーバーを削除します。それまでアクセスは維持されます。

明らかに - 推奨設定は機能しません

エンドポイントを設定しただけです。

Using Scaleway s3-compatible object storage - #19 by Falco.

編集: ああ、どういうわけか、このトピックの最初からすべて見逃していました。

他の多くの人がガイドに従っており、機能します。

「いいね!」 1

nano /var/discourse/containers/app.yml

  DISCOURSE_S3_REGION: "fr-par"
  DISCOURSE_S3_ACCESS_KEY_ID: "SCW*******WYCGN"
  DISCOURSE_S3_SECRET_ACCESS_KEY: "***************"
  DISCOURSE_BACKUP_LOCATION: "s3"
  DISCOURSE_S3_BACKUP_BUCKET: "test-forum-falco-discourse-s3-region"
  DISCOURSE_S3_ENDPOINT: "https://s3.fr-par.scw.cloud"

./launcher rebuild app

Removing old container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_S3_REGION=fr-par -e DISCOURSE_S3_ACCESS_KEY_ID=SCWDM************GN -e DISCOURSE_S3_SECRET_ACCESS_KEY=*********************** -e DISCOURSE_BACKUP_LOCATION=s3 -e DISCOURSE_S3_BACKUP_BUCKET=test-forum-falco-discourse-s3-region -e DISCOURSE_S3_ENDPOINT=https://s3.fr-par.scw.cloud -e DISCOURSE_HOSTNAME=********** -e DISCOURSE_DEVELOPER_EMAILS=***************** -e DISCOURSE_SMTP_ADDRESS=in-v3.mailjet.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=************************ -e DISCOURSE_SMTP_PASSWORD=**************************** -e DISCOURSE_NOTIFICATION_EMAIL=************************* -e LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h scw-jolly-merkle-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:53:96:b4:7e:e7 local_discourse/app /sbin/boot
e558fe6dbde62177ae4f4171fd1099f1844321c80f59cf4c3c0d4c56abfa9412

*** - secrets

./launcher enter app

rake site_settings:export

---
title: Discourse1
contact_email: *************************
default_dark_mode_color_scheme_id: '1'
invite_only: 'true'
login_required: 'true'
default_trust_level: '1'
allowed_iframes: https://www.google.com/maps/embed?|https://www.openstreetmap.org/export/embed.html?|https://calendar.google.com/calendar/embed?|https://codepen.io/|https://www.instagram.com|https://*************************/discobot/certificate.svg
default_email_digest_frequency: '1440'

まだ機能しません

app.yaml で設定された ENV 変数は、必ずしも rake site_settings:export に反映されるとは限りません。なぜそのように想定されたのか不明です。

Configure an S3 compatible object storage provider for uploads のガイドに従って、すべての ENV 変数が設定されたように見えますが、投稿に画像をアップロードしようとするとどうなりますか? /logs ページに何か興味深いものはありますか?

「いいね!」 1

こんにちは。

わかりました。フォーラムの設定にも表示されるべきではありませんか? あなたは明らかにプログラミングに対する興味深く特別なアプローチを持っています。本当にそこにあるべきではないのでしょうか?

失礼しました。これで動作するようになりました :smiling_face_with_three_hearts: :kissing_heart:

  • Webインターフェースで設定フィールドが不足しています
  • site_settings:export - フィールドが不足しています
  • SiteSetting.s3_region=‘fr-par’ - エラー「s3_region の無効な値 fr-par

しかし

  • 動作しました
  • なぜそう決めたのか理解できません

ありがとうございます。すみません :wink: