После переноса изображений и ассетов (js) моего сайта на S3 я попытался обновить форум через интерфейс /admin/upgrade. Обновление прошло успешно, но, похоже, ассеты не были загружены в бакет S3, из-за чего мой сайт стал недоступен, пока я не пересобрал приложение из командной строки.
Там у меня есть хук, который делает это за меня. Было бы здорово иметь подобный функционал и в веб-интерфейсе. Не знаю, есть ли он уже; если да, пожалуйста, дайте знать.
Нет, вы не можете переместить активы в S3 из панели администратора. Вам придется сделать это через SSH, так как при миграции требуются дополнительные задачи, если только вы не выполняете это на чистой установке.
А, я понял. Мне нравился бесшовный способ обновления без простоя, пока я не перешел на S3. Есть ли возможность не отдавать JS через S3, а использовать его только для изображений?
Да, я не раздаю JS напрямую из S3, он хранится в S3, но раздается через CDN. Я хотел спросить: можно ли хранить JS локально и раздавать его через CDN, оставляя на S3 только медиафайлы?
Discourse JS предназначен для прямой раздачи через CDN, при этом установка Discourse выступает в качестве pull-оригина. Не знаю, как вы планируете размещать JS в S3, но имейте в виду: JS пересобирается при каждой пересборке. Всё, что вы будете отдавать через S3, скорее всего, устареет, и это только создаст дополнительные проблемы.
Именно поэтому они добавили хук after_assets_precompile для загрузки обновленных ресурсов на S3.
Как мне это исправить? При попытке получить доступ к любому ресурсу через локальный сервер возвращается ошибка 404. Ресурсы должны загружаться через S3. Иначе я бы настроил правило маршрутизации на граничном узле CDN для обработки запросов к ресурсам через локальный домен.
К сожалению, обсуждаемая тема не предусматривает этого, даже несмотря на то, что она называется «использование объектного хранилища для загрузок». Если вы настроите свой форум в соответствии с инструкциями в этой теме, это потребует выгрузки ассетов на S3.