我正在尝试修复我网站的 s3/cdn 设置,但遇到了一些问题。先简单回顾一下背景:我之前一直使用 Digital Ocean Spaces 配合 bunny.net 作为 CDN,网站设置都已正确配置,但我从未在 app.yml 中设置 DISCOURSE_CDN_URL,因为我不了解它的工作原理或其重要性。最近,由于 Digital Ocean Spaces 出现问题,我切换到了 Amazon S3,但继续使用 bunny.net 作为 CDN。我想这部分迁移已经搞定了,@pfaffman 将协助我重新映射数据库。
我现在遇到的问题在于设置 DISCOURSE_CDN_URL。我已经在 bunny 上为此创建了一个新的拉取区域(pull zone),将源 URL 设置为 https://community.naturephotographers.network(即我的论坛)。我为此设置了一个 CNAME,指向 assets.naturephotographers.network。随后,我将 DISCOURSE_CDN_URL 设置为 https://assets.naturephotographers.network,重建过程正常,但网站的资源并没有从 assets.naturephotographers.network 的 CDN 获取,不知为何却从 Amazon 存储桶加载了。
我尝试运行以下 rake 任务:
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
但运行失败,报错如下:
I, [2021-07-26T13:31:31.754617 #1] INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets
`/root` 不可写。
Bundler 将临时使用 `/tmp/bundler20210726-6572-1a099eq6572` 作为您的主目录。
错误:请确保在 config/discourse.conf 或环境变量中已配置 S3。
I, [2021-07-26T13:31:42.586559 #1] INFO -- :
I, [2021-07-26T13:31:42.587455 #1] INFO -- : 终止异步进程
I, [2021-07-26T13:31:42.587523 #1] INFO -- : 向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 56 发送 INT 信号
I, [2021-07-26T13:31:42.587764 #1] INFO -- : 向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 173 发送 TERM 信号
173:signal-handler (2021-07-26 13:31:42.588 UTC [56] LOG: 收到快速关闭请求
1627306302) 收到 SIGTERM,计划关闭...
2021-07-26 13:31:42.594 UTC [56] LOG: 中止所有活跃事务
2021-07-26 13:31:42.596 UTC [56] LOG: 后台工作进程 "logical replication launcher" (PID 65) 以退出代码 1 退出
2021-07-26 13:31:42.599 UTC [6573] FATAL: 由于管理员命令终止自动真空进程
2021-07-26 13:31:42.599 UTC [6573] CONTEXT: 在清理关系 "pg_toast.pg_toast_21988" 的第 74749 块时
2021-07-26 13:31:42.603 UTC [60] LOG: 正在关闭
173:M 26 Jul 2021 13:31:42.630 # 用户请求关闭...
173:M 26 Jul 2021 13:31:42.630 * 在退出前保存最终的 RDB 快照。
2021-07-26 13:31:42.766 UTC [56] LOG: 数据库系统已关闭
173:M 26 Jul 2021 13:31:43.123 * 数据库已保存到磁盘
173:M 26 Jul 2021 13:31:43.123 # Redis 现在准备退出,再见...
以下是我的 s3/cdn 网站设置:
还有一个有趣的现象:如果我将所有 s3/cdn 设置放在 app.yml 中而不是网站设置中,网站就会崩溃,只显示白屏,尽管设置完全相同,控制台却出现了大量 403 错误:
## S3 配置
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: us-west-1
DISCOURSE_S3_ACCESS_KEY_ID: ***
DISCOURSE_S3_SECRET_ACCESS_KEY: ***
DISCOURSE_S3_CDN_URL: https://images.naturephotographers.network
DISCOURSE_S3_BUCKET: npnimages
DISCOURSE_S3_BACKUP_BUCKET: npn-backup
DISCOURSE_BACKUP_LOCATION: s3
有什么建议吗?谢谢!
