Обновление = ☠

Всем привет

Я обычно слежу за обновлениями, заметил, что одно должно было прийти, и установил его. В результате интерфейс пропал, кроме как в панели администратора.

Зашёл через SSH и обновил сервер, чтобы убедиться, что всё в порядке, но это не помогло.

Попытался откатить изменения и получил следующее:

Вошёл в безопасный режим, но меня выбросило, хотя интерфейс появился частично.

Не могу войти в систему: система говорит, что моё имя пользователя свободно, а мой email не существует.

Буду очень признателен за помощь, спасибо!


Редактирование: перезагрузил сервер и получил:

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

Там тоже ничего не вышло.


Редактирование: обновив другую вкладку, я, кажется, смог зарегистрироваться.

затем

всё равно ничего не вышло.


Через SSH всё выглядит так же, как и раньше.


Редактирование

image

DISCOURSE DOCTOR Sun Nov 12 01:54:06 UTC 2023
OS: Linux ip-10-0-159-37 6.2.0-1015-aws #15~22.04.1-Ubuntu SMP Fri Oct  6 21:37:24 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux


Найдено containers/app.yml

==================== НАСТРОЙКИ YML ====================
DISCOURSE_HOSTNAME=forum.full30.com
SMTP_ADDRESS=smtp.sendgrid.net
DEVELOPER_EMAILS=REDACTED 
SMTP_PASSWORD=REDACTED 
SMTP_PORT=587
SMTP_USER_NAME=apikey
LETSENCRYPT_ACCOUNT_EMAIL=REDACTED  LETSENCRYPT_ACCOUNT_EMAIL

==================== ИНФОРМАЦИЯ О DOCKER ====================
ВЕРСИЯ DOCKER: Docker version 24.0.7, сборка afdd53b

ПРОЦЕССЫ DOCKER (docker ps -a)

ID КОНТЕЙНЕРА   ИЗОБРАЖЕНИЕ                 КОМАНДА        СОЗДАНО        СТАТУС                      ПОРТЫ     ИМЯ
0be0150fecde   local_discourse/app   "/sbin/boot"   5 месяцев назад   Завершён (5) 11 минут назад             app

