Проблема при обновлении форума Discourse


Всем привет!
Я пытался обновить форум Discourse, используя ссылку, размещённую в панели администратора, и получил эту ошибку. Весь форум исчез. Что мне теперь делать, чтобы сбросить обновление? Буду очень благодарен за помощь. :sob:

На самом деле это означает, что ваш форум обновляется, если вы не прервете обновление до его завершения.

Попробуйте посетить страницу вашего форума https://yoursite.com/latest.json. Если она возвращает какие-либо данные, подождите 10 минут и проверьте, решится ли проблема сама собой.

Спасибо за ответ. Я попробовал метод, который вы предложили, но получил ошибку 502 Bad Gateway от nginx.

Похоже, вам, возможно, придется выполнить ./launcher rebuild app

Я выполнил команду ./launcher rebuild app и получил следующие сообщения об ошибках:

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development' failed with return #<Process::Status: pid 340 exit 5>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'"]}

6e9e60bd6b6113cdcb001127fd2a24fe86f2a1658bf24500e5e2b720fd793510

** 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.

Я прокрутил вверх и нашёл возможные записи в логах об ошибках:

1)200:M 25 Jun 2023 16:00:16.252 # Failed listening on port 6379 (TCP), aborting.

2)[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag

[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag

3)Bundler::PathError: The path `/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/sprockets-f4d3dae71ef2` does not exist.

4)Bundler::InstallError: sass-embedded-1.63.6-x86_64-linux requires rubygems version >= 3.3.22, which is incompatible with the current version, 3.2.18

Недавно кто-то другой столкнулся с похожей проблемой, если это поможет?

Спасибо большое за ответ, но, кажется, это не та же проблема, мой сервер находится в Германии. Я использую образ Docker для Discourse на своём сервере. Что мне делать, если команда ./launcher rebuild app не работает?

Выглядит похоже на
Сбой сборки из-за несовместимости Ruby-гемов

Спасибо за помощь! Да, это выглядит похоже, и я попробовал:

my server:/var/discourse**$ git pull

fatal: Не является репозиторием Git: ../.git/modules/discourse_docker

Нужно ли что-то сделать перед запуском git pull? Я выполнял это в директории /var/discourse на моём сервере.

Похоже, у вас нестандартная конфигурация — это стандартная установка?

Я прочитал документацию последнего программиста для меня, и там сказано, что поскольку многие веб-сервисы работают за nginx, а Discourse также требует хостинга за nginx. Стандартная установка не подходит для моей ситуации.

А вот как он описал это в документации и что сделал:

Discourse работает в контейнере Docker. Однако для него требуется особая конфигурация, не через docker-compose.yml или файл .conf.

Репозиторий discourse-project на GitHub, необходимый для настройки и сборки Docker-образа, можно найти здесь. Игнорируйте предоставленную ими программу “discourse-setup” — она здесь не сработает. Нам нужно настроить приложение самостоятельно.

  1. Клонируйте discourse_docker в /var/discourse: git clone https://github.com/discourse/discourse_docker.git /var/discourse
  2. Перейдите в папку и используйте предоставленный образец конфигурации: cd /var/discourse && cp samples/standalone.yml containers/app.yml
  3. Затем отредактируйте файл containers/app.yml (например, с помощью sudo nano)
  • Внесены изменения в секцию хостинга, настройки SMTP для почты и — важно — секцию expose, чтобы наружу был открыт только неиспользуемый порт
  • Для запуска Discourse по пути, например, “/forum”, потребовались дополнительные изменения, как описано здесь
  • Также возникают проблемы с аутентификацией по электронной почте:
    • Почтовый сервер, отправляющий письма, здесь — “почта сервера”. Однако Discourse ожидает, что почта будет иметь тот же домен, что и его хост, а именно “почта сервера”
    • Также используйте “DISCOURSE_SMTP_AUTHENTICATION: login” как ещё одну переменную окружения. Почему всегда так… . . .
  1. Затем соберите приложение из директории /var/discourse с помощью команды sudo ./launcher bootstrap app. Это займёт довольно много времени
  2. После этого вы сможете запустить контейнер Discourse командой sudo ./launcher start app.

