У меня наблюдаются симптомы, описанные по адресу Error Updating from 3.4.0.beta3-dev to 3.4.0.beta3. Единственное отличие — в ошибке.
Я не могу процитировать ваше изображение.
Но похоже, вам нужно удалить старую директорию postgres_data_old. Если у вас есть место и вы хотите перестраховаться, можете переименовать её.
Не могу понять, как скопировать вывод экрана на веб-английском
Это ключевая часть моего сообщения.
Сначала, возможно, стоит проверить, что она действительно старая:
ls -l /var/discourse/shared/standalone/
и убедиться, что эта резервная директория не имеет сегодняшней даты.
Если у вас достаточно места на диске, можно сделать примерно так:
cd /var/discourse
cd shared/standalone
mv postgres_data_old postgres_data_delete_me
а затем попробовать снова.
Не удалось.
Кажется, я дублирую Upgrade failed spectacularily
Можете ли вы поделиться содержимым вашего файла app.yml? Перед публикацией удалите любую конфиденциальную информацию.
от root@localhost: /var/discourse/containers
## Это шаблон контейнера Docker Discourse «все-в-одном» для автономной работы
##
## После внесения изменений в этот файл ВЫ ДОЛЖНЫ выполнить пересборку:
## /var/discourse/launcher rebuild app
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## при необходимости проверяйте этот файл на сайте http://www.yamllint.com/
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## Какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал один порт с другим веб-сервером, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для подробностей
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Установите db_shared_buffers максимум на 25% от общего объема памяти.
## будет установлено автоматически при загрузке в зависимости от обнаруженного объема ОЗУ, либо вы можете переопределить
db_shared_buffers: "256MB"
## может улучшить производительность сортировки, но увеличивает использование памяти на соединение
#db_work_mem: "40MB"
## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Сколько одновременных веб-запросов поддерживается? Зависит от объема памяти и количества ядер процессора.
## будет установлено автоматически при загрузке в зависимости от обнаруженных процессоров, либо вы можете переопределить
UNICORN_WORKERS: 4
## TODO: Доменное имя, на которое будет реагировать этот экземпляр Discourse
DISCOURSE_HOSTNAME: <mydomain>
## Раскомментируйте, если хотите, чтобы контейнер запускался с тем же
## именем хоста (опция -h), что указано выше (по умолчанию "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Список адресов электронной почты через запятую, которые станут администраторами и разработчиками
## при первой регистрации, например 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: <myemail>
## TODO: SMTP-сервер, используемый для проверки новых учетных записей и отправки уведомлений
DISCOURSE_SMTP_ADDRESS: <mymailorg>
DISCOURSE_SMTP_PORT: <myport>
DISCOURSE_SMTP_USER_NAME: <mysmpremail>
DISCOURSE_SMTP_PASSWORD: <mypassword>
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (опционально, по умолчанию true)
## Если вы добавили шаблон Lets Encrypt, раскомментируйте ниже, чтобы получить бесплатный SSL-сертификат
LETSENCRYPT_ACCOUNT_EMAIL: <myemail>
## Адрес CDN для этого экземпляра Discourse (настроен на извлечение)
## см. https://meta.discourse.org/t/14857 для подробностей
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Контейнер Docker не имеет состояния; все данные хранятся в /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Плагины размещаются здесь
## см. https://meta.discourse.org/t/19157 для подробностей
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-math.git
## Любые пользовательские команды для запуска после сборки
run:
- exec: echo "Начало пользовательских команд"
## Если вы хотите установить адрес электронной почты в поле 'От' для первой регистрации, раскомментируйте и измените:
## После получения первого письма о регистрации закомментируйте строку обратно. Она должна выполниться только один раз.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Конец пользовательских команд"
Не могли бы вы подтвердить версию вашего Docker? Если у вас установлена версия старше рекомендуемой 24.0.7, мы рекомендуем обновить Docker и повторить попытку.
В отдельной теме сообщалось о схожих проблемах, и похоже, что обновление Docker решило их.
Версия Docker 20.10.7, сборка f0df350
cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.7 LTS (Xenial Xerus)"
Похоже, у вас возникла проблема с Docker, аналогичная той, о которой сообщалось в другой теме.
Я рекомендую обновить Ubuntu и Docker до более новых версий, а затем попытаться собрать заново.
Если ваш старый контейнер app всё ещё существует и вы не изменяли существующие файлы данных в shared/standalone/postgres_data, вы можете попробовать запустить ./launcher start app, чтобы запустить сайт на старом контейнере на время.
Это будет намного проще, если вы создадите новую виртуальную машину с актуальной операционной системой. Версия 18.04 уже не поддерживается, а поддержка 20.04 закончится в апреле.
Если у вас есть актуальная резервная копия, создайте новый сервер и восстановите из неё, полностью избежав проблем с обновлением PostgreSQL.
Для Discourse не требуется установка PostgreSQL непосредственно в операционную систему. Это ещё одна причина начать с чистой ОС.
Спасибо, Джей.
Мне удалось восстановить резервную копию с одного Linode на другой (linode2).
Теперь мне нужно открыть Discourse на linode2, чтобы он мог отправить мне резервную копию по электронной почте.
Я создал новую настройку DNS для linode2, но при переходе по адресу получаю ошибку 502 Bad Gateway.
Возможно, нужно немного подождать?
Странно, что discbak.softwarebydesign.com.au (linode2) в данный момент перенаправляет на discourse.softwarebydesign.com.au (на исходном Linode).
Вы можете скопировать резервную копию с помощью scp/rsync. Это проще и быстрее (если вы не знаете, что это такое).
Вам действительно стоит создать новую виртуальную машину с новой ОС (не резервную копию сервера с устаревшей ОС) и перенести данные на неё, как описано в статье Перенос сайта Discourse на другой VPS с помощью rsync. Тот сервер, который я только что скопировал, тоже имел проблемы с правами владельца. У вас, скорее всего, возникнут они же.
Если discbak использует тот же образ, что и другой сервер, я бы ожидал ошибки сертификата (если только вы не заходили по http://), после чего перенаправление должно произойти на то, что указано в HOSTNAME.
Можно честно сказать, что я не совсем понимаю, что делаю.
Я создал новый VPS с Ubuntu 24.0.1 LTS и дошёл до инструкции:
rsync -rvz example.com:/var/discourse /var
Из-за неудачного обновления example.com возвращает ошибку 502 Bad Gateway.
Я сейчас на этапе обучения и пытаюсь разобраться, как всё же предоставить доступ.