==================== СЕРЬЁЗНАЯ ПРОБЛЕМА!!!! ====================
app не запущен!
Попытка пересборки
==================== ЖУРНАЛ ПЕРЕСБОРКИ ====================
Определена архитектура x86_64.
Убедитесь, что загрузчик актуален
Получение origin
Загрузчик актуален
Остановка старого контейнера
+ /usr/bin/docker stop -t 600 app
app
2.0.20231023-1945: Pulling from discourse/base
Digest: sha256:2b0eb484d20888cc2daadb690dcfa73522105650c1420212e99345a36a424d77
Статус: Образ актуален для discourse/base:2.0.20231023-1945
docker.io/discourse/base:2.0.20231023-1945
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2023-11-12T01:54:13.829288 #1]  INFO -- : Чтение из stdin
I, [2023-11-12T01:54:13.834181 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2023-11-12T01:54:13.862453 #1]  INFO -- : Генерация локалей (это может занять некоторое время)...
Генерация завершена.

I, [2023-11-12T01:54:13.862638 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2023-11-12T01:54:13.865023 #1]  INFO -- : 
I, [2023-11-12T01:54:13.865390 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2023-11-12T01:54:13.867489 #1]  INFO -- : 
I, [2023-11-12T01:54:13.867791 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2023-11-12T01:54:13.869643 #1]  INFO -- : 
I, [2023-11-12T01:54:13.869925 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2023-11-12T01:54:13.871930 #1]  INFO -- : 
I, [2023-11-12T01:54:13.872203 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2023-11-12T01:54:13.874058 #1]  INFO -- : 
/tmp/discourse-debug.txt

Это выглядит значимым:

Warning: Could not create server TCP listening socket *:6379: bind: Address already in use

Похоже, Redis должен запускаться на порту 6379.

Могло ли невозможность запуска сервера Redis вызвать проблемы с миграциями?

Error: relation "summary_sections" already exists

По какой-то причине миграция для создания таблицы summary_sections выполняется повторно. Есть ли в ваших логах другие ошибки дублирования таблиц?

Ещё один вопрос: у вас есть свежая резервная копия?

lol, да, я бы тоже так подумал. К сожалению, ответ таков: заглянув на свой сервер, я вижу, что самая последняя дата — 5 ноября. Поскольку я не могу войти в панель администратора, я не могу проверить, возможно, Discourse создал более свежую копию.

Но… это сегодня утром,

forum

Если я не могу войти в панель администратора, чтобы сделать резервную копию, то я просто не знаю, что делать?

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

Роберт

Я очень мало знаком с логами. Я занимаюсь этим уже пять лет, и у меня было так мало проблем, которые легко решались, что необходимости в этом не возникало. У меня нет технической команды, к которой можно обратиться. Можете ли вы пошагово объяснить, как получить и опубликовать логи? И будут ли они обезличены при загрузке, как файл Doctor?

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

Пересборка приложения через консоль решила эту проблему, восстановление из резервной копии не потребовалось.

Было бы полезно узнать, как запустить сайт заново из резервной копии — я тоже не знаю, как это сделать.

Просто попробовал ещё раз:

cd /var/discourse
git pull
./launcher rebuild app

И снова получил

ошибки/предупреждения следующие:

image

Инструмент Doctor снова не помог, я сохранил его отчёт, но там ничего нового.

При повторной сборке возникли аналогичные ошибки:

137:M 12 ноя 2023 13:09:14.143 # Предупреждение: Не удалось создать серверный TCP-сокет для прослушивания *:6379: bind: Адрес уже используется
137:M 12 ноя 2023 13:09:14.143 # Не удалось прослушивать порт 6379 (TCP), прерывание.

Однако я помню, что видел эти сообщения и раньше, но установка всё равно завершалась успешно.

Вы подключены к консоли сервера по SSH под пользователем root?

Несколько раз во время установки процесс занимал довольно много времени — более 10 минут. Сначала казалось, что система зависла, но после ожидания всё же завершалось.

Много ошибок, связанных с неправильными или невыполненными зависимостями одноранговых узлов.

Затем процесс останавливается после строки «background saving terminated with success», что звучит как завершение, но, apparently, это именно тот этап, на котором может потребоваться до десяти минут для перехода к следующему шагу.

Чтобы просмотреть детали журнала, вы можете сделать следующее:

Войдите под root или выполните **sudo su**,
затем выполните команды:

cd /var/discourse
./launcher enter app
tail -f log/production.log

После запуска последней команды необходимо отправить HTTP-запрос к вашему Discourse. В терминале появится новое сообщение об ошибке. Затем вы можете остановить выполнение команды tail, нажав Ctrl+C, и просмотреть или скопировать сообщение.

Чтобы выйти из оболочки контейнера, используйте команду exit.

Да

Ошибка ответа от демона: Контейнер 0be0150fecde6af5e98c0f12b97d24ccc1333fee2e96f02174ac63b79df8efbc не запущен
tail: не удалось открыть ‘log/production.log’ для чтения: Нет такого файла или каталога
tail: файлы больше не осталось

Я попытался выполнить HTTP-запрос через curl “https://forum.full30.com

и получил:

curl: (3) URL с неверным/недопустимым форматом или отсутствует URL

так что… возможно, я просто не понял, что вы имели в виду под HTTP-запросом :man_shrugging:

Учитывая, что это ваша самая последняя резервная копия, и я не являюсь экспертом в таких вопросах, я не уверен, что должен давать здесь советы.

Насколько я могу судить, проблема с Warning: Could not create server TCP listening socket *:6379, вероятно, не связана с ошибками, которые вы получаете при выполнении миграций. Например:

INFO -- cd /var/www/discourse и su discourse -c 'bundle exec rake db:migrate'

ERROR: база данных "discourse" уже существует

Ошибка: роль "discourse" уже существует

Ошибка: отношение "summary_sections" уже существует

Эти ошибки, похоже, указывают на то, что ваша база данных каким-то образом повреждена. Команда bundle exec rake db:migrate (которая находится в разделе INFO в фрагменте ваших логов, опубликованном выше) должна заставить Discourse проверить таблицу schema_migrations базы данных, чтобы увидеть, какие миграции уже были выполнены. Это предотвращает многократный запуск одной и той же миграции. Поэтому я предполагаю, что либо таблица schema_migrations вашей базы данных повреждена, либо в папку db/migrations каким-то образом попали дублирующиеся записи, либо файлы в папке db/migrations были каким-то образом переименованы. Я не уверен, что может вызвать любую из этих ситуаций.

Я бы соблазнился войти в приложение с помощью ./launcher enter app и вручную запустить миграцию оттуда, чтобы посмотреть, изменит ли это что-либо. Однако пока воздержитесь от этого. Надеюсь, кто-то, кто лучше разбирается в скриптах launcher, увидит этот пост и исправит любые мои ошибки.

Буду рад узнать ваше мнение или мнение любого другого человека.

Мы планируем ещё один перенос сервера. Не кажется ли вам, что сейчас подходящее время, так как эти проблемы, похоже, связаны с ошибками типа

PG::DuplicateTable: ERROR: relation "summary_sections" already exists

и другими сообщениями о том, что объекты уже существуют?

Может ли перенос помочь?

Подозреваю, что это решит проблему. Не помешает попробовать создать новую установку и импортировать в неё ваш последний файл резервной копии.

Похоже, сайт уже считает, что это новая установка, обратите внимание на некоторые мои скриншоты.

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

Я делал git pull и т.д., ничего не изменилось, насколько я могу судить, по сравнению с созданием новой установки. Если я не прав, пожалуйста, подскажите, как правильно.

попробовал

./launcher start-cmd app

./launcher cleanup

удалил 18 МБ образов, выполнил новый pull/rebuild/fail/doctor, но всё равно ничего не получилось

хотя вся моя информация по-прежнему доступна при входе в мое приложение, так что хоть это и хорошо

Я на 95% уверен, что ошибки дублирования таблиц можно смело игнорировать. (Я помню, что они появлялись при каждом обновлении на нашем форуме)

Я их проигнорировал, но всё ещё не могу восстановить подключение к сети.

Что вы думаете об этих ошибках?

Можете ли вы выложить полный лог пересборки?

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

/launcher rebuild app

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

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 645 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
adb2c505fd2f1289f44586496fea24ff31264f73c26eb524baf16602a189f
root@ip-10-0-159-37:/var/discourse#

что именно имеется в виду?

Да, что мне следует сначала удалить из него?