Не удалось выполнить сборку из-за сбоя при обновлении PostgreSQL 12

Привет,

Я застрял на следующем. При выполнении команды ./discourse-setup у меня возникает следующая ошибка:

Не уверен, что понимаю сообщение. Мой сайт работает в режиме онлайн и использует SSL: https://cp2077.eu/.

Вот мой файл app.yml:

## это шаблон 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/sshd.template.yml"
  - "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
##  - "templates/web.ssl.template.yml"
##  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"
## какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал тот же порт, что и другой веб-сервер, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
#expose:
# - "2045:80"   # http
# - "1443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Установите db_shared_buffers максимум в 25% от общего объёма памяти.
  ## будет установлено автоматически при загрузке на основе обнаруженной RAM, либо вы можете переопределить
  db_shared_buffers: "1024MB"

  ## может улучшить производительность сортировки, но увеличивает использование памяти на соединение
  #db_work_mem: "40MB"

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Сколько одновременных веб-запросов поддерживается? Зависит от памяти и ядер CPU.
  ## будет установлено автоматически при загрузке на основе обнаруженных CPU, либо вы можете переопределить
  UNICORN_WORKERS: 4

  ## TODO: Доменное имя, на которое будет реагировать этот экземпляр Discourse
  ## Обязательно. Discourse не будет работать с чистым IP-адресом.
  DISCOURSE_HOSTNAME: cp2077.eu

  ## Раскомментируйте, если хотите, чтобы контейнер запускался с тем же
  ## именем хоста (-h опция), что указано выше (по умолчанию "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Список email-адресов через запятую, которые станут администраторами и разработчиками
  ## при первой регистрации, например 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'myemail@yandex.com'

  ## TODO: SMTP-сервер для проверки новых учётных записей и отправки уведомлений
  ## Адрес SMTP, имя пользователя и пароль обязательны
  ## ВНИМАНИЕ: символ '#' в пароле SMTP может вызвать проблемы!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: ******
  DISCOURSE_SMTP_PASSWORD: ******
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (опционально, по умолчанию true)

  ## Если вы добавили шаблон Lets Encrypt, раскомментируйте ниже, чтобы получить бесплатный SSL-сертификат
  LETSENCRYPT_ACCOUNT_EMAIL: myemail@yandex.com

  ## Адрес http или https CDN для этого экземпляра Discourse (настроен на извлечение)
  ## см. https://meta.discourse.org/t/14857 для деталей
  #DISCOURSE_CDN_URL: https://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

## Любые пользовательские команды для выполнения после сборки
run:
  - exec: echo "Начало пользовательских команд"
  ## Если вы хотите установить адрес email в поле 'От' для первой регистрации, раскомментируйте и измените:
  ## После получения первого письма о регистрации закомментируйте строку обратно. Выполнять нужно только один раз.
  ## - exec: rails r "SiteSetting.notification_email='beatlicious@yandex.com'"
  - exec: echo "Конец пользовательских команд"

Когда я выполняю команду ./launcher rebuild app, возникает следующая ошибка:

