配置文件 containers/app.yml 已存在! 5 秒后停止现有容器,或按 Control-C 取消

当我通过 ssh 连接到虚拟机时,我立即收到了以下信息:

配置文件 containers/app.yml 已存在!
将旧文件保存为 app.yml.2024-12-25-193919.bak
正在停止现有容器(5秒后)或按 Control-C 取消。

不确定它想做什么?

我希望我从未安装过 Right Sidebar Blocks,尽管我不确定此问题是否与之相关。https://meta.discourse.org/t/issues-when-i-enable-component-maybe-right-sidebar-blocks/343964/13

我执行了 app rebuild,以为这会有所帮助,但每次登录虚拟机时,我都会收到以下信息:

配置文件 containers/app.yml 已存在!
将旧文件保存为 app.yml.2024-12-25-xxxxxx.bak
正在停止现有容器(5秒后)或按 Control-C 取消。

如果我不中断它,它似乎想要执行完整的初始设置?我有一个最近的快照并已恢复。

我运行了:./launcher rebuild app
并且成功了
我可以 ping 通外部网络,网站也已上线并正常运行……

但在登录虚拟机时,我立即遇到了这个问题。

如果我在 5 秒内中断该进程,一切似乎都正常,网站运行良好,那么是什么导致了这个问题,以及如何阻止它在登录虚拟机时出现?

我也重启了虚拟机,在重启后通过 ssh 登录虚拟机时遇到了同样的问题,但网站已上线并正常运行。

1 个赞

很奇怪!

这就像你运行了某种自定义的登录 bash 脚本。

你是如何安装 Discourse 的?是严格按照标准安装的吗?

不,这不会是主题组件。

4 个赞

您会在首次运行 discourse-setup 后再次运行它时收到此消息。您可以再次运行它来更改设置。通常您只想运行

./launcher rebuild app
1 个赞

在登录时立即自动运行?

那么,也许这就是 DigitalOcean 一键安装 Discourse 所做的事情。

这就是为什么推荐标准安装,因为它不会那样做。我认为他们的文档可能会告诉你,你可以删除或编辑 .bashrc 或类似的。

不过,你可以在登录时按 Ctrl+C,但最终还是会留下大量文件,这些文件实际上不会造成损害,但会非常烦人。

2 个赞

是的,这听起来更可能。

1 个赞

我几个月前使用了标准安装。我确实使用 nginx 反向代理,请注意它自八月以来一直运行正常。

我没有运行 discourse-setup(嗯,有一次运行了 5 秒后它开始运行设置脚本,但我将其终止并从快照恢复了。我确实运行了 ./launcher rebuild app。

是的:“它会在登录时立即自动运行?”我一登录并 sudo su 切换到 root,它就会自动运行。

我没有使用 Digital Ocean。

我刚查看了 root 的 .bashrc 文件,最后一行是:

/opt/hostinger/scripts/discourse_conf.sh

我来看看它有什么作用。如果它一直都在那里,请注意我并没有添加它。

#!/bin/bash
clear
cd /var/discourse

if ./discourse-setup; then
  clear
  echo "Discourse is now installed. Log into your admin account in a browser to continue"
  echo "configuring Discourse."

  cp -f /etc/skel/.bashrc /root/.bashrc
else
  echo ""
  echo "-----------------------------------------------------------------------------"
  echo "The setup script failed with the provided Discourse details."
  echo "It will rerun. Please address the above issues."
  echo "-----------------------------------------------------------------------------"
  echo "When you are ready, press Enter"
  echo "To cancel setup, press Ctrl+C and this script will be rerun on your next login"
  read wait
fi

Hostinger 托管了虚拟机。我来删除那一行,然后尝试登录和 su,我不知道那是什么时候进入 .bashrc 文件的,我肯定没有手动添加它。

是的,这解决了问题,我从未想过 rc 文件会被这样修改,所以我从未想过检查。非常感谢你们的帮助!

在注释掉 bashrc 中的那一行后:

cd /var/discourse
if ./discourse-setup; then  echo 'found it'; else  echo 'not found'; fi

返回: not found

对我来说,它能找到它很奇怪,一直都是。

但是,如果我现在运行(大约 15 分钟后) ls -al ./discourse-setup 返回:-rwxr-xr-x 1 root root 28715 Dec 23 23:24 ./discourse-setup

如果我现在运行 if ./discourse-setup; then echo 'found it'; else echo 'not found'; fi,就会出现我遇到的问题:“…将在 5 秒后停止现有容器或按 Control-C 取消”。

我删除了注释,再次登录并运行 sudo su,它想要开始安装过程,但它没有创建 discourse-setup 脚本,那么 discourse-setup 是如何创建的?

discourse-setup 脚本是如何创建的,我可以手动删除它吗? 如果我重命名它,我不会在登录时看到它被重新创建,无论是否有 /opt/hostinger/scripts/discourse_conf.sh 行在 root .bashrc 中。

请注意,我从未见过:

  echo "The setup script failed with the provided Discourse details."
  echo "It will rerun. Please address the above issues."

它清除了屏幕,我只看到以下注释:

The configuration file containers/app.yml already exists!
Saving old file as app.yml.2024-12-25-193919.bak
Stopping existing container in 5 seconds or Control-C to cancel.
 diff ./.bashrc /etc/skel/.bashrc
118d117
< # /opt/hostinger/scripts/discourse_conf.sh

我不知道那一行是怎么进入 .bashrc 文件的,而且我看到的关于问题的文本与 /opt/hostinger/scripts/discourse_conf.sh 文件中描述的不符,但问题似乎已经消失了。

我还注意到,当我运行 ./launcher rebuild app 或重启虚拟机时,如果我尝试过早访问网站,我会收到 502 错误,需要大约一分钟网站才能访问。我过去不记得这样,但也许我从未尝试过立即访问网站。对此有什么看法?

1 个赞

您需要调查登录时运行的脚本,并删除与运行设置相关的行。

据我所知,标准安装不会修改这些,但事实就是如此。

是您做了什么导致了安装。

2 个赞

你扩展了你的帖子,使其超越了时间顺序

很棒!

抱歉,当时是凌晨 2 点。

感谢大家的帮助。我上面提到的一些问题对我来说仍然不清楚,但似乎随着 .bashrc 文件最后一行被删除,问题已经消失了。

回答我自己的问题:discourse-setup 脚本是如何创建的,我可以手动删除它吗?

discourse-setup 脚本应该存在于 /var/discourse。它是作为基础代码的一部分提供的。

至于 502 错误,我会忍受,除非有其他指示。

1 个赞

但你没有。你使用了一个 Hostinger 镜像,它在你登录时会自动运行 Discourse 设置。

你想从 .bashrc 中删除运行 Hostinger 脚本的那一行。

你不想删除 discourse-setup,但也不想运行它。

1 个赞

是的,我在 .bashrc 和 discourse-setup 方面也是这么做的,但我记不起来是自动运行了安装,也不知道为什么几个月后它突然又重新启动了。

我似乎记得是按照 GitHub 上的说明操作的,但可能记错了。

总之,我已经从 .bashrc 文件中删除了那一行。

谢谢。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.