Discourse случайно не запускается или не пересобирается

Внезапно Discourse перестал запускаться и даже не собирается с помощью ./launcher rebuild app. Я также закомментировал все плагины.

Вот логи при попытке запуска: https://codefile.io/f/8XUuOqyEDd

А вот логи при использовании ./launcher rebuild app. Я вижу сообщение о «failed listening on port 6379 (TCP) aborting», но на этом порту ничего не запущено!

https://codefile.io/f/zxCBRzEOA9

Я не думаю, что это связано с вашей проблемой. Это предупреждение часто (всегда?) появляется во время пересборки.

error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: Connection refused

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

Это может дать подсказки:

Не это ли вызывает проблему при запуске (без выполнения ./launcher rebuild app)?

Я остановил все остальные службы на своем сервере и обновился до последней версии Ubuntu LTS, но ошибка всё ещё отображается:

Вызвано:
PG::ConnectionBad: подключение к серверу через сокет "/var/run/postgresql/.s.PGSQL.5432" не удалось: Connection refused (PG::ConnectionBad)
        Запущен ли сервер локально и принимает ли он подключения через этот сокет?

Это именно та ошибка, которую я и ожидал.

Замена шаблонов на версии 13 и даже 15 не решила проблему, как было показано в упомянутом посте.

Причина:
PG::ConnectionBad: подключение к серверу через сокет “/var/run/postgresql/.s.PGSQL.5432” не удалось: файл или каталог не найден (PG::ConnectionBad)
Запущен ли сервер локально и принимает ли он подключения через этот сокет?

timeout: down: postgres: 1s, normally up, want up

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

ok: run: postgres: (pid 315501) 0s

Логи postgres могут содержать подсказку о проблеме, особенно при попытке запуска контейнера приложения.

tail -f shared/standalone/log/var-log/postgres/current

Вы выполнили обновление PostgreSQL 15?

Я тоже думаю, что проблема в некорректном завершении работы. Если у вас есть резервная копия, я бы запустил новую виртуальную машину и восстановил данные оттуда. Вы можете следовать инструкции Перенос сайта Discourse на другой VPS с помощью rsync, исключив postgres_*.

Альтернативный вариант, который у вас останется, если резервной копии нет, — разобраться с множеством нюансов работы PostgreSQL, о которых вам, вероятно, не хотелось бы узнавать.

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

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

Я предоставлю логи Postgres, секунду.

2025-03-22 00:30:44.110 UTC [4922] ФАТАЛЬНО: файл блокировки “postmaster.pid” пуст
2025-03-22 00:30:44.110 UTC [4922] СОВЕТ: либо запущен другой сервер, либо файл блокировки остался от предыдущего сбоя при запуске сервера.
2025-03-22 00:30:45.127 UTC [4964] ФАТАЛЬНО: файл блокировки “postmaster.pid” пуст
2025-03-22 00:30:45.127 UTC [4964] СОВЕТ: либо запущен другой сервер, либо файл блокировки остался от предыдущего сбоя при запуске сервера.
2025-03-22 00:30:46.151 UTC [4966] ФАТАЛЬНО: файл блокировки “postmaster.pid” пуст
2025-03-22 00:30:46.151 UTC [4966] СОВЕТ: либо запущен другой сервер, либо файл блокировки остался от предыдущего сбоя при запуске сервера.
2025-03-22 00:30:47.168 UTC [4970] ФАТАЛЬНО: файл блокировки “postmaster.pid” пуст
2025-03-22 00:30:47.168 UTC [4970] СОВЕТ: либо запущен другой сервер, либо файл блокировки остался от предыдущего сбоя при запуске сервера.
2025-03-22 00:30:48.192 UTC [4977] ФАТАЛЬНО: файл блокировки “postmaster.pid” пуст
2025-03-22 00:30:48.192 UTC [4977] СОВЕТ: либо запущен другой сервер, либо файл блокировки остался от предыдущего сбоя при запуске сервера.

-rw------- 1 syslog kvm 0 18 мар 19:48 /var/discourse/shared/standalone/postgres_data/postmaster.pid

Вот где находится мой файл блокировки

Они находятся в /var/discourse/shared/standalone/backups/default

Если вы следуете инструкциям по rsync, которые я приводил ранее, вы сможете их получить.

Она могла аварийно завершить работу, сервер перезагрузился или произошло что-то ещё.

База данных «мигрируется» с одного набора таблиц (таблицы добавляются и изменяются) на другой при большинстве обновлений.

Вы можете попробовать остановить контейнер и удалить файл блокировки.

Также посмотрите в PG_VERSION, чтобы узнать, какая у вас версия, поскольку, кажется, вы пытались изменить шаблон.

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

Итак, мне нужно выполнить rm /var/discourse/shared/standalone/postgres_data/postmaster.pid, чтобы удалить файл блокировки, а затем попробовать собрать заново?

Также спасибо за помощь в этом вопросе.

Вы хотите выполнить эту команду для удаления файла блокировки?

Команда rm /var/discourse/shared/standalone/postgres_data/postmaster.pid стала решением, спасибо!