Я пытаюсь исправить настройки S3/CDN на своём сайте и столкнулся с проблемами. Немного предыстории: ранее я использовал Digital Ocean Spaces с CDN от bunny.net. Всё было правильно настроено в настройках сайта, но я никогда не устанавливал DISCOURSE_CDN_URL в файле app.yml, так как не понимал, как это работает и насколько это важно. Недавно я перешёл на Amazon S3 после возникновения проблем с DO Spaces, но остался на bunny.net как CDN. Думаю, что часть перехода я уже разобрал, и @pfaffman поможет мне перенастроить базу данных.
Теперь проблема в настройке DISCOURSE_CDN_URL. Я создал новую pull-зону на bunny, указал в качестве origin URL https://community.naturephotographers.network (это мой форум). Для этого я настроил CNAME, указывающий на assets.naturephotographers.network. Затем я установил DISCOURSE_CDN_URL в значение https://assets.naturephotographers.network. Пересборка проходит успешно, но файлы сайта загружаются не с CDN по адресу assets.naturephotographers.network, а почему-то напрямую из бакета 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` is not writable.
Bundler will use `/tmp/bundler20210726-6572-1a099eq6572' as your home directory temporarily.
ERROR: Ensure S3 is configured in config/discourse.conf or environment vars
I, [2021-07-26T13:31:42.586559 #1] INFO -- :
I, [2021-07-26T13:31:42.587455 #1] INFO -- : Terminating async processes
I, [2021-07-26T13:31:42.587523 #1] INFO -- : Sending INT to 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
I, [2021-07-26T13:31:42.587764 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 173
173:signal-handler (2021-07-26 13:31:42.588 UTC [56] LOG: received fast shutdown request
1627306302) Received SIGTERM scheduling shutdown...
2021-07-26 13:31:42.594 UTC [56] LOG: aborting any active transactions
2021-07-26 13:31:42.596 UTC [56] LOG: background worker "logical replication launcher" (PID 65) exited with exit code 1
2021-07-26 13:31:42.599 UTC [6573] FATAL: terminating autovacuum process due to administrator command
2021-07-26 13:31:42.599 UTC [6573] CONTEXT: while vacuuming block 74749 of relation "pg_toast.pg_toast_21988"
2021-07-26 13:31:42.603 UTC [60] LOG: shutting down
173:M 26 Jul 2021 13:31:42.630 # User requested shutdown...
173:M 26 Jul 2021 13:31:42.630 * Saving the final RDB snapshot before exiting.
2021-07-26 13:31:42.766 UTC [56] LOG: database system is shut down
173:M 26 Jul 2021 13:31:43.123 * DB saved on disk
173:M 26 Jul 2021 13:31:43.123 # Redis is now ready to exit, bye bye...
Вот мои настройки сайта для S3/CDN:
Ещё один интересный момент: если я переношу все настройки S3/CDN из настроек сайта в app.yml, сайт ломается — отображается только белая страница, несмотря на то, что настройки идентичны. В консоли появляется множество ошибок 403:
## S3 Configuration
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
Есть какие-то идеи? Спасибо!
