将 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 (Invalid value `fr-par` for `s3_region`)

Scaleway 有自己的区域。

您可以通过环境变量设置不同的值,具体请参阅为上传配置 S3 兼容对象存储提供商

1 个赞

你认为我没有吗?

如果脚本中变量的允许值严格限制在可能的列表范围内,你确定这会有所帮助吗?

是的,我很确定,因为我编写了 Scaleway 指南 https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916,并在生产环境中测试过其有效性。

1 个赞

太棒了!请在 2.9.0.Beta9 上试试 :slight_smile: 请解释一下为什么不能通过控制台更改变量?

Discourse::InvalidParameters (无效值 fr-par 用于 s3_region)

InvalidParameters

明白了吗?无效值 fr-par 用于 s3_region - 无效参数!好的吗?

你不应该在控制台上更改它,因为你应该遵循 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:

我将在白天删除服务器。在此之前,访问将保持不变。

显然 - 建议的设置不起作用

只需设置端点。

编辑:哦,不知怎么我错过了这个话题的开头。。。

很多人都遵循了指南,而且确实有效。

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'

It doesn’t work still

app.yaml 中设置的环境变量不一定会反映在 rake site_settings:export 中,不知道你为什么会这么认为。

现在看起来你已经按照为上传配置 S3 兼容对象存储提供商中的指南设置了所有环境变量,那么当你尝试向帖子上传图片时会发生什么?/logs 页面有什么有趣的内容吗?

1 个赞

你好。

好的。它们不应该也在论坛设置中显示吗?你显然有一种有趣且特殊的方法来编程。它们真的不应该在那里吗?

请原谅我。现在它能用了 :smiling_face_with_three_hearts: :kissing_heart:

  • Web 界面中缺少设置字段
  • site_settings:export - 字段缺失
  • SiteSetting.s3_region=‘fr-par’ - 错误 “s3_region 的无效值 fr-par

但是

  • 它能用了
  • 我不明白为什么我当初会这么决定

谢谢。抱歉 :wink: