论坛在从 2.4.0 升级后崩溃

嗨!今天我按常规方式升级了论坛(管理 > 仪表板 > 升级),从 2.4.0 版本开始。

之后,回到升级视图以继续升级其余插件时,出现了以下消息:

您正在运行旧版本的 Discourse 镜像。
在运行最新镜像之前,Web UI 中的升级功能将被禁用。

为此,请使用 SSH 登录服务器并运行:

    cd /var/discourse
    git pull
    ./launcher rebuild app

到目前为止一切正常。我打开终端,连接到虚拟机,并像往常一样执行了上述步骤,但现在却遇到了一个从未见过的错误。以下是日志:

root@foro:/var/discourse# ./launcher rebuild app
确保 launcher 已是最新
获取 origin
launcher 已是最新
cd /pups && git pull && /pups/bin/pups --stdin
已是最新。
I, [2020-07-03T17:40:38.599175 #1]  INFO -- : 加载 --stdin
I, [2020-07-03T17:40:38.608573 #1]  INFO -- : > apt-get remove -y postgresql-10 postgresql-client-10 postgresql-contrib-10
I, [2020-07-03T17:40:40.109309 #1]  INFO -- : 正在读取软件包列表...
正在构建依赖关系树...
正在读取状态信息...
软件包 'postgresql-10' 未安装,因此未移除
软件包 'postgresql-client-10' 未安装,因此未移除
0 个升级,0 个新安装,0 个移除,0 个未升级。

I, [2020-07-03T17:40:40.110000 #1]  INFO -- : > apt-get update && apt-get install -y postgresql-9.5 postgresql-client-9.5 postgresql-contrib-9.5
debconf:由于未安装 apt-utils,延迟软件包配置
I, [2020-07-03T17:40:49.742789 #1]  INFO -- : 获取:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
获取:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [84.6 kB]
命中:3 http://deb.debian.org/debian buster InRelease
获取:4 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
获取:5 https://deb.nodesource.com/node_10.x buster InRelease [4,584 B]
获取:6 http://security.debian.org/debian-security buster/updates/main amd64 Packages [208 kB]
获取:7 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [177 kB]
获取:8 http://deb.debian.org/debian buster-updates/main amd64 Packages.diff/Index [3,688 B]
获取:9 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-04-2016.16.pdiff [1,101 B]
获取:10 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-07-1403.53.pdiff [439 B]
获取:11 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-13-2000.26.pdiff [552 B]
获取:11 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-13-2000.26.pdiff [552 B]
获取:12 https://deb.nodesource.com/node_10.x buster/main amd64 Packages [768 B]
已获取 599 kB,耗时 1 秒(686 kB/s)
正在读取软件包列表...
正在读取软件包列表...
正在构建依赖关系树...
正在读取状态信息...
建议的软件包:
  postgresql-doc-9.5 libdbd-pg-perl
将安装以下新软件包:
  postgresql-9.5 postgresql-client-9.5 postgresql-contrib-9.5
0 个升级,3 个新安装,0 个移除,13 个未升级。
需要下载 5,700 kB 的归档文件。
此操作后将额外占用 27.2 MB 的磁盘空间。
获取:1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-9.5 amd64 9.5.22-1.pgdg100+1 [1,252 kB]
获取:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-9.5 amd64 9.5.22-1.pgdg100+1 [3,985 kB]
获取:3 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-contrib-9.5 amd64 9.5.22-1.pgdg100+1 [463 kB]
已获取 5,700 kB,耗时 0 秒(27.1 MB/s)
选择此前未选中的软件包 postgresql-client-9.5。
(正在读取数据库 ... 当前已安装 43929 个文件和目录。)
准备解包 .../postgresql-client-9.5_9.5.22-1.pgdg100+1_amd64.deb ...
正在解包 postgresql-client-9.5 (9.5.22-1.pgdg100+1) ...
选择此前未选中的软件包 postgresql-9.5。
准备解包 .../postgresql-9.5_9.5.22-1.pgdg100+1_amd64.deb ...
正在解包 postgresql-9.5 (9.5.22-1.pgdg100+1) ...
选择此前未选中的软件包 postgresql-contrib-9.5。
准备解包 .../postgresql-contrib-9.5_9.5.22-1.pgdg100+1_amd64.deb ...
正在解包 postgresql-contrib-9.5 (9.5.22-1.pgdg100+1) ...
正在设置 postgresql-client-9.5 (9.5.22-1.pgdg100+1) ...
update-alternatives:警告:强制重新安装替代项 /usr/share/postgresql/12/man/man1/psql.1.gz,因为链接组 psql.1.gz 已损坏
正在设置 postgresql-9.5 (9.5.22-1.pgdg100+1) ...
正在创建新的 PostgreSQL 集群 9.5/main ...
/usr/lib/postgresql/9.5/bin/initdb -D /var/lib/postgresql/9.5/main --auth-local peer --auth-host md5
此数据库系统的文件将由用户 "postgres" 拥有。
该用户也必须拥有服务器进程。

数据库集群将使用区域设置 "C.UTF-8" 进行初始化。
默认数据库编码已相应设置为 "UTF8"。
默认文本搜索配置将设置为 "english"。

数据页校验和已禁用。

修复现有目录 /var/lib/postgresql/9.5/main 的权限 ... 完成
创建子目录 ... 完成
选择默认 max_connections ... 100
选择默认 shared_buffers ... 128MB
选择默认时区 ... Etc/UTC
选择动态共享内存实现 ... posix
创建配置文件 ... 完成
在 /var/lib/postgresql/9.5/main/base/1 中创建 template1 数据库 ... 完成
初始化 pg_authid ... 完成
初始化依赖项 ... 完成
创建系统视图 ... 完成
加载系统对象描述 ... 完成
创建排序规则 ... 完成
创建转换 ... 完成
创建词典 ... 完成
设置内置对象的权限 ... 完成
创建信息架构 ... 完成
加载 PL/pgSQL 服务器端语言 ... 完成
对数据库 template1 进行 vacuum ... 完成
将 template1 复制到 template0 ... 完成
将 template1 复制到 postgres ... 完成
将数据同步到磁盘 ... 完成

成功。您现在可以使用以下命令启动数据库服务器:

    /usr/lib/postgresql/9.5/bin/pg_ctl -D /var/lib/postgresql/9.5/main -l logfile start

版本 集群  端口 状态  所有者    数据目录                          日志文件
9.5 main    5433 关闭   postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
update-alternatives:警告:强制重新安装替代项 /usr/share/postgresql/12/man/man1/postmaster.1.gz,因为链接组 postmaster.1.gz 已损坏
invoke-rc.d:无法确定当前运行级别
invoke-rc.d:policy-rc.d 拒绝了启动执行。
正在设置 postgresql-contrib-9.5 (9.5.22-1.pgdg100+1) ...
正在处理 postgresql-common (213.pgdg100+1) 的触发器 ...
从已安装的 myspell/hunspell 软件包构建 PostgreSQL 词典...
正在删除过时的词典文件:

I, [2020-07-03T17:40:49.743707 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-03T17:40:49.747572 #1]  INFO -- :
I, [2020-07-03T17:40:49.748032 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-03T17:40:49.750621 #1]  INFO -- :
I, [2020-07-03T17:40:49.751119 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-03T17:40:49.753527 #1]  INFO -- :
I, [2020-07-03T17:40:49.753870 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-03T17:40:49.756586 #1]  INFO -- :
I, [2020-07-03T17:40:49.756966 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-03T17:40:49.759345 #1]  INFO -- :
I, [2020-07-03T17:40:49.759525 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/03 17:40:49 socat[1570] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): 没有那个文件或目录
I, [2020-07-03T17:40:49.764619 #1]  INFO -- :
I, [2020-07-03T17:40:49.764790 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-03T17:40:49.768012 #1]  INFO -- :
I, [2020-07-03T17:40:49.768201 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-03T17:40:49.771186 #1]  INFO -- :
I, [2020-07-03T17:40:49.771329 #1]  INFO -- : > mkdir -p /shared/postgres_run/9.5-main.pg_stat_tmp
I, [2020-07-03T17:40:49.773782 #1]  INFO -- :
I, [2020-07-03T17:40:49.774066 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/9.5-main.pg_stat_tmp
I, [2020-07-03T17:40:49.776490 #1]  INFO -- :
I, [2020-07-03T17:40:49.782041 #1]  INFO -- : 文件 > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-03T17:40:49.788039 #1]  INFO -- : 文件 > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-03T17:40:49.788568 #1]  INFO -- : > chown -R root /var/lib/postgresql/9.5/main
I, [2020-07-03T17:40:49.799608 #1]  INFO -- :
I, [2020-07-03T17:40:49.799833 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/9.5/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-07-03T17:40:49.802712 #1]  INFO -- :
I, [2020-07-03T17:40:49.802859 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-07-03T17:40:49.823259 #1]  INFO -- :
I, [2020-07-03T17:40:49.823552 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-07-03T17:40:49.827629 #1]  INFO -- :
I, [2020-07-03T17:40:49.828112 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 data_directory = '/var/lib/postgresql/9.5/main' 替换为 data_directory = '/shared/postgres_data'
I, [2020-07-03T17:40:49.828954 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?listen_addresses *=.*) 替换为 listen_addresses = '*'
I, [2020-07-03T17:40:49.829559 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?synchronous_commit *=.*) 替换为 synchronous_commit = $db_synchronous_commit
I, [2020-07-03T17:40:49.830168 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?shared_buffers *=.*) 替换为 shared_buffers = $db_shared_buffers
I, [2020-07-03T17:40:49.830753 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?work_mem *=.*) 替换为 work_mem = $db_work_mem
I, [2020-07-03T17:40:49.831385 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?default_text_search_config *=.*) 替换为 default_text_search_config = '$db_default_text_search_config'
I, [2020-07-03T17:40:49.831981 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-07-03T17:40:49.835928 #1]  INFO -- :
I, [2020-07-03T17:40:49.836456 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?max_wal_senders *=.*) 替换为 max_wal_senders = $db_max_wal_senders
I, [2020-07-03T17:40:49.837120 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?wal_level *=.*) 替换为 wal_level = $db_wal_level
I, [2020-07-03T17:40:49.837800 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?checkpoint_segments *=.*) 替换为 checkpoint_segments = $db_checkpoint_segments
I, [2020-07-03T17:40:49.838367 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?logging_collector *=.*) 替换为 logging_collector = $db_logging_collector
I, [2020-07-03T17:40:49.838967 #1]  INFO -- : 在 /etc/postgresql/9.5/main/postgresql.conf 中将 (?-mix:#?log_min_duration_statement *=.*) 替换为 log_min_duration_statement = $db_log_min_duration_statement
I, [2020-07-03T17:40:49.839599 #1]  INFO -- : 在 /etc/postgresql/9.5/main/pg_hba.conf 中将 (?-mix:^#local +replication +postgres +peer$) 替换为 local replication postgres  peer
I, [2020-07-03T17:40:49.840164 #1]  INFO -- : 在 /etc/postgresql/9.5/main/pg_hba.conf 中将 (?-mix:^host.*all.*all.*127.*$) 替换为 host all all 0.0.0.0/0 md5
I, [2020-07-03T17:40:49.840674 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/9.5/bin/postmaster -D /etc/postgresql/9.5/main
I, [2020-07-03T17:40:49.843014 #1]  INFO -- : > sleep 5
2020-07-03 17:40:49.929 UTC [1589] LOG:  数据库系统在 2020-07-03 17:35:44 UTC 已关闭
2020-07-03 17:40:49.935 UTC [1589] LOG:  已启用 MultiXact 成员回绕保护
2020-07-03 17:40:49.939 UTC [1593] LOG:  自动 vacuum 启动器已启动
2020-07-03 17:40:49.939 UTC [1586] LOG:  数据库系统已准备好接受连接
I, [2020-07-03T17:40:54.846567 #1]  INFO -- :
I, [2020-07-03T17:40:54.847806 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
createdb:错误:无法连接到数据库 template1:无法连接到服务器:没有那个文件或目录
	服务器是否在本地运行并接受
	通过 Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 的连接?
I, [2020-07-03T17:40:54.926943 #1]  INFO -- :
I, [2020-07-03T17:40:54.927231 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql:错误:无法连接到服务器:无法连接到服务器:没有那个文件或目录
	服务器是否在本地运行并接受
	通过 Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 的连接?
I, [2020-07-03T17:40:55.015057 #1]  INFO -- :
I, [2020-07-03T17:40:55.015594 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql:错误:无法连接到服务器:无法连接到服务器:没有那个文件或目录
	服务器是否在本地运行并接受
	通过 Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 的连接?
I, [2020-07-03T17:40:55.091507 #1]  INFO -- :
I, [2020-07-03T17:40:55.091839 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql:错误:无法连接到服务器:无法连接到服务器:没有那个文件或目录
	服务器是否在本地运行并接受
	通过 Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 的连接?
I, [2020-07-03T17:40:55.167810 #1]  INFO -- :
I, [2020-07-03T17:40:55.168235 #1]  INFO -- : 终止异步进程
I, [2020-07-03T17:40:55.168298 #1]  INFO -- : 向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/9.5/bin/postmaster -D /etc/postgresql/9.5/main 的 pid: 1586 发送 INT
2020-07-03 17:40:55.168 UTC [1586] LOG:  收到快速关闭请求
2020-07-03 17:40:55.168 UTC [1586] LOG:  中止任何活动事务
2020-07-03 17:40:55.170 UTC [1593] LOG:  自动 vacuum 启动器正在关闭
2020-07-03 17:40:55.172 UTC [1590] LOG:  正在关闭
2020-07-03 17:40:55.189 UTC [1590] LOG:  数据库系统已关闭


失败
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' 失败,返回 #<Process::Status: pid 1618 exit 2>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行失败,参数为 "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
a10b0d1db8256d70432e08508f453835a4bd7dce8f4ac601b6be1031bb3ce01b
** 引导失败 ** 请向上滚动查看更早的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
root@foro:/var/discourse#

在尝试了所有经典技巧(包括「关机再开机」)后,我现在有点不知所措。我不明白为什么它无法访问数据库 :frowning:

PostgreSQL 9.5!?天哪,那太老了。

能否请您将 /var/discourse/containers/app.yml 文件的前几行复制并粘贴到这里?

¡Hola! Gracias por responder.

root@foro:/var/discourse# cat /var/discourse/containers/app.yml
##
## Después de realizar cambios en este archivo, DEBES reconstruir para que
## los cambios surtan efecto en tu instancia de Discourse en vivo:
##
## /var/discourse/launcher rebuild app
##
## Asegúrate de cumplir con la sintaxis YAML. Puedes usar este sitio para ayudarte a verificar:
## http://www.yamllint.com/

## Esta es la plantilla de contenedor Docker de Discourse todo-en-uno, autónoma

# Puedes agregar limitación de velocidad descomentando la plantilla web.ratelimited.
# Por defecto permite 12 solicitudes por segundo por IP y 100 por minuto por IP.
# Esto es configurable modificando los parámetros en este archivo.

templates:
  # - "templates/postgres.template.yml"
  - "templates/postgres.9.5.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

 ## Comenta las siguientes líneas si deseas agregar Lets Encrypt para tu instalación de Discourse
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Acabo de probar con “templates/postgres.10.template.yml” (ya que acabo de leer aquí), pero sigue arrojando errores:

Launcher is up-to-date
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2020-07-03T17:50:57.037855 #1]  INFO -- : Loading --stdin
I, [2020-07-03T17:50:57.050344 #1]  INFO -- : > DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-12 postgresql-client-12 postgresql-contrib-12
I, [2020-07-03T17:50:59.618428 #1]  INFO -- : Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
  libllvm7
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
  postgresql-12* postgresql-client-12*
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 52.8 MB disk space will be freed.
(Reading database ... 43929 files and directories currently installed.)
Removing postgresql-12 (12.2-2.pgdg100+1) ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
Removing postgresql-client-12 (12.2-2.pgdg100+1) ...
Processing triggers for postgresql-common (213.pgdg100+1) ...
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
(Reading database ... 42106 files and directories currently installed.)
Purging configuration files for postgresql-12 (12.2-2.pgdg100+1) ...
Dropping cluster main...

I, [2020-07-03T17:50:59.618701 #1]  INFO -- : > apt-get update && apt-get install -y postgresql-10 postgresql-client-10 postgresql-contrib-10
debconf: delaying package configuration, since apt-utils is not installed
I, [2020-07-03T17:51:08.574737 #1]  INFO -- : Hit:1 http://deb.debian.org/debian buster InRelease
Get:2 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:3 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:4 https://deb.nodesource.com/node_10.x buster InRelease [4,584 B]
Get:5 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [84.6 kB]
Get:6 http://security.debian.org/debian-security buster/updates/main amd64 Packages [208 kB]
Get:7 http://deb.debian.org/debian buster-updates/main amd64 Packages.diff/Index [3,688 B]
Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-04-2016.16.pdiff [1,101 B]
Get:9 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-07-1403.53.pdiff [439 B]
Get:10 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-13-2000.26.pdiff [552 B]
Get:10 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-06-13-2000.26.pdiff [552 B]
Get:11 https://deb.nodesource.com/node_10.x buster/main amd64 Packages [768 B]
Get:12 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [177 kB]
Fetched 599 kB in 1s (616 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
  libllvm7
Use 'apt autoremove' to remove it.
Suggested packages:
  postgresql-doc-10
The following NEW packages will be installed:
  postgresql-10 postgresql-client-10
0 upgraded, 2 newly installed, 0 to remove and 11 not upgraded.
Need to get 6,390 kB of archives.
After this operation, 30.6 MB of additional disk space will be used.
Get:1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-10 amd64 10.13-1.pgdg100+1 [1,428 kB]
Get:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-10 amd64 10.13-1.pgdg100+1 [4,961 kB]
Fetched 6,390 kB in 0s (28.3 MB/s)
Selecting previously unselected package postgresql-client-10.
(Reading database ... 42106 files and directories currently installed.)
Preparing to unpack .../postgresql-client-10_10.13-1.pgdg100+1_amd64.deb ...
Unpacking postgresql-client-10 (10.13-1.pgdg100+1) ...
Selecting previously unselected package postgresql-10.
Preparing to unpack .../postgresql-10_10.13-1.pgdg100+1_amd64.deb ...
Unpacking postgresql-10 (10.13-1.pgdg100+1) ...
Setting up postgresql-client-10 (10.13-1.pgdg100+1) ...
update-alternatives: using /usr/share/postgresql/10/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up postgresql-10 (10.13-1.pgdg100+1) ...
Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "C.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/10/main ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... Etc/UTC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    pg_ctlcluster 10 main start

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for postgresql-common (213.pgdg100+1) ...
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:

I, [2020-07-03T17:51:08.576309 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-03T17:51:08.579856 #1]  INFO -- :
I, [2020-07-03T17:51:08.580190 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-03T17:51:08.582830 #1]  INFO -- :
I, [2020-07-03T17:51:08.583011 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-03T17:51:08.585062 #1]  INFO -- :
I, [2020-07-03T17:51:08.585264 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-03T17:51:08.587809 #1]  INFO -- :
I, [2020-07-03T17:51:08.588006 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-03T17:51:08.590249 #1]  INFO -- :
I, [2020-07-03T17:51:08.590442 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/03 17:51:08 socat[1560] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2020-07-03T17:51:08.596137 #1]  INFO -- :
I, [2020-07-03T17:51:08.596439 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-03T17:51:08.600217 #1]  INFO -- :
I, [2020-07-03T17:51:08.600879 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-03T17:51:08.604747 #1]  INFO -- :
I, [2020-07-03T17:51:08.604982 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-03T17:51:08.608774 #1]  INFO -- :
I, [2020-07-03T17:51:08.609388 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-03T17:51:08.613026 #1]  INFO -- :
I, [2020-07-03T17:51:08.621472 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-03T17:51:08.628392 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-03T17:51:08.628991 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
I, [2020-07-03T17:51:08.639852 #1]  INFO -- :
I, [2020-07-03T17:51:08.640419 #1]  INFO -- : > [ ! -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
I, [2020-07-03T17:51:08.642774 #1]  INFO -- :
I, [2020-07-03T17:51:08.642909 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-07-03T17:51:08.662272 #1]  INFO -- :
I, [2020-07-03T17:51:08.662970 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-07-03T17:51:08.666112 #1]  INFO -- :
I, [2020-07-03T17:51:08.666551 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/10/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.667306 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.667901 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.668472 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.668961 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.669431 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.669849 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-07-03T17:51:08.674201 #1]  INFO -- :
I, [2020-07-03T17:51:08.674855 #1]  INFO -- : Replacing (?-mix:#?max_wal_senders *=.*) with max_wal_senders = $db_max_wal_senders in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.675531 #1]  INFO -- : Replacing (?-mix:#?wal_level *=.*) with wal_level = $db_wal_level in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.676111 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.676715 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.677378 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/10/main/postgresql.conf
I, [2020-07-03T17:51:08.678065 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/10/main/pg_hba.conf
I, [2020-07-03T17:51:08.678642 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/10/main/pg_hba.conf
I, [2020-07-03T17:51:08.679176 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main
I, [2020-07-03T17:51:08.681526 #1]  INFO -- : > sleep 5
2020-07-03 17:51:08.696 UTC [1576] FATAL:  database files are incompatible with server
2020-07-03 17:51:08.696 UTC [1576] DETAIL:  The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 10.13 (Debian 10.13-1.pgdg100+1).
I, [2020-07-03T17:51:13.684752 #1]  INFO -- :
I, [2020-07-03T17:51:13.685864 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
createdb: could not connect to database template1: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2020-07-03T17:51:13.767307 #1]  INFO -- :
I, [2020-07-03T17:51:13.767716 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2020-07-03T17:51:13.851213 #1]  INFO -- :
I, [2020-07-03T17:51:13.851495 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2020-07-03T17:51:13.928923 #1]  INFO -- :
I, [2020-07-03T17:51:13.929167 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2020-07-03T17:51:14.007486 #1]  INFO -- :
I, [2020-07-03T17:51:14.007988 #1]  INFO -- : Terminating async processes


FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 1602 exit 2>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
2941a508509ae0342bb77af4711f0e0a38436095cd1468d01cbe16aba7c3fc41
** 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.
root@foro:/var/discourse#

你能试试 templates/postgres.template.yml 吗?

好的,这是对应的日志:

root@foro:/var/discourse# ./launcher rebuild app
确保 launcher 已是最新版本
获取 origin
Launcher 已是最新版本
cd /pups && git pull && /pups/bin/pups --stdin
已是最新版本。
I, [2020-07-03T17:53:22.625663 #1]  INFO -- : 正在加载 --stdin
I, [2020-07-03T17:53:22.635149 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-03T17:53:22.671728 #1]  INFO -- : 正在生成区域设置(这可能需要一段时间)...
生成完成。

I, [2020-07-03T17:53:22.672429 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-03T17:53:22.677925 #1]  INFO -- :
I, [2020-07-03T17:53:22.678274 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-03T17:53:22.681699 #1]  INFO -- :
I, [2020-07-03T17:53:22.681920 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-03T17:53:22.684258 #1]  INFO -- :
I, [2020-07-03T17:53:22.684487 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-03T17:53:22.687048 #1]  INFO -- :
I, [2020-07-03T17:53:22.687247 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-03T17:53:22.689561 #1]  INFO -- :
I, [2020-07-03T17:53:22.689885 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/03 17:53:22 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): 没有那个文件或目录
I, [2020-07-03T17:53:22.694785 #1]  INFO -- :
I, [2020-07-03T17:53:22.695006 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-03T17:53:22.698248 #1]  INFO -- :
I, [2020-07-03T17:53:22.698408 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-03T17:53:22.701558 #1]  INFO -- :
I, [2020-07-03T17:53:22.701719 #1]  INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-07-03T17:53:22.704625 #1]  INFO -- :
I, [2020-07-03T17:53:22.704807 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-07-03T17:53:22.707685 #1]  INFO -- :
I, [2020-07-03T17:53:22.713135 #1]  INFO -- : 文件 > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-03T17:53:22.718045 #1]  INFO -- : 文件 > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-03T17:53:22.723816 #1]  INFO -- : 文件 > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-03T17:53:22.730016 #1]  INFO -- : 文件 > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-03T17:53:22.730328 #1]  INFO -- : > chown -R root /var/lib/postgresql/12/main
I, [2020-07-03T17:53:22.862955 #1]  INFO -- :
I, [2020-07-03T17:53:22.863371 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-07-03T17:53:22.866954 #1]  INFO -- :
I, [2020-07-03T17:53:22.867304 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-07-03T17:53:22.887517 #1]  INFO -- :
I, [2020-07-03T17:53:22.887828 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-07-03T17:53:22.891051 #1]  INFO -- :
I, [2020-07-03T17:53:22.891375 #1]  INFO -- : > /root/upgrade_postgres
I, [2020-07-03T17:53:22.919256 #1]  INFO -- : 正在将 PostgreSQL 从版本 9.5 升级到 12
警告:升级 PostgresSQL 需要额外的 53G 磁盘空间
请在继续之前释放一些空间或扩展您的磁盘。


为避免升级,请将 containers/app.yml 中的 "templates/postgres.template.yml" 更改为 "templates/postgres.10.template.yml"



失败
--------------------
Pups::ExecError: /root/upgrade_postgres 执行失败,返回状态为 #<Process::Status: pid 45 exit 1>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行参数 "/root/upgrade_postgres" 失败
584f999e4af2664cac606c4f56491e458a4f40913dc2f0f4c595792854c33fae
** 引导失败 ** 请向上滚动并查找更早的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
root@foro:/var/discourse#

@Falco,稍等 :thinking:

警告:升级 PostgreSQL 需要额外 53G 的磁盘空间

也许所有问题都与磁盘空间有关!?:thinking:

既然您正在使用我们最新且受支持的 PostgreSQL 模板,情况确实如此。

我们的脚本要求有足够的空闲空间,大小为当前数据库大小的两倍。看来您的实例相当大!

这是一个活跃了 3 年的论坛,活动量很大 :sweat_smile: 我正在扩容 DigitalOcean 的空间(这需要一些时间),如果最终问题得以解决,我会稍后回来更新我的首帖。

非常感谢 @Falco,这个问题让我快抓狂了,和别人交流确实帮了大忙 :joy:

您可能更适合创建一个带有更新操作系统的新 Droplet,并将数据恢复到新实例。

这样您将获得新的操作系统,不需要占用那么多磁盘空间,且停机时间更短——您只需在备份/恢复到新 Droplet 期间将旧站点设为只读,然后切换 DNS。您也可以使用静态 IP(我忘了具体叫什么),在网络层面而非 DNS 层面进行切换(在将 DNS 指向静态 IP 之后)。

@Falco 确认:更改模板并扩展磁盘空间效果极佳。谢谢!

@pfaffman 这是个很棒的主意,我将在本周末尝试实施。感谢建议。