После проведения некоторых экспериментов я обнаружил, что в некоторых моих сообщениях изображения не отображаются даже до выполнения какой-либо операции «переназначения».
Вместо этого отображается небольшой значок изображения, который показывает путь к изображению при наведении курсора мыши и показывает само изображение только после клика на него.
И этот значок тоже исчезает (а на его месте появляется белое пространство/заполнитель изображения), если выполнить «Перестроить HTML» из меню с тремя точками или даже если выполнить любую операцию «перепечки» внутри контейнера.
Если вы не выполняли переназначение и ваш бакет S3 всё ещё работает, ничего не должно измениться по сравнению с предыдущим состоянием. Работали ли эти изображения до того, как вы начали этот путь?
В теории вы потеряете связь с этими файлами изображений только в том случае, если отключите свой бакет S3 или выполните переназначение некорректно.
Спасибо.
Я обнаружил, что иконка изображения показывает путь /bucket/uploads/optimized/folder/… (и поскольку изображения по этому пути не существует, само изображение не отображается, показывается только иконка).
Однако при клике на эту иконку изображение отображается/загружается из папки ‘Orig’, то есть по пути /bucket/uploads/original/…
Не понимаю, как у одного изображения могут быть сохранены два разных пути?!
В любом случае, теперь проблема сводится к тому, как найти сообщения, в которых изображения привязаны к неверному пути (в разделе ‘optimized’). Чтобы я мог исправить/переназначить их адреса на правильный путь в разделе ‘Original’.
Спасибо @nathank, @Pravi, @itsbhanusharma. Поскольку я перепутал различные проблемы/сценарии, сейчас я нахожусь в следующей ситуации:
Некоторые из моих постов не отображают загруженные к ним изображения. Вместо этого при наведении курсора мыши на них показывается маленькая иконка с неверным URL/адресом бакета. Либо некоторые из них показывают правильное изображение и правильный путь к бакету ТОЛЬКО при клике на эти маленькие иконки. А изображения в других постах вообще не отображаются, оставляя лишь пустое белое пространство.
Кроме того, когда я выполнил операцию remap (remap wrongbucketurl correctbucketurl), то в одном выборочном посте обнаружил следующее: хотя сначала маленькая иконка была заменена правильным изображением (я обрадовался), на следующий день это изображение полностью исчезло, даже иконки не осталось. Вместо него появилось белое пространство. Поэтому мне пришлось восстановить свой сайт на состояние предыдущего дня.
Когда я выполнил эту команду, результат был следующим:
Я провёл десятки вариаций этого процесса, но он всё ещё не работает.
Наши изображения не отображаются через S3, потому что руководство решило, что не хочет бакет S3 с публичным доступом, поэтому нам нужно вернуться к локальному хранению.
Сначала я проверил битые ссылки и, исходя из этого, смог определить значения, которые нужно использовать при перенаправлении (как я думал), и теперь работает много изображений. Но большинство, скажем, более 90%, всё ещё не работают. В отличие от ситуации с битыми ссылками S3, где вы хотя бы можете их проверить, чтобы понять, что пошло не так, здесь я вижу только это:
Неужели кто-то знает, что может вызывать эти сбои изображений? Я застрял на этом уже несколько дней. Невероятно, что: а) нет способа вернуться назад, и б) кто-то (не я) выполнил миграцию, хотя возможности отката нет.
Для ясности: я следовал процессу, описанному выше пользователем @nathank. Я пробовал много раз, внося небольшие изменения в пути на этапе перенаправления, потому что мне непонятно, являются ли эти инструкции универсальными или зависят от структуры вашего каталога (у нас много подкаталогов, которые успешно скопированы из S3 с помощью шага синхронизации S3).
Я был бы очень признателен за помощь, так как я уже на грани отчаяния.
Я думаю, что вам нужно включить скрытую настройку include_s3_uploads_in_backups, создать резервную копию, а затем восстановить её (сначала я бы попробовал это на новом тестовом сервере). Именно так происходит, когда клиент CDCK отменяет подписку: эти резервные копии успешно восстанавливаются на новый самостоятельный хостинг без каких-либо проблем.
Я выполнил её, затем создал новую резервную копию. Восстановил систему из этой копии, но изменений нет — большинство изображений по-прежнему отображают иконку ошибки, показанную выше. Я также попытался пересобрать оба контейнера, но это не помогло.
При скачивании и проверке архива резервной копии все эти файлы точно присутствуют, и после восстановления они видны в файловой системе. Однако Discourse просто отказывается их распознавать и отображать.
Для справки: в итоге мне удалось это исправить. Я начал заново (то есть из снимка моего экземпляра) и уверен, что процесс, который в конце концов сработал, был следующим:
использовать rails console для выполнения SiteSetting.include_s3_uploads_in_backups=true
создать новую резервную копию
восстановить из этой резервной копии
использовать discourse remap для обновления ссылок на различные расположения файлов S3 на локальное расположение
пересобрать сообщения и пересоздать оба моих docker-контейнера
Спасибо @pfaffman за то, что указали мне правильное направление.
РЕДАКТИРОВАНИЕ
Думаю, стоит упомянуть и это. После предыдущего сообщения я понял, что в шести наших темах до сих пор отображаются битые изображения (хотя подавляющее большинство теперь в порядке).
Это наши шесть самых старых постов, и все исходные изображения имели другой URL S3, чем все остальные. Очевидно, это не совпадение. Поэтому я проверил, что все эти файлы находятся в директории uploads/default/original/1X, и они там есть. Затем я выполнил команду remap с использованием этого уникального URL S3 — и, казалось, это отредактировало нужное количество постов. После этого я пересобрал сообщения и пересоздал контейнеры, но эти темы всё ещё не работают. У кого-нибудь есть идея, почему небольшое количество постов может так завершаться неудачей?