Ошибка при обновлении Discourse

Сегодня я попытался обновить Discourse до последней версии. Обновление не удалось. Вот лог:

********************************************************
*** Пожалуйста, будьте терпеливы, следующие шаги могут занять время ***
********************************************************
Перезапуск Unicorn для освобождения памяти
Перезапуск unicorn pid: 548
Ожидание перезагрузки Unicorn.
Ожидание перезагрузки Unicorn..
Ожидание перезагрузки Unicorn...
Ожидание перезагрузки Unicorn....
Ожидание перезагрузки Unicorn.....
Ожидание перезагрузки Unicorn......
Ожидание перезагрузки Unicorn.......
Ожидание перезагрузки Unicorn........
Ожидание перезагрузки Unicorn.........
Остановка 3 воркеров Unicorn для освобождения памяти
Остановка очереди задач для освобождения памяти, мастер pid: 2943724
$ cd /var/www/discourse && git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse && git reset --hard HEAD@{upstream}
HEAD теперь находится в be4f1e335 PERF: Кэширование `hostname` в `DiscourseLogstashLogger` (#27442)
$ bundle install --retry 3 --jobs 4
Пакет завершён! 141 зависимость из Gemfile, 174 gem установлены.
Гемы в группах 'development' и 'test' не были установлены.
Установленные гемы находятся в `./vendor/bundle`
1 установленный gem, от которого вы напрямую зависите, ищет финансирование.
Запустите `bundle fund` для получения деталей
$ yarn install
yarn install v1.22.19
[1/5] Проверка package.json...
[2/5] Разрешение пакетов...
Предупреждение: поле разрешения "unset-value@2.0.1" несовместимо с запрошенной версией "unset-value@^1.0.0"
[3/5] Получение пакетов...
Ошибка: ember-template-lint@6.0.0: Версия "node" несовместима с этим модулем. Ожидалась версия "^18.18.0 || ^20.9.0 || >=21.1.0". Получена "18.16.0"
Ошибка: найден несовместимый модуль.
Информация: посетите https://yarnpkg.com/en/docs/cli/install для документации по этой команде.
Docker Manager: НЕ УДАЛОСЬ ОБНОВИТЬ
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands.rb:18:in `<main>'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Запуск 3 воркеров Unicorn, которые были остановлены изначально

Есть какие-то идеи?

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

./launcher rebuild app

Привет, Джей,

Я сделал это. Также попробовал запустить ./launcher start app.

Но получил другую ошибку. На этот раз это ошибка «Bad Gateway» от Nginx. Я заметил, что Discourse жаловался на нехватку места на диске, но я освободил немного пространства.

Прикрепил некоторую информацию.

Вы запускали сервис или выполняли пересборку после освобождения места?

Ошибка «Bad Gateway» может возникать в течение минуты или нескольких минут после запуска контейнера. Однако возможно, что вы перенесли базу данных, и старый контейнер больше не будет работать.

Итак, каждый раз, когда я выполняю ./launcher rebuild app, ./launcher start app или ./launcher restart app, меня всегда встречает надоедливый вопрос об освобождении места. Я нажимаю Y каждый раз.

Хорошо, я вручную освободил немного места. Оказалось, что в директории snap есть ненужные файлы.

Затем я снова запустил процесс ./launcher restart app. На этот раз ошибка исчезла.

Но у меня всё ещё появляется ошибка 502 Bad Gateway.

Если проблема сохраняется через несколько минут после запуска сайта, проверьте файлы /var/discourse/shared/standalone/logs/rails/production.log и .../logs/var-log/nginx/*.

Итак, проблема в PostgreSQL. Как это исправить? Я имею в виду, что мы же не запускаем сервер PostgreSQL вручную, верно?

Файлы внутри postgres_data принадлежат моему пользователю на сервере, а группа — crontab.

Почему?

Разве это не стандартная установка?

Я использовал стандартную установку.

Затем процесс обновления (через панель администратора) не удался. Поэтому мне пришлось подключиться к серверу по SSH и освободить место. Когда я выполнил ./launcher rebuild (или restart) app, процесс не выдал ошибку, но я получил ошибку 502 Bad Gateway.

Так, кому должен принадлежать postgres_data? Root?

Все это должно быть установлено от имени root.

Я выполнил ./launcher rebuild (или restart) app от имени root. Сначала я ввёл sudo su. В любом случае, я не думаю, что можно запустить launcher от обычного пользователя (Docker бы возмутился).

Отлично, я наконец-то решил эти проблемы.

  1. Я увеличил размер хранилища, чтобы освободить место для Discord. Я создал снимок виртуальной машины Discord в GCP и восстановил её с большим объемом хранилища.
  2. Я изменил содержимое файла containers/app.yml:

Было

templates:
  - "templates/postgres.template.yml"

Стало

templates:
  - "templates/postgres.13.template.yml"

Затем я выполнил ./launcher rebuild app, и теперь никаких проблем нет.

Спасибо!