Сайт недоступен после обновления (4 февраля 2025 г.)

Я увидел это сообщение после недавней пересборки. Затем я выполнил команду ./launcher rebuild app, но после этого мой экземпляр стал недоступен. Это стандартная установка — как можно определить, что произошло?

Ошибки при запуске ./launcher logs app:

cd /var/discourse
./launcher logs app
Определена архитектура x86_64.
run-parts: выполняется /etc/runit/1.d/00-ensure-links
run-parts: выполняется /etc/runit/1.d/00-fix-var-logs
run-parts: выполняется /etc/runit/1.d/01-cleanup-web-pids
run-parts: выполняется /etc/runit/1.d/anacron
run-parts: выполняется /etc/runit/1.d/cleanup-pids
Очистка устаревших PID-файлов
run-parts: выполняется /etc/runit/1.d/copy-env
run-parts: выполняется /etc/runit/1.d/letsencrypt
[Вт фев  4 17:38:16 UTC 2025] Домены не изменены.
[Вт фев  4 17:38:16 UTC 2025] Пропущено, следующее время обновления: 2025-03-02T20:15:28Z
[Вт фев  4 17:38:16 UTC 2025] Добавьте '--force', чтобы принудительно обновить.
[Вт фев  4 17:38:17 UTC 2025] Установка ключа в: /shared/ssl/mydomain.com.key
[Вт фев  4 17:38:17 UTC 2025] Установка полного цепочка в: /shared/ssl/mydomain.com.cer
[Вт фев  4 17:38:17 UTC 2025] Выполнение команды перезагрузки: sv reload nginx
предупреждение: nginx: не удалось открыть supervise/ok: файл не существует
[Вт фев  4 17:38:17 UTC 2025] Ошибка перезагрузки для :
[Вт фев  4 17:38:17 UTC 2025] Домены не изменены.
[Вт фев  4 17:38:17 UTC 2025] Пропущено, следующее время обновления: 2025-03-02T20:15:33Z
[Вт фев  4 17:38:17 UTC 2025] Добавьте '--force', чтобы принудительно обновить.
[Вт фев  4 17:38:18 UTC 2025] Установка ключа в: /shared/ssl/mydomain.com_ecc.key
[Вт фев  4 17:38:18 UTC 2025] Установка полного цепочка в: /shared/ssl/mydomain.com_ecc.cer
[Вт фев  4 17:38:18 UTC 2025] Выполнение команды перезагрузки: sv reload nginx
предупреждение: nginx: не удалось открыть supervise/ok: файл не существует
[Вт фев  4 17:38:18 UTC 2025] Ошибка перезагрузки для :
Запущен runsvdir, PID 567
ok: run: redis: (pid 577) 0с
ok: run: postgres: (pid 581) 0с
nginx: [warn] дублирующееся расширение "wasm", тип контента: "application/wasm", предыдущий тип контента: "application/wasm" в /etc/nginx/conf.d/discourse.conf:4
pid супервизора: 575 pid unicorn: 607
Выключение
run-parts: выполняется /etc/runit/3.d/01-nginx
ok: down: nginx: 1с, обычно up
run-parts: выполняется /etc/runit/3.d/02-unicorn
(575) завершение работы
ok: down: unicorn: 0с, обычно up
run-parts: выполняется /etc/runit/3.d/10-redis
ok: down: redis: 1с, обычно up
run-parts: выполняется /etc/runit/3.d/99-postgres
ok: down: postgres: 0с, обычно up
ok: down: nginx: 5с, обычно up
ok: down: postgres: 1с, обычно up
ok: down: redis: 3с, обычно up
ok: down: cron: 0с, обычно up
ok: down: unicorn: 4с, обычно up
ok: down: rsyslog: 0с, обычно up
run-parts: выполняется /etc/runit/1.d/00-ensure-links
run-parts: выполняется /etc/runit/1.d/00-fix-var-logs
run-parts: выполняется /etc/runit/1.d/01-cleanup-web-pids
run-parts: выполняется /etc/runit/1.d/anacron
run-parts: выполняется /etc/runit/1.d/cleanup-pids
Очистка устаревших PID-файлов
run-parts: выполняется /etc/runit/1.d/copy-env
run-parts: выполняется /etc/runit/1.d/letsencrypt
[Вт фев  4 17:58:32 UTC 2025] Домены не изменены.
[Вт фев  4 17:58:32 UTC 2025] Пропущено, следующее время обновления: 2025-03-02T20:15:28Z
[Вт фев  4 17:58:32 UTC 2025] Добавьте '--force', чтобы принудительно обновить.
[Вт фев  4 17:58:32 UTC 2025] Установка ключа в: /shared/ssl/mydomain.com.key
[Вт фев  4 17:58:32 UTC 2025] Установка полного цепочка в: /shared/ssl/mydomain.com.cer
[Вт фев  4 17:58:32 UTC 2025] Выполнение команды перезагрузки: sv reload nginx
fail: nginx: runsv не запущен
[Вт фев  4 17:58:32 UTC 2025] Ошибка перезагрузки для :
[Вт фев  4 17:58:32 UTC 2025] Домены не изменены.
[Вт фев  4 17:58:32 UTC 2025] Пропущено, следующее время обновления: 2025-03-02T20:15:33Z
[Вт фев  4 17:58:32 UTC 2025] Добавьте '--force', чтобы принудительно обновить.
[Вт фев  4 17:58:32 UTC 2025] Установка ключа в: /shared/ssl/mydomain.com_ecc.key
[Вт фев  4 17:58:32 UTC 2025] Установка полного цепочка в: /shared/ssl/mydomain.com_ecc.cer
[Вт фев  4 17:58:32 UTC 2025] Выполнение команды перезагрузки: sv reload nginx
fail: nginx: runsv не запущен
[Вт фев  4 17:58:32 UTC 2025] Ошибка перезагрузки для :
Запущен runsvdir, PID 561
ok: run: redis: (pid 575) 0с
nginx: [warn] дублирующееся расширение "wasm", тип контента: "application/wasm", предыдущий тип контента: "application/wasm" в /etc/nginx/conf.d/discourse.conf:4
ok: run: postgres: (pid 580) 1с
pid супервизора: 570 pid unicorn: 601
Выключение
run-parts: выполняется /etc/runit/3.d/01-nginx
ok: down: nginx: 0с, обычно up
run-parts: выполняется /etc/runit/3.d/02-unicorn
(570) завершение работы
ok: down: unicorn: 1с, обычно up
run-parts: выполняется /etc/runit/3.d/10-redis
ok: down: redis: 0с, обычно up
run-parts: выполняется /etc/runit/3.d/99-postgres
ok: down: postgres: 0с, обычно up
ok: down: nginx: 3с, обычно up
ok: down: postgres: 1с, обычно up
ok: down: redis: 1с, обычно up
ok: down: cron: 0с, обычно up
ok: down: unicorn: 3с, обычно up
ok: down: rsyslog: 0с, обычно up
run-parts: выполняется /etc/runit/1.d/00-ensure-links
run-parts: выполняется /etc/runit/1.d/00-fix-var-logs
run-parts: выполняется /etc/runit/1.d/01-cleanup-web-pids
run-parts: выполняется /etc/runit/1.d/anacron
run-parts: выполняется /etc/runit/1.d/cleanup-pids
Очистка устаревших PID-файлов
run-parts: выполняется /etc/runit/1.d/copy-env
run-parts: выполняется /etc/runit/1.d/letsencrypt
[Вт фев  4 18:01:07 UTC 2025] Домены не изменены.
[Вт фев  4 18:01:07 UTC 2025] Пропущено, следующее время обновления: 2025-03-02T20:15:28Z
[Вт фев  4 18:01:07 UTC 2025] Добавьте '--force', чтобы принудительно обновить.
[Вт фев  4 18:01:07 UTC 2025] Установка ключа в: /shared/ssl/mydomain.com.key
[Вт фев  4 18:01:07 UTC 2025] Установка полного цепочка в: /shared/ssl/mydomain.com.cer
[Вт фев  4 18:01:07 UTC 2025] Выполнение команды перезагрузки: sv reload nginx
fail: nginx: runsv не запущен
[Вт фев  4 18:01:07 UTC 2025] Ошибка перезагрузки для :
[Вт фев  4 18:01:07 UTC 2025] Домены не изменены.
[Вт фев  4 18:01:07 UTC 2025] Пропущено, следующее время обновления: 2025-03-02T20:15:33Z
[Вт фев  4 18:01:07 UTC 2025] Добавьте '--force', чтобы принудительно обновить.
[Вт фев  4 18:01:07 UTC 2025] Установка ключа в: /shared/ssl/mydomain.com_ecc.key
[Вт фев  4 18:01:07 UTC 2025] Установка полного цепочка в: /shared/ssl/mydomain.com_ecc.cer
[Вт фев  4 18:01:07 UTC 2025] Выполнение команды перезагрузки: sv reload nginx
fail: nginx: runsv не запущен
[Вт фев  4 18:01:07 UTC 2025] Ошибка перезагрузки для :
Запущен runsvdir, PID 561
ok: run: redis: (pid 575) 0с
ok: run: postgres: (pid 576) 0с
nginx: [warn] дублирующееся расширение "wasm", тип контента: "application/wasm", предыдущий тип контента: "application/wasm" в /etc/nginx/conf.d/discourse.conf:4
pid супервизора: 570 pid unicorn: 601
(570) завершение работы
nginx: [warn] дублирующееся расширение "wasm", тип контента: "application/wasm", предыдущий тип контента: "application/wasm" в /etc/nginx/conf.d/discourse.conf:4

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

