Случайно обновил, теперь некоторые настройки утеряны/сломаны

Полное раскрытие: я очень давно не занимался ручным обслуживанием нашего самостоятельно размещённого экземпляра Discourse, а изначально его настраивал кто-то другой.

Мне нужно было сменить учётные данные SMTP, поскольку SendGrid требует перехода от базовой аутентификации к использованию API-ключей.

Я нашёл этот документ: Рекомендуемые поставщики электронной почты для Discourse

В нём сказано:

Чтобы изменить текущий почтовый сервис, выполните также команду ./discourse-setup (это временно отключит форум на несколько минут во время перестройки).

Я выполнил эту команду, ответил на вопросы как обычно, и в стандартный вывод было выведено около 2000 строк, завершившихся следующим сообщением:

Обновление завершено
----------------
Статистика оптимизатора не переносится pg_upgrade, поэтому
после запуска нового сервера рекомендуется выполнить:
    ./analyze_new_cluster.sh

Запуск этого скрипта удалит файлы данных старого кластера:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
ОБНОВЛЕНИЕ POSTGRES ЗАВЕРШЕНО

Старая база данных 10 сохранена в /shared/postgres_data_old

Для завершения обновления выполните повторную перестройку командой:

./launcher rebuild app
-------------------------------------------------------------------------------------

cfd4df26701b4b4cd4a4202f30a9c8165a1ba609c921bffc25f250f52fee6cbe

Я не ожидал, что это приведёт к «обновлению» чего-либо. Мне нужно было лишь сменить учётные данные SMTP. Однако сайт не восстановился автоматически, поэтому я поступил так, как указано в сообщении: «для завершения обновления» и выполнил:

./launcher rebuild app

Это вызвало ещё около 8000 строк вывода в стандартный поток. Сайт в итоге восстановился, НО он выглядит иначе:

  • Логотип пропал, вместо него отображается логотип «Discourse».
  • Изображения аватаров пользователей перестали отображаться. Впоследствии они снова начали работать.
  • Изображения в сообщениях и логотипы категорий перестали отображаться. Они до сих пор не работают. Я искал изображения с совпадающими именами файлов в директории ./discourse/share И в нашем бакете S3 (где URL ожидает их найти), но их там нет.
  • Сообщения из моей категории «поддержка», которые я скрыл со страницы «последние», снова стали видны на этой странице.
  • Моя категория «поддержка» больше не отображается на странице «категории».
  • Страница «категории» теперь имеет две колонки: слева — категории, справа — «последние». Мне кажется, раньше это был просто список категорий.
  • Цвет символа + в кнопке + Новая тема изменился с белого на серый.

На данный момент я подозреваю, что была утеряна какая-то конфигурация, но все мои сообщения сохранены. Также я предполагаю, что Discourse автоматически обновился (не знаю, с какой версии, вероятно, через множество версий), и некоторые базовые настройки по умолчанию, CSS, шаблоны и т. д. изменились, что привело к перечисленным проблемам.

Просмотрев исходный код, я увидел, что версия теперь 2.6.0.beta6, которая, как оказалось, была выпущена всего 7 дней назад.

Итак, мои вопросы:

  • Нормально ли, что для применения простого изменения настроек, например учётных данных SMTP, необходимо полностью обновлять программное обеспечение?
  • Как можно изменить настройки или применить обновления безопасности без обновления всего программного обеспечения?
  • Где мои изображения, или почему изменился их URL таким образом, что они больше недоступны?
  • Есть ли способ откатиться, не теряя новые сообщения, появившиеся после всего этого? Я даже не знаю, какая версия у нас была раньше. У меня есть резервные копии Discourse в S3 (просто сжатый дамп SQL).
  • Мне просто нужно вручную пройти все настройки и кастомизации, чтобы исправить такие вещи, как цвет + Новая тема, а также скрытую/видимую категорию «поддержка»?

Я думал, что мы делали снимки EBS нашего тома EC2, на котором размещён Discourse, но оказалось, что это не так. Я включил снимки, чтобы в будущем при необходимости можно было откатиться этим способом.

Спасибо.

Да. Теоретически можно было бы уничтожить и перезапустить контейнер, чтобы применить новые настройки SMTP, но для этого нужно было бы внимательно изучить инструкцию.

Нет. Обновления безопасности являются частью всего программного обеспечения. Вы могли бы использовать стабильную ветку, но, судя по всему, вы отставали на несколько версий, поэтому большинство ваших проблем всё равно бы возникли.

Это неясно. Обычно при обновлении они не теряются.

Нет. [quote=“mrmachine, post:1, topic:171465”]
Мне просто нужно вручную проверить все настройки и параметры кастомизации, чтобы исправить такие вещи, как цвет кнопки «+ Новая тема» и скрытую/видимую категорию «Поддержка»?
[/quote]

Да. Похоже, вы использовали версию, устаревшую на несколько лет. С тех пор десятки программистов потратили тысячи часов. Они внесли изменения, которые нарушили некоторые ваши кастомизации.

Но вы всё равно не сможете откатиться, не потеряв сообщения, появившиеся после последнего резервного копирования.

Вам следует обновляться при каждом выпуске бета-версии или переключиться на стабильную ветку при следующем стабильном релизе.

Просто хочу уточнить этот момент. Мы хранили загруженные изображения на S3 и не выбирали опцию загрузки удалённых изображений, чтобы избежать битых ссылок. Не уверен, что это имеет значение, но суть в том, что изображения должны были храниться на S3 и ссылаться на них через S3-URL в Discourse.\n\nПосле обновления многие-многие изображения перестали отображаться. Логотипы категорий и загрузки пользователей в постах. При проверке в S3 оказалось, что указанные имена файлов не существуют.\n\nК счастью, у нас включено версионирование S3, и я смог увидеть в консоли S3, что МНОГО ссылаемых изображений были удалены во время/после обновления.\n\nЯ адаптировал найденный Python-скрипт (https://stackoverflow.com/a/54613767/2829685), чтобы перебрать все версии объектов в нашем бакете S3 и удалить «маркеры удаления» из текущей версии любого файла с меткой времени last_modified, равной или более поздней, чем дата обновления.\n\nЭто заняло большую часть дня, и было восстановлено около 45 тысяч изображений. Похоже, что Discourse создаёт множество миниатюр для каждого изображения.\n\nТеперь логотипы категорий и загруженные пользователями изображения в постах снова на месте. Но я не имею ни малейшего представления, как все эти изображения могли быть удалены в S3 в процессе обновления.\n\nКажется, это может быть очень опасная ошибка в процессе обновления Discourse? Хотя, возможно, она уже исправлена, так как я обновлялся с такой старой версии.