Это хорошие заметки.

Команда git pull; ./launcher rebuild app должна сработать.

С какой версии вы обновляетесь?

Устарела ли версия ОС? (cat /etc/issue)

Заполнен ли диск? (df -h)

Спасибо за ваш ответ! Версия, с которой я обновляюсь, — 2.8.0.beta6, а последнее обновление было 28.09.2021.

После выполнения команды cat /etc/issue я получил:
Debian GNU/Linux 9 \n \l

Ниже приведена информация согласно ./discourse-doctor:

==================== ИНФОРМАЦИЯ О ПАМЯТИ ====================
RAM (МБ): 4050

              total        used        free      shared  buff/cache   available
Mem:           3955         427        1152          63        2375        3182
Swap:             0           0           0

==================== ПРОВЕРКА СВОБОДНОГО МЕСТА НА ДИСКЕ ====================
---------- Свободное место на диске ОС ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        63G   27G   34G  45% /

==================== ИНФОРМАЦИЯ О ДИСКЕ ====================
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc0b6220c

Device     Boot Start       End   Sectors Size Id Type
/dev/sda1        2048 134217727 134215680  64G 83 Linux

Вы можете добавить swap.

Также см. обновление PostgreSQL 13.

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

См. также Debian | endoflife.date

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

Привет, Jammy. После нескольких неудачных попыток установки я выяснил, что проблема связана с ограничением памяти сервера и сетью. Я рекомендую использовать сервер с 4 ГБ оперативной памяти и обеспечить нормальный доступ к GitHub и Ruby.

Эта ошибка меня беспокоит — вы всё ещё её видите? Docker-контейнер теперь должен запускаться с версией 3.2.0.

Однако, если /var/discourse не является git-репозиторием, значит, что-то было сделано иначе, чем указано в инструкциях. Это препятствует обновлению и вызывает несовпадение версий Ruby. У меня:

/var/discourse# git status
На ветке main
Ваша ветка актуальна относительно 'origin/main'.

Также мы видим директорию .git:

# ls -a /var/discourse/
.     .github     README.md  cids              discourse-setup  launcher     scripts    tests
..    .gitignore  bin        containers        image            rebuild.log  shared
.git  LICENSE     c          discourse-doctor  index.html       samples      templates

Редактирование: но это правда, если у вас слишком старая ОС, вам предстоит проделать определённую работу: установить Discourse на новую ОС, восстановить резервную копию, а также выполнить все дополнительные действия, которые могут потребоваться в вашей конкретной ситуации.

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

У меня аналогичная проблема с Ruby Gems и т.д.
Это была чистая установка на новый сервер.

Спасибо всем за помощь! Я попробую ваши предложения по очереди, чтобы решить проблему. Если будут какие-либо отзывы (хорошие или плохие), я опубликую их обратно на форуме. Еще раз спасибо!

Я успешно установил новую версию Discourse. Я просто следовал инструкциям в документе выше, и у меня всё получилось. Но теперь у меня возникли проблемы с восстановлением из резервной копии.
Я попробовал восстановить резервную копию из командной строки, но получил следующее:

root@my_server:/var/www/discourse# discourse restore my_server-2023-06-20-033008-v20210922064213.tar.gz
Starting restore: my_server-2023-06-20-033008-v20210922064213.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-06-29-113408 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
EXCEPTION: /var/www/discourse/lib/discourse.rb:137:in `exec': Failed to decompress archive.

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
/var/www/discourse/lib/discourse.rb:171:in `execute_command'
/var/www/discourse/lib/discourse.rb:137:in `exec'
/var/www/discourse/lib/discourse.rb:33:in `execute_command'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:78:in `decompress_archive'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:23:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2023-06-29-113408' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

Что мне делать теперь?

Что-то не так с вашим файлом резервной копии. Возможно, он просто обрезан.