-------------------------------------------------------------------------------------
ОБНОВЛЕНИЕ POSTGRES ЗАВЕРШЕНО

Старая база данных 13-й версии хранится в /shared/postgres_data_old

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

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

Когда я запускаю команду
tail /var/discourse/shared/standalone/log/var-log/postgres/current
Вывод:

2025-02-04 18:11:50.943 UTC [573] LOG:  shutting down
2025-02-04 18:11:50.945 UTC [573] LOG:  checkpoint starting: shutdown immediate
2025-02-04 18:11:50.970 UTC [573] LOG:  checkpoint complete: wrote 139 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.017 s, sync=0.005 s, total=0.027 s; sync files=27, longest=0.002 s, average=0.001 s; distance=410 kB, estimate=410 kB
2025-02-04 18:11:51.034 UTC [547] LOG:  database system is shut down
2025-02-04 18:15:04.302 UTC [548] LOG:  starting PostgreSQL 15.10 (Debian 15.10-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2025-02-04 18:15:04.303 UTC [548] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2025-02-04 18:15:04.303 UTC [548] LOG:  listening on IPv6 address "::", port 5432
2025-02-04 18:15:04.305 UTC [548] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2025-02-04 18:15:04.313 UTC [575] LOG:  database system was shut down at 2025-02-04 18:14:37 UTC
2025-02-04 18:15:04.318 UTC [548] LOG:  database system is ready to accept connections

Также команда ./launcher logs app выдает следующий вывод:

x86_64 arch detected.
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[Tue Feb  4 06:15:03 PM UTC 2025] Domains not changed.
[Tue Feb  4 06:15:03 PM UTC 2025] Skip, Next renewal time is: 2025-02-09T00:30:10Z
[Tue Feb  4 06:15:03 PM UTC 2025] Add '--force' to force to renew.
[Tue Feb  4 06:15:03 PM UTC 2025] Installing key to: /shared/ssl/forum.myforum.com.key
[Tue Feb  4 06:15:03 PM UTC 2025] Installing full chain to: /shared/ssl/forum.myforum.com.cer
[Tue Feb  4 06:15:03 PM UTC 2025] Run reload cmd: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Tue Feb  4 06:15:03 PM UTC 2025] Reload error for :
[Tue Feb  4 06:15:03 PM UTC 2025] Domains not changed.
[Tue Feb  4 06:15:03 PM UTC 2025] Skip, Next renewal time is: 2025-02-09T00:30:15Z
[Tue Feb  4 06:15:03 PM UTC 2025] Add '--force' to force to renew.
[Tue Feb  4 06:15:04 PM UTC 2025] Installing key to: /shared/ssl/forum.myforum.com_ecc.key
[Tue Feb  4 06:15:04 PM UTC 2025] Installing full chain to: /shared/ssl/forum.myforum.com_ecc.cer
[Tue Feb  4 06:15:04 PM UTC 2025] Run reload cmd: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Tue Feb  4 06:15:04 PM UTC 2025] Reload error for :
Started runsvdir, PID is 537
ok: run: redis: (pid 552) 0s
ok: run: postgres: (pid 548) 0s
nginx: [warn] duplicate extension "wasm", content type: "application/wasm", previous content type: "application/wasm" in /etc/nginx/conf.d/discourse.conf:4
supervisor pid: 546 unicorn pid: 579