fatal: not a git repository (or any of the parent directories): .git
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Уже актуально.
I, [2020-07-11T01:41:07.468750 #1]  INFO -- : Загрузка --stdin
I, [2020-07-11T01:41:07.482322 #1]  INFO -- : 
I, [2020-07-11T01:41:07.482322 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T01:41:07.556578 #1]  INFO -- : Генерация локалей (это может занять время)...
Генерация завершена.

I, [2020-07-11T01:41:07.557419 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T01:41:07.562170 #1]  INFO -- :
I, [2020-07-11T01:41:07.562833 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T01:41:07.568449 #1]  INFO -- :
I, [2020-07-11T01:41:07.569233 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T01:41:07.576449 #1]  INFO -- :
I, [2020-07-11T01:41:07.577398 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T01:41:07.582907 #1]  INFO -- :
I, [2020-07-11T01:41:07.583623 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T01:41:07.592257 #1]  INFO -- :
I, [2020-07-11T01:41:07.593134 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres уже запущен, остановите контейнер ; exit 1
2020/07/11 01:41:07 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2020-07-11T01:41:07.602436 #1]  INFO -- :
I, [2020-07-11T01:41:07.602977 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T01:41:07.608907 #1]  INFO -- :
I, [2020-07-11T01:41:07.609638 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T01:41:07.619803 #1]  INFO -- :
I, [2020-07-11T01:41:07.622598 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T01:41:07.629638 #1]  INFO -- :
I, [2020-07-11T01:41:07.630522 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T01:41:07.639523 #1]  INFO -- :
I, [2020-07-11T01:41:07.651076 #1]  INFO -- : Файл > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T01:41:07.660620 #1]  INFO -- : Файл > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T01:41:07.668238 #1]  INFO -- : Файл > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T01:41:07.679949 #1]  INFO -- : Файл > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T01:41:07.680746 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: невозможно обратиться к '/var/lib/postgresql/10/main': No such file or directory
I, [2020-07-11T01:41:07.685326 #1]  INFO -- :


ОШИБКА
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main завершился с ошибкой, код возврата #<Process::Status: pid 42 exit 1>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec завершился с ошибкой с параметрами {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
d639e83f5451b5039efb2333f3eca1166d34ff6dc582ee29a0734a4274080fa2
** НЕ УДАЛОСЬ ЗАПУСТИТЬСЯ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.
atlas@sknet:~/www/cp2077$

Может кто-то подсказать, как установить и настроить Discourse? Я следовал руководству и застрял здесь. Спасибо

Вы следовали официальной стандартной инструкции по установке Discourse?

Не понимаю, как этот сайт мог получиться из файла app.yml, который вы предоставили.

Я бы создал новый Droplet и ещё раз следовал инструкциям.

Да, я следовал руководству, и, как вы заметили, я указал, что после выполнения команды возникают ошибки. Что вы имеете в виду под тем, что не видите, как сайт может быть связан с app.yml? Это одно и то же доменное имя хоста. Можете ли вы подробнее объяснить это?

Это означает, что у вас проблемы с DNS. Ваш домен указывает на другой IP-адрес.

Можете подтвердить, что это правильный IP-адрес?

Да, это IP моего веб-сайта. Я проверил свои DNS-настройки, всё настроено верно, иначе вы бы не увидели, что сайт работает.

Если вы сделаете ping моего веб-сайта, то увидите тот же IP-адрес.

Возможно, проблема в конфигурации вашего nginx (или другого сервера)? :roll_eyes:

Это работало раньше? С открытым портом?

Ниже приведена моя конфигурация nginx:

server {

    listen 80;
    listen [::]:80;
    server_name www.cp2077.eu;
    return 301 https://cp2077.eu$request_uri;
}

server {

    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.cp2077.eu;
    ssl_certificate /etc/letsencrypt/live/cp2077.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cp2077.eu/privkey.pem;
    return 301 https://cp2077.eu$request_uri;
}

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name cp2077.eu;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/cp2077.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cp2077.eu/privkey.pem;

    include /etc/nginx/snippets/ssl.conf;

    http2_idle_timeout 5m; # увеличено с 3m по умолчанию

    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;

    }


}

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

Неважно, что я меняю, как только я запускаю команду ./launcher rebuild app, она тоже выбрасывает ошибку

$  ./launcher rebuild app
fatal: не репозиторий git (или ни один из родительских каталогов): .git
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 app
app
(<unknown>): не найден ожидаемый ключ при разборе блочного отображения в строке 10, столбце 1 -e LANG=en_US.UTF-8
Ошибка синтаксиса YAML. Пожалуйста, проверьте ваши файлы конфигурации containers/*.yml.
$ ./launcher rebuild app
fatal: это не репозиторий git (или ни одна из родительских директорий): .git
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Уже актуально.
I, [2020-07-11T17:12:58.113241 #1]  INFO -- : Загрузка --stdin
I, [2020-07-11T17:12:58.134955 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T17:12:58.173307 #1]  INFO -- : Генерация локалей (это может занять некоторое время)...
Генерация завершена.

I, [2020-07-11T17:12:58.174132 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T17:12:58.178306 #1]  INFO -- :
I, [2020-07-11T17:12:58.178561 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T17:12:58.181917 #1]  INFO -- :
I, [2020-07-11T17:12:58.182391 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T17:12:58.185755 #1]  INFO -- :
I, [2020-07-11T17:12:58.186224 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T17:12:58.189632 #1]  INFO -- :
I, [2020-07-11T17:12:58.190021 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T17:12:58.192947 #1]  INFO -- :
I, [2020-07-11T17:12:58.193285 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres уже запущен, остановите контейнер ; exit 1
2020/07/11 17:12:58 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Нет такого файла или каталога
I, [2020-07-11T17:12:58.199237 #1]  INFO -- :
I, [2020-07-11T17:12:58.199649 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T17:12:58.203817 #1]  INFO -- :
I, [2020-07-11T17:12:58.204106 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T17:12:58.208244 #1]  INFO -- :
I, [2020-07-11T17:12:58.208674 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.213559 #1]  INFO -- :
I, [2020-07-11T17:12:58.215200 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.220491 #1]  INFO -- :
I, [2020-07-11T17:12:58.228222 #1]  INFO -- : Файл > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.234341 #1]  INFO -- : Файл > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.240097 #1]  INFO -- : Файл > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.245972 #1]  INFO -- : Файл > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.246504 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: невозможно получить доступ к '/var/lib/postgresql/10/main': Нет такого файла или каталога
I, [2020-07-11T17:12:58.249988 #1]  INFO -- :


ОШИБКА
--------------------
Pups::ExecError: команда chown -R root /var/lib/postgresql/10/main завершилась с ошибкой, код возврата #<Process::Status: pid 42 exit 1>
Место ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
Выполнение не удалось с параметрами {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
cf48a849a885246d6bf9b1b444e679ff6c71dd2fa3b298d42fa2cc67694fc9b5
** НЕ УДАЛОСЬ ЗАПУСТИТЬСЯ ** пожалуйста, прокрутите вверх и найдите сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.

В вашем файле yml ошибка форматирования.

Я уже вставил сюда файл yml, я не вижу там никаких ошибок форматирования, а вы?

Да, отступы там неверные.

Файл app.yml берётся из шаблонов, и строки, которые вы мне предлагаете, никогда не затрагивались, поэтому я не понимаю, как они могут быть некорректными, если именно они были предоставлены вами.

Ладно, в любом случае у вас есть следующие шаги, так что рекомендую их выполнить :wink:

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

Вижу, что вы уже внесли изменения в app.yml, так почему бы просто не выполнить ./launcher rebuild app?

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

$ ./launcher rebuild app
fatal: не репозиторий git (или ни одна из родительских директорий): .git
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Уже актуально.
I, [2020-07-11T17:12:58.113241 #1]  INFO -- : Загрузка --stdin
I, [2020-07-11T17:12:58.134955 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T17:12:58.173307 #1]  INFO -- : Генерация локалей (это может занять некоторое время)...
Генерация завершена.

I, [2020-07-11T17:12:58.174132 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T17:12:58.178306 #1]  INFO -- :
I, [2020-07-11T17:12:58.178561 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T17:12:58.181917 #1]  INFO -- :
I, [2020-07-11T17:12:58.182391 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T17:12:58.185755 #1]  INFO -- :
I, [2020-07-11T17:12:58.186224 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T17:12:58.189632 #1]  INFO -- :
I, [2020-07-11T17:12:58.190021 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T17:12:58.192947 #1]  INFO -- :
I, [2020-07-11T17:12:58.193285 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres уже запущен, остановите контейнер ; exit 1
2020/07/11 17:12:58 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Нет такого файла или директории
I, [2020-07-11T17:12:58.199237 #1]  INFO -- :
I, [2020-07-11T17:12:58.199649 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T17:12:58.203817 #1]  INFO -- :
I, [2020-07-11T17:12:58.204106 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T17:12:58.208244 #1]  INFO -- :
I, [2020-07-11T17:12:58.208674 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.213559 #1]  INFO -- :
I, [2020-07-11T17:12:58.215200 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.220491 #1]  INFO -- :
I, [2020-07-11T17:12:58.228222 #1]  INFO -- : Файл > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.234341 #1]  INFO -- : Файл > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.240097 #1]  INFO -- : Файл > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.245972 #1]  INFO -- : Файл > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.246504 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: невозможно обратиться к '/var/lib/postgresql/10/main': Нет такого файла или директории
I, [2020-07-11T17:12:58.249988 #1]  INFO -- :


ОШИБКА
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main завершился с ошибкой с кодом возврата #<Process::Status: pid 42 exit 1>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec завершился с ошибкой с параметрами {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
cf48a849a885246d6bf9b1b444e679ff6c71dd2fa3b298d42fa2cc67694fc9b5
** НЕ УДАЛОСЬ ЗАПУСТИТЬСЯ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть больше одной.
./discourse-doctor может помочь диагностировать проблему.

Почему вы используете прокси для вашего сайта Discourse, а не поддомен?

Я не совсем понимаю. Я хочу, чтобы мой форум Discourse находился на основном домене, а не как поддомен.

Если вы устанавливаете это впервые, настоятельно рекомендуется сначала настроить систему в соответствии с официальным руководством, прежде чем вносить изменения в конфигурацию. На meta уже подробно описано, что использование подпапки не даёт никаких преимуществ; это считается продвинутой темой, которая может нарушить работу в любой момент при обновлении.

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