由于我记录了原始(尽管不正确)的权限设置,我决定继续测试不同的 chown 变体。最终,以下这组命令帮我绕过了那个错误:
chown -R messagebus:tss /var/discourse/shared/standalone/postgres_backup
chown -R messagebus:tss /var/discourse/shared/standalone/postgres_data
chown -R messagebus:tss /var/discourse/shared/standalone/postgres_run
chown -R messagebus:tss /var/discourse/shared/standalone/postgres_data_new
chown -R messagebus:tss /var/discourse/shared/standalone/postgres_data_older
现在,当我运行 ./launcher rebuild app 时,又遇到了在 PostgreSQL 15 update - #61 by xFocus 中提到的相同错误:
源集群未干净关闭。
失败,正在退出
完整命令输出
x86_64 架构已检测到。
正在确保 launcher 为最新版本
Launcher 已是最新
2.0.20250129-0720: 正在从 discourse/base 拉取
摘要:sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
状态:discourse/base:2.0.20250129-0720 镜像已是最新
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-05T16:19:09.574812 #1] INFO -- : 正在从 stdin 读取
I, [2025-02-05T16:19:09.605350 #1] INFO -- : 文件 > /etc/service/postgres/run chmod: +x chown:
I, [2025-02-05T16:19:09.614043 #1] INFO -- : 文件 > /etc/service/postgres/log/run chmod: +x chown:
I, [2025-02-05T16:19:09.626167 #1] INFO -- : 文件 > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2025-02-05T16:19:09.634599 #1] INFO -- : 文件 > /root/install_postgres chmod: +x chown:
I, [2025-02-05T16:19:09.643169 #1] INFO -- : 文件 > /root/upgrade_postgres chmod: +x chown:
I, [2025-02-05T16:19:09.644682 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 data_directory = '/var/lib/postgresql/15/main' 替换为 data_directory = '/shared/postgres_data'
I, [2025-02-05T16:19:09.646186 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?listen_addresses *=.*) 替换为 listen_addresses = '*'
I, [2025-02-05T16:19:09.653810 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?synchronous_commit *=.*) 替换为 synchronous_commit = $db_synchronous_commit
I, [2025-02-05T16:19:09.655422 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?shared_buffers *=.*) 替换为 shared_buffers = $db_shared_buffers
I, [2025-02-05T16:19:09.656864 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?work_mem *=.*) 替换为 work_mem = $db_work_mem
I, [2025-02-05T16:19:09.657789 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?default_text_search_config *=.*) 替换为 default_text_search_config = '$db_default_text_search_config'
I, [2025-02-05T16:19:09.659640 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?checkpoint_segments *=.*) 替换为 checkpoint_segments = $db_checkpoint_segments
I, [2025-02-05T16:19:09.660906 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?logging_collector *=.*) 替换为 logging_collector = $db_logging_collector
I, [2025-02-05T16:19:09.661925 #1] INFO -- : 正在将 /etc/postgresql/15/main/postgresql.conf 中的 (?-mix:#?log_min_duration_statement *=.*) 替换为 log_min_duration_statement = $db_log_min_duration_statement
I, [2025-02-05T16:19:09.663114 #1] INFO -- : 正在将 /etc/postgresql/15/main/pg_hba.conf 中的 (?-mix:^#local +replication +postgres +peer$) 替换为 local replication postgres peer
I, [2025-02-05T16:19:09.663912 #1] INFO -- : 正在将 /etc/postgresql/15/main/pg_hba.conf 中的 (?-mix:^host.*all.*all.*127.*$) 替换为 host all all 0.0.0.0/0 md5
I, [2025-02-05T16:19:09.664817 #1] INFO -- : 正在将 /etc/postgresql/15/main/pg_hba.conf 中的 (?-mix:^host.*all.*all.*::1\/128.*$) 替换为 host all all ::/0 md5
I, [2025-02-05T16:19:09.665701 #1] INFO -- : > if [ -f /root/install_postgres ]; then
/root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi
initdb: 警告:为本地连接启用“信任”认证
initdb: 提示:下次运行 initdb 时,您可以通过编辑 pg_hba.conf 或使用选项 -A,或 --auth-local 和 --auth-host 来更改此设置。
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: 密钥存储在传统的 trusted.gpg 密钥环 (/etc/apt/trusted.gpg) 中,有关详细信息,请参阅 apt-key(8) 中的 DEPRECATION 部分。
debconf: 由于未安装 apt-utils,将延迟软件包配置。
I, [2025-02-05T16:19:29.797884 #1] INFO -- : 正在生成区域设置(这可能需要一些时间)...
en_US.UTF-8... 完成
生成完成。
正在将 PostgreSQL 从版本 13 升级到 15
属于此数据库系统的文件将由用户 "postgres" 拥有。
该用户还必须拥有服务器进程。
数据库集群将使用区域设置 "en_US.UTF-8" 进行初始化。
默认数据库编码已相应设置为 "UTF8"。
默认文本搜索配置将设置为 "english"。
数据页校验和已禁用。
正在修复现有目录 /shared/postgres_data_new 的权限 ... 完成
创建子目录 ... 完成
选择动态共享内存实现 ... posix
选择默认 max_connections ... 100
选择默认 shared_buffers ... 128MB
选择默认时区 ... Etc/UTC
创建配置文件 ... 完成
运行引导脚本 ... 完成
执行引导后初始化 ... 完成
将数据同步到磁盘 ... 完成
成功。您现在可以使用以下命令启动数据库服务器:
/usr/lib/postgresql/15/bin/pg_ctl -D /shared/postgres_data_new -l logfile start
正在获取:1 http://deb.debian.org/debian bookworm-backports InRelease [59.0 kB]
正在获取:2 http://deb.debian.org/debian bookworm InRelease [151 kB]
正在获取:3 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
正在获取:4 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
正在获取:5 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
正在获取:6 https://deb.nodesource.com/node_22.x nodistro InRelease [12.1 kB]
正在获取:7 http://deb.debian.org/debian bookworm-backports/main amd64 Packages [282 kB]
正在获取:8 http://deb.debian.org/debian bookworm/main amd64 Packages [8,792 kB]
正在获取:9 http://deb.debian.org/debian bookworm-updates/main amd64 Packages [13.5 kB]
正在获取:10 https://apt.postgresql.org/pub/repos/apt bookworm-pgdg InRelease [129 kB]
正在获取:11 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [243 kB]
正在获取:12 https://dl.yarnpkg.com/debian stable/main amd64 Packages [10.9 kB]
正在获取:13 https://dl.yarnpkg.com/debian stable/main all Packages [10.9 kB]
正在获取:14 https://deb.nodesource.com/node_22.x nodistro/main amd64 Packages [5,274 B]
正在获取:15 https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 Packages [360 kB]
已获取 10.2 MB,耗时 3 秒 (3,942 kB/s)
正在读取软件包列表...
正在读取软件包列表...
正在构建依赖关系树...
正在读取状态信息...
将安装以下附加软件包:
postgresql-client-13
建议安装:
postgresql-doc-13
将安装以下新软件包:
postgresql-13 postgresql-13-pgvector postgresql-client-13
0 个已升级,3 个新安装,0 个移除,0 个未升级。
需要下载 17.3 MB 的归档文件。
此操作后,将额外使用 56.7 MB 的磁盘空间。
正在获取:1 https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 postgresql-client-13 amd64 13.18-1.pgdg120+1 [1,523 kB]
正在获取:2 https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 postgresql-13 amd64 13.18-1.pgdg120+1 [15.4 MB]
正在获取:3 https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 postgresql-13-pgvector amd64 0.8.0-1.pgdg120+1 [297 kB]
已获取 17.3 MB,耗时 2 秒 (9,988 kB/s)
正在选择之前未选中的软件包 postgresql-client-13。
(正在读取数据库 ... 当前已安装 33363 个文件和目录。)
正在准备解包 .../postgresql-client-13_13.18-1.pgdg120+1_amd64.deb ...
正在解包 postgresql-client-13 (13.18-1.pgdg120+1) ...
正在选择之前未选中的软件包 postgresql-13。
正在准备解包 .../postgresql-13_13.18-1.pgdg120+1_amd64.deb ...
正在解包 postgresql-13 (13.18-1.pgdg120+1) ...
正在选择之前未选中的软件包 postgresql-13-pgvector。
正在准备解包 .../postgresql-13-pgvector_0.8.0-1.pgdg120+1_amd64.deb ...
正在解包 postgresql-13-pgvector (0.8.0-1.pgdg120+1) ...
正在设置 postgresql-client-13 (13.18-1.pgdg120+1) ...
正在设置 postgresql-13 (13.18-1.pgdg120+1) ...
正在创建新的 PostgreSQL 集群 13/main ...
/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main --auth-local peer --auth-host md5
属于此数据库系统的文件将由用户 "postgres" 拥有。
该用户还必须拥有服务器进程。
数据库集群将使用区域设置 "C.UTF-8" 进行初始化。
默认数据库编码已相应设置为 "UTF8"。
默认文本搜索配置将设置为 "english"。
数据页校验和已禁用。
正在修复现有目录 /var/lib/postgresql/13/main 的权限 ... 完成
创建子目录 ... 完成
选择动态共享内存实现 ... posix
选择默认 max_connections ... 100
选择默认 shared_buffers ... 128MB
选择默认时区 ... Etc/UTC
创建配置文件 ... 完成
运行引导脚本 ... 完成
执行引导后初始化 ... 完成
将数据同步到磁盘 ... 完成
成功。您现在可以使用以下命令启动数据库服务器:
pg_ctlcluster 13 main start
invoke-rc.d: 无法确定当前运行级别
invoke-rc.d: policy-rc.d 拒绝执行启动。
正在设置 postgresql-13-pgvector (0.8.0-1.pgdg120+1) ...
正在处理 postgresql-common (267.pgdg120+1) 的触发器 ...
正在从已安装的 myspell/hunspell 软件包构建 PostgreSQL 词典...
正在删除过时的词典文件:
正在停止 PostgreSQL 13 数据库服务器:main。
正在停止 PostgreSQL 15 数据库服务器:main。
执行一致性检查
-----------------------------
正在检查集群版本 完成
源集群未干净关闭。
失败,正在退出
-------------------------------------------------------------------------------------
POSTGRES 升级失败
请访问 https://meta.discourse.org/t/postgresql-15-update/349515 获取支持。
在此期间,您可以运行 ./launcher start app 来重启您的应用。
-------------------------------------------------------------------------------------
失败
--------------------
Pups::ExecError: if [ -f /root/install_postgres ]; then
/root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi
执行失败,返回状态为 #<Process::Status: pid 18 exit 1>
失败位置:/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
执行失败,参数为 {"tag"=>"db", "cmd"=>"if [ -f /root/install_postgres ]; then\n /root/install_postgres && rm -f /root/install_postgres\nelif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then\n socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1\nfi\n"}
引导失败,退出代码为 1
** 引导失败 ** 请向上滚动并查找之前的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
e2940f8bb9e51f0f290e0b6cb78257d5fa5d7563542591405689531d1af8432b
在另一个帖子中,有人建议检查以下命令的输出:
tail /var/discourse/shared/standalone/log/var-log/postgres/current
2025-02-05 01:03:07.494 UTC [567] LOG: 收到智能关闭请求
2025-02-05 01:03:08.698 UTC [567] LOG: 后台工作进程 "logical replication launcher" (PID 593) 以退出代码 1 退出
2025-02-05 01:03:08.701 UTC [588] LOG: 正在关闭
2025-02-05 01:03:08.786 UTC [567] LOG: 数据库系统已关闭
2025-02-05 01:03:34.209 UTC [565] LOG: 正在启动 PostgreSQL 13.14 (Debian 13.14-1.pgdg110+2),运行在 x86_64-pc-linux-gnu 上,由 gcc (Debian 10.2.1-6) 10.2.1 20210110 编译,64 位
2025-02-05 01:03:34.211 UTC [565] LOG: 正在监听 IPv4 地址 "0.0.0.0",端口 5432
2025-02-05 01:03:34.211 UTC [565] LOG: 正在监听 IPv6 地址 "::",端口 5432
2025-02-05 01:03:34.222 UTC [565] LOG: 正在监听 Unix 套接字 "/var/run/postgresql/.s.PGSQL.5432"
2025-02-05 01:03:34.261 UTC [587] LOG: 数据库系统于 2025-02-05 01:03:08 UTC 关闭
2025-02-05 01:03:34.339 UTC [565] LOG: 数据库系统已准备好接受连接
还有提到停止进程等内容,但我目前没有任何正在运行的容器,所以这似乎不适用于我的情况。
我完全不知道接下来该怎么办。