Это происходит и на моих двух самохостинговых сайтах после обновления через командную строку сегодня. Это очень стандартные установки без кастомизации или неофициальных плагинов, которые регулярно обновляются и обычно обновляются без проблем.

Сейчас я пробую предложения @mwaniki, указанные выше, и посмотрю, как это сработает, и отчитаюсь здесь.

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

./launcher logs app


WARNING: Docker version 20.10.12 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[Tue Feb  4 07:12:15 PM UTC 2025] Domains not changed.
[Tue Feb  4 07:12:15 PM UTC 2025] Skip, Next renewal time is: 2025-03-06T00:39:07Z
[Tue Feb  4 07:12:15 PM UTC 2025] Add '--force' to force to renew.
[Tue Feb  4 07:12:16 PM UTC 2025] Installing key to: /shared/ssl/forum.******.com.key
[Tue Feb  4 07:12:16 PM UTC 2025] Installing full chain to: /shared/ssl/forum.*****.com.cer
[Tue Feb  4 07:12:16 PM UTC 2025] Run reload cmd: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Tue Feb  4 07:12:16 PM UTC 2025] Reload error for :
[Tue Feb  4 07:12:16 PM UTC 2025] Domains not changed.
[Tue Feb  4 07:12:16 PM UTC 2025] Skip, Next renewal time is: 2025-03-06T00:39:11Z
[Tue Feb  4 07:12:16 PM UTC 2025] Add '--force' to force to renew.
[Tue Feb  4 07:12:16 PM UTC 2025] Installing key to: /shared/ssl/forum.*****.com_ecc.key
[Tue Feb  4 07:12:16 PM UTC 2025] Installing full chain to: /shared/ssl/forum.ü_ecc.cer
[Tue Feb  4 07:12:16 PM UTC 2025] Run reload cmd: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Tue Feb  4 07:12:16 PM UTC 2025] Reload error for :
Started runsvdir, PID is 535
ok: run: redis: (pid 545) 0s
nginx: [warn] duplicate extension "wasm", content type: "application/wasm", previous content type: "application/wasm" in /etc/nginx/conf.d/discourse.conf:4
ok: run: postgres: (pid 548) 0s
supervisor pid: 542 unicorn pid: 575

