大家好 - 我是 Discourse 的新手(看起来很棒!),虽然我具备一些通用技术技能,但我认为在 Docker/Linux 虚拟机领域,我仍属于新手。
我有一台运行 Oracle Linux 的免费 Oracle VM。我已经完成了以下步骤(https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud),并正在执行 ./discourse-setup 步骤。
我 consistently 收到以下错误消息……尝试运行 discourse doctor 但无济于事。希望有人能指点我正确的方向,看看这里可能出了什么问题。提前非常感谢!- Tim
[2021-06-11T04:09:29.733935 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2021-06-11T04:09:29.735773 #1] INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG: 0 8kB 超出了参数 "shared_buffers" 的有效范围(16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL: 配置文件 "/etc/postgresql/13/main/postgresql.conf" 包含错误
I, [2021-06-11T04:09:34.739847 #1] INFO -- :
I, [2021-06-11T04:09:34.740097 #1] INFO -- : > su postgres -c 'createdb discourse' || true
createdb: 错误:无法连接到数据库 template1:无法连接到服务器:没有此类文件或目录
服务器是否在本地运行并接受
Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 上的连接?
I, [2021-06-11T04:09:34.860266 #1] INFO -- :
I, [2021-06-11T04:09:34.860745 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: 错误:无法连接到服务器:没有此类文件或目录
服务器是否在本地运行并接受
Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 上的连接?
I, [2021-06-11T04:09:35.023423 #1] INFO -- :
I, [2021-06-11T04:09:35.023810 #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, [2021-06-11T04:09:35.137806 #1] INFO -- :
I, [2021-06-11T04:09:35.138325 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: 错误:无法连接到服务器:没有此类文件或目录
服务器是否在本地运行并接受
Unix 域套接字 "/var/run/postgresql/.s.PGSQL.5432" 上的连接?
I, [2021-06-11T04:09:35.257190 #1] INFO -- :
I, [2021-06-11T04:09:35.257476 #1] INFO -- : 终止异步进程
FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' 失败,返回 #<Process::Status: pid 80 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;\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
** 引导失败 ** 请向上滚动并查找更早的错误消息,可能不止一条。
嗨 @Meathead40 ,
我可能遇到了同样的问题。
我曾在六月成功在 Oracle 免费实例上部署了 Discourse。现在我重新运行了设置脚本,以更改几个与邮件设置相关的参数。
我在日志中追踪到的第一个错误是:FATAL: 配置文件 "/etc/postgresql/13/main/postgresql.conf" 包含错误。
但在我的情况下,该文件并不存在。此外,PostgreSQL 服务并未运行(甚至根本不存在该服务)。
你成功解决过这个问题吗?还有其他人遇到过类似情况吗?
祝好,
Stef
Falco
(Falco)
2021 年8 月 2 日 18:13
3
你能分享一下 free -m --si 的输出吗?
Ed_S
(Ed S)
2021 年8 月 2 日 18:32
4
你检查过容器内部吗?你是否也看到了关于 shared_buffers 太小的日志条目?
在我的情况下:
# /var/discourse/launcher enter app
# egrep shared_buffers /etc/postgresql/13/main/postgresql.conf
shared_buffers = 128MB
exit
你好 @Falco ,这是命令的输出结果:
total used free shared buff/cache available
Mem: 703 359 86 7 257 207
Swap: 8388 246 8142
你好 @Ed_S ,我收到了以下消息:
/var/discourse/launcher enter app
无法连接到 Docker 守护进程——请确认它正在运行且您有访问权限
Ed_S
(Ed S)
2021 年8 月 3 日 08:37
7
你应该在这里看到相同的文件:
/var/discourse/shared/standalone/postgres_data/postgresql.conf
理想情况下,在显示配置中存在错误的日志条目之前,你会看到一行描述具体错误的内容。
你可能会在以下位置找到日志:
/var/discourse/shared/standalone/log/var-log/postgres/current
感谢提供的建议。我收集到了更多信息。
以下是日志中错误发生时间附近的内容(之前的消息来自数天前):
2021-08-02 13:33:16.980 UTC [2419] LOG: received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG: background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG: shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG: database system is shut down
我还获取了共享缓冲区配置:
shared_buffers = 128MB # min 128kB
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
Ed_S
(Ed S)
2021 年8 月 3 日 09:31
9
嗯,我们可以稍微回顾一下:每当看到那个 FATAL 错误时,它前面是哪几行代码?
好的,再次感谢您的支持。
我正在对现有安装运行设置脚本,目的是更改几个配置参数。脚本的第一部分检测到了以下内容:
sudo ./discourse-setup
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
The configuration file containers/app.yml already exists!
. . . reconfiguring . . .
Saving old file as app.yml.2021-08-03-102829.bak
Stopping existing container in 5 seconds or Control-C to cancel.
+ /bin/docker stop -t 30 app
app
Found 0GB of memory and 1 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.
随后继续传递所有配置参数并最终开始构建……这应该是您正在寻找的关键线索:
2021-08-03 10:30:37.709 GMT [55] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
Ed_S
(Ed S)
2021 年8 月 3 日 10:57
11
stefanino:
Found 0GB of memory
这可不是个好兆头!该数值应直接来自以下命令的输出:
free -g --si | awk ' /Mem:/ {print $2} '
这显示的是 703 MB,从官方标准来看,这对于 Discourse 的正常运行来说太小了。如果您愿意冒险(且无法获得任何支持),可以编辑 discourse_docker/discourse-setup at master · discourse/discourse_docker · GitHub 中的魔术数字 990。
我认为您需要一个内存更大的实例。
我成功完成了配置并重新构建。步骤如下:
在 /var/discourse/discourse-setup 中注释掉内存检查(#check_disk_and_memory )(不确定这是否必要)
在 /var/discourse 目录下运行命令 sudo ./discourse-setup(这将生成文件 /var/discourse/containers/app.yml 并尝试继续构建,但会按照上述描述失败)
编辑 app.yml,显式设置 db_shared_buffers: “128MB” 和 UNICORN_WORKERS: 1
在 /var/discourse 目录下运行 sudo ./launcher rebuild app 以启动重新构建
我知道这处于要求的边缘,但我会密切关注实例的运行情况。
感谢支持
1 个赞
Ed_S
(Ed S)
2021 年8 月 3 日 13:09
15
很高兴问题已解决。在相关的链接讨论以及此处引用的讨论中,我认为将“魔法内存释放”数值从 990 改为代表您自身系统的数值要合理得多。“禁用内存检查”实际上带来了麻烦。
我清楚地看到,Discourse 团队需要设定某个下限值,以区分受支持和不受支持的配置。他们已正式将其设定为 1GB,并放宽至 990。但在我看来,960 与 990 非常接近,且产生原因相似。另一方面,703 则显得差异巨大!
你好,Ed,
我同意,我会修改这个数字。我对如此低的内存感到相当惊讶。Oracle(免费层级)实例规格标明内存为 1GB,但实际可用内存却只有大约 60-70%。我有点困惑,不清楚造成这种情况的原因。
Ed_S
(Ed S)
2021 年8 月 3 日 14:59
17
之前已经有人提到过——我认为 Oracle 有点不厚道,实际提供的内存远少于 1GB,但在描述时却向上取整:
编辑:参见相关博客 :
或许最重要的一条被遗漏的提示是:不要使用默认的服务器镜像 。Discourse 需要 1GB 内存(或大致相当 ),而 Oracle Linux 镜像出于某种原因无法提供足够的内存。我不确定 CentOS 是否可行,但 Ubuntu 镜像没问题。只需确保选择完整安装2 ,而不是“最小化”安装。
2 个赞
jericson
(Jon Ericson)
2021 年8 月 3 日 18:41
18
我怀疑默认的 Oracle Linux 包含了许多安装 Discourse 所不需要的组件。想必它的主要用途是托管 Oracle 数据库服务器。 幸运的是,Ubuntu 镜像运行良好。我的 测试站点/评论主机 仍在运行。(不过活动不多。)
1 个赞