Сайт недоступен после неудачного обновления: отказано в разрешении на создание расширения "unaccent"

Обновление через веб-интерфейс не удалось из-за следующей ошибки:

INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
discourse@discourse ERROR: permission denied to create extension "unaccent"
discourse@discourse HINT: Must be superuser to create this extension.
discourse@discourse STATEMENT: CREATE EXTENSION IF NOT EXISTS unaccent
rake aborted!
PG::InsufficientPrivilege: ERROR: permission denied to create extension "unaccent"
HINT: Must be superuser to create this extension.

Давным-давно я редактировал файл app.yml, что, возможно, и стало причиной проблемы:

templates:
  # закомментировано для решения проблемы с местом на диске
  #- "templates/postgres.template.yml"
  - "templates/postgres.10.template.yml"

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

Я оставил всё как было и попытался откатиться к версии Discourse, которая у меня была до появления ошибки обновления, изменив версию в app.yml на v2.8.0beta8, но это также не сработало:

Pups::ExecError: cd /var/www/discourse && git checkout v2.8.0.beta8 failed with return #<Process::Status: pid 1843 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"code", "cmd"=>["git reset --hard", "git clean -f", "git remote set-branches --add origin main", "git remote set-branches origin $version", "git fetch --depth 1 origin $version", "git checkout $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "find public/plugins/ -maxdepth 1 -xtype l -delete"]}
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.
5b66f706de1a3ce8d78f0ed886669095c1a356efd916cb2ae8b02171367b0a01

Похоже, мне нужно либо обновить PostgreSQL с версии 10, либо откатить Discourse до версии 2.8.0beta8, но оба варианта не удаются. Что мне делать?

Как был установлен этот сервер?

Вносили ли вы какие-либо изменения в конфигурацию Postgres?

Если вы всё ещё используете Postgres 10, попробуйте добавить это после секции hooks: в вашем файле app.yml:


after_postgres:
    - exec: su postgres -c 'psql discourse -c "create extension if not exists unaccent;"'

Мы отказались от PostgreSQL 10 ещё в 2020 году. Настоятельно рекомендую вам обновиться как можно скорее.

Есть ли какие-либо указания о том, как это сделать? Есть ли что-то еще, кроме отмены этой строки в app.yml?

Ссылка в моём посте ведёт к руководству по этому вопросу, однако мы также перешли на обновление PostgreSQL 13, поэтому следуйте новому руководству.

Для меня это помогло, после чего я смог обновить PostgreSQL, следуя инструкциям от @Falco.