Я думаю, что эта проблема «сайт вообще не отвечает» не связана с обновлением PostgreSQL. Сейчас разбираюсь :eyes:

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

Приносим извинения за возникшие неудобства! Исправление уже применено, поэтому повторный запуск ./launcher rebuild app должен восстановить работу сервиса.

Пожалуйста, сообщите нам, если вы всё ещё столкнётесь с какими-либо проблемами после этого.

на работе :slight_smile:

yuppy работает, форум снова жив. Спасибо за быстрое решение. Вот почему мы любим Discourse :heart:

Спасибо за исправление! Я тоже потратил последние 2+ часа, пытаясь разобраться, что пошло не так при моей пересборке. Всё в порядке!

Мета-наблюдение: при поиске проблемы на этом форуме сортировка результатов по умолчанию «По релевантности» сыграла против меня. Логи ошибок, по которым я искал, были точно такими же, как здесь, но эта свежая тема появилась лишь на многих страницах ниже в списке результатов (вероятно, из-за её новизны). Поэтому я не нашёл эту тему, пока случайно не открыл главную страницу Meta, где она была в тренде. Думаю, это заметка для себя и других: при поиске проблем с будущей пересборкой стоит также проверять главную страницу или самые свежие результаты.

Отличный отзыв! Обратите внимание, что изначально этот разговор велся по адресу PostgreSQL 15 update, пока Дэвид не понял, что он не связан с обновлением PostgreSQL, и перенёс соответствующие сообщения в новую тему. Это произошло всего около часа назад, так что вы не могли бы найти его до этого момента!

Устранение неполадок при неудачных обновлениях известно своей сложностью — тем более что обновление Discourse обычно проходит настолько гладко, что большинство из нас, кто размещает Discourse самостоятельно, не приходится разбираться, как он работает «под капотом», и изучать шаги по устранению неполадок!

Огромная благодарность вам, @david, за то, что вы быстро разобрались в ситуации и нашли решение!

Я обновил Docker через мобильное приложение, а затем получил пугающее сообщение «обновите через консоль», которое обычно предвещает проблемы.

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

Мне удаётся восстановить работу через запуск приложения лаунчера, поэтому сайт функционирует.

Мне непонятно, связано ли это с ошибками PostgreSQL или где именно возникают проблемы.

Это говорит о том, что проблема не та же самая, что обсуждалась в этой теме.
В данном случае пересборка проходила успешно без ошибок, но сайт не загружался. Команда ./launcher start не помогла.

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

Мой сайт снова работает после восстановления. Спасибо! :+1:

В конечном счете это была проблема моего понимания прочитанного. Я могу подтвердить, что проблема заключалась в некорректном завершении работы базы данных Postgres. Как только я последовал правильным инструкциям, всё снова заработало. Спасибо всем! Приятно знать, что есть место, где, когда дела идут наперекосяк и я начинаю паниковать, здесь есть более спокойные головы, готовые помочь.

Спасибо!!!

У меня не работает

Тогда, должно быть, проблема в чём-то другом. Пожалуйста, создайте новую тему в Support с подробностями, и мы сделаем всё возможное, чтобы помочь.

Чтобы избежать путаницы, я закрою эту тему, так как данный конкретный вопрос решён.