尝试编辑带有图片的帖子时出错(NginX Proxy Manager?)

嗯,不是的。我有 18TB 的可用空间……哈哈。

1 个赞

好的。我使用了:

./launcher rebuild app

我仍然看到:

I, [2022-04-29T16:46:00.618865 #1]  INFO -- : 
> cd /var/www/discourse & [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production & yarn cache clean'
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".

并且它以以下内容结束:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 720 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** 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.
29d02d2c0c6e0dde4f6d7b625db30c7b69626a80ec8100a44e8caf88565d1c7e

我收到以下错误,但 /home/discourse 的权限是 777。这是怎么回事???

warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
node:fs:1336
  handleErrorFromBinding(ctx);
  ^

Error: EACCES: permission denied, mkdir '/home/discourse/.config/configstore'
You don't have access to this file.

我还看到以下错误,但我的 /home/discourse 的权限是 777,甚至这也没有授予访问权限。所有权和访问权限应该如何设置?discourse 用户只存在于容器内。

I, [2022-04-29T16:45:47.705749 #1]  INFO -- : 
> cd /var/www/discourse & su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
`/home/discourse` is not writable.

我看到的唯一其他错误是关于端口 6379 的错误。我是否缺少打开端口的设置?

130:M 29 Apr 2022 16:45:10.722 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
130:M 29 Apr 2022 16:45:10.722 # Failed listening on port 6379 (TCP), aborting.
Updating files: 100% (31051/31051), done.

完成此操作后,我运行了 discourse-doctor,因为论坛已停止。尽管它在下面说,但论坛已重新启动:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 722 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** 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.
922dd1e5bd9c3ec682864fff915eb2c12f4bf88805d555bc78f067ac2910540a
==================== END REBUILD LOG ====================
Failed to rebuild app.

Checking your domain name . . .

Connection to discussion.scottibyte.com succeeded.
You should probably remove any non-standard plugins and rebuild.
Attempting to restart existing container. . . 
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start app
app
ce20d9cd2ce   local_discourse/app   "/sbin/boot"   12 days ago   Up Less than a second   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   app
Restarted the container.


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git

No non-official plugins detected.

See https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb for the official list.

discourse-doctor 发现了以下错误:

 d.indkey, pg_get_indexdef(d.indexrelid), t.oid,
	                pg_catalog.obj_description(i.oid, 'pg_class') AS comment
	FROM pg_class t
	INNER JOIN pg_index d ON t.oid = d.indrelid
	INNER JOIN pg_class i ON d.indexrelid = i.oid
	LEFT JOIN pg_namespace n ON n.oid = i.relnamespace
	WHERE i.relkind IN ('i', 'I')
	  AND d.indisprimary = 'f'
	  AND t.relname = 'user_search_data'
	  AND n.nspname = ANY (current_schemas(false))
	ORDER BY i.relname
	
2022-04-29 16:59:55.223 UTC [720] discourse@discourse LOG:  duration: 174.472 ms  execute <unnamed>: INSERT INTO "user_search_data" ("raw_data","user_id","locale","version","search_data") VALUES ('system system', -1, 'en', 3, '''system'':1A,2B ') ON CONFLICT ("user_id") DO UPDATE SET "raw_data"=excluded."raw_data","locale"=excluded."locale","version"=excluded."version","search_data"=excluded."search_data" RETURNING "user_id"
I, [2022-04-29T16:59:55.668214 #1]  INFO -- : 
I, [2022-04-29T16:59:55.668479 #1]  INFO -- : 
> cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
node:fs:1336
  handleErrorFromBinding(ctx);
  ^

Error: EACCES: permission denied, mkdir '/home/discourse/.config/configstore'
You don't have access to this file.

    at Object.mkdirSync (node:fs:1336:3)
    at AsyncFunction.module.exports.sync (/var/www/discourse/app/assets/javascripts/node_modules/make-dir/index.js:114:6)
    at Configstore.set all [as all] (/var/www/discourse/app/assets/javascripts/node_modules/configstore/index.js:59:12)
    at Configstore.set (/var/www/discourse/app/assets/javascripts/node_modules/configstore/index.js:91:12)
    at clientId (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/index.js:55:17)
    at module.exports (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/index.js:105:13)
    at Object.<anonymous> (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/bin/ember:34:1)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Module.load (node:internal/modules/cjs/loader:981:32) {
  errno: -13,
  syscall: 'mkdir',
  code: 'EACCES',
  path: '/home/discourse/.config/configstore'
}
error Command failed with exit code 1.

因此,在 discourse-doctor 之后,论坛又恢复了,尽管出现了我最初发布的所有相同错误。图形是必需的,所以我认为图形在此版本中不再起作用。此错误始于 2.9.0 beta3,我现在使用的是 2.9.0 beta 4。有没有办法降级或修复这个烂摊子?

@JammyDodger 一切都归结于此:

$ yarn install --production
Error: EACCES: permission denied, open '/home/discourse/.config/yarn'


请注意,/home/discourse 中没有 .config。所以我创建了 .config。

如果这有帮助,这是截至目前的更新仪表板。

Discourse-Doctor 之后您的论坛之所以能恢复上线,是因为它重启了现有、重建之前的网站版本。所以,您会恢复上线,但不幸的是,您也会回到原点。

如果您有最近的备份,也许可以更快地启动一个新的 droplet,安装一个全新的实例并在那里恢复您的网站?

我搜索了网站上类似的错误,因为我担心这不是我个人有经验的错误,但我没有足够理解答案来提供建议。:slightly_smiling_face: @pfaffman 通常擅长处理这些问题。这个方法会起作用吗,还是完全是误导?

1 个赞

因此,作为最后的努力,我从管理员 GUI 执行了备份。日志显示备份成功。我尝试下载备份。论坛通过电子邮件向我发送了备份链接。我点击了它,它看起来像是下载了,但没有文件被下载。我的论坛显示有备份,但没有一个可以下载。我想最坏的情况是,我会从头开始安装一个 Discourse 并上传一个备份。可悲的是,我无法从我当前的论坛下载备份,并且日志中没有任何错误。这个产品让我觉得自己像个彻头彻尾的新手,而我不是。

我按照您指示的方式在容器内进行了 chown。我收到一封关于备份链接的电子邮件。我点击了它。我在 Ubuntu 桌面指定了下载文件夹。它立即返回,但没有任何内容被下载。我现在已经准备好放弃我过去两年的论坛笔记并删除我的 Youtube 频道。该产品抵抗所有修复、备份或恢复的尝试。

:thinking: 我认为在有更懂的人给出具体建议之前,你应该暂停所有有风险的更改。我知道这很令人沮丧,但鲁莽行事可能会后悔。

我有服务器的多个可靠图像备份,可以随时恢复。问题是我需要服务器上的当前数据,而 Discourse 不会交出备份副本。我不知道该怎么办。我正在考虑截屏所有图形并复制文本,然后在 phpBB 中重新创建所有内容,因为 phpBB 可以正常工作。

我的问题不是上传备份,而是从论坛下载备份。为了尝试修复启动器问题,我将容器内的 /home/discourse 更改为 discourse,因为它之前是 root。我再次运行了启动器,结果是……

warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".

这个产品充满了数百个错误,修复一两个错误没有任何改善。两周前我还在正常运行,然后它就自我崩溃了,而且无处可寻来修复这个烂摊子。

嗯,那倒是。:+1: 只要你对这个安全网感到满意,并且意识到并乐于承担实验的风险。我自行托管,在没有指导的情况下“脱离脚本”可能会让人非常紧张,尤其是当你拥有你关心的内容时。

你能否提供更多关于你的设置以及到目前为止你是如何维护服务器的细节?也许这能阐明问题是如何发生的,并让社区中遇到类似问题的其他人感到熟悉。你的服务器和规格是什么?你提到你遵循了标准的安装指南,但你对一些常规命令不清楚,你是否错过了服务器的重要更新等?

1 个赞

与其通过 Web 界面下载,不如使用 scprsync 将其下载到其他地方。

我无法理解这里发生了什么。

UX 升级中提到的 /home/discourse 位于容器内部,因此您不应该在本地文件系统中看到这些文件。

但您确实理解容器内部和外部的区别。

这不会改变重建的任何内容,因为您没有查看该容器。

您是否执行了

git pull

您是在 main 分支而不是 master 分支上吗?

2 个赞

我明白容器内外的情况。我找不到备份文件夹。

好的。@JammyDodger,进展巨大。感谢您的帮助。我恢复了1月份的Discourse服务器备份。它完美运行,然后我通过“git pull”并重建应用程序将其升级到最新版本。好消息是,现在没有任何错误。

我终于成功地从旧服务器导出了备份并进行了导入。我的所有数据都在论坛中,论坛也没有错误。

不幸的是,我仍然无法编辑带有图片的帖子,也无法创建带有图片的帖子。我收到500错误或只是“无法创建帖子”。欢迎您在 https://discussion.scottibyte.com/ 上尝试。好消息是,只要我的帖子仅包含文本,我就没问题,并且我已经更新到最新版本,也没有错误。

1 个赞

我感觉我的问题可能与 Discourse 无法访问图像上传缓存有关,无论是在创建带有图像的帖子时还是在编辑带有图像的现有帖子时。我已经完全升级到 2.9.0.beta4。在 beta1 中我没有看到这个问题。我认为它发生在 beta3 或 beta4 中。每当我编辑带有图像的现有帖子时,在尝试保存编辑时都会收到 500 错误。创建带有图像的新帖子时,我会收到:


如果我编辑或创建带有文本和超链接但没有嵌入图形的帖子,则可以正常工作。

在 Discourse 2.9.0.beta4 中编辑包含任何图片的现有帖子会失败,并出现以下错误:

创建新主题时,一旦上传图片就会失败,并出现此错误:

有人知道如何解决这个问题吗? 在升级到 beta4 后开始出现此问题。

您好 @vmsman :slightly_smiling_face:

请将您关于某个问题的所有帖子集中到一个主题中,而不是交叉发布并创建多个帖子。如果有人能够提供帮助,他们可以在一个地方找到所有相关信息,并且更容易跟踪。 :+1:

不过这是个好消息。 :+1: 可用的备份现在是否允许您启动一个新实例并在那里进行安装?

我已经完全升级了。所有的重建错误都消失了。我恢复了备份。我仍然无法上传图片。

因此,我从头开始构建了一个新服务器。它没有任何错误。我恢复了备份。在编辑带有图形的帖子时,我仍然遇到相同的 500 错误。我也无法创建带有图片的帖子。我甚至尝试在恢复原始安装的备份之前创建帖子,但它无法处理图形。Discourse 2.9.0.beta4 一定有什么变化。在 beta2 中一切都正常。我必须得出结论,这是一个网络陷阱。我的 discourse 和其他托管应用程序都在 NginX Proxy Manager 后面,而所有其他应用程序都运行正常。作为测试,我删除了 NginX Proxy Manager 并直接暴露了服务器,错误就消失了。因此,我得出结论,beta4 在网络方面做了一些不同的事情。

1 个赞

这听起来你可能有所发现。:+1: 让我们再次更新标题,看看是否能获得更多回复。

恐怕我只知道标准的安装方法,所以我在 Nginx Proxy 方面的技能为零。:slightly_smiling_face: