lega4
1
起初,我尝试使用半默认设置运行 Discourse,运行得相当顺利,我可以上传文件以及进行其他操作。
然后我意识到 app.yml 中的路径是 /var/discourse,我将其更新为 /var/www/discourse,停止并销毁了容器,完全删除了之前的文件夹。我再次启动并运行它……但注意到现在我无法再上传文件了。
uploads 文件夹需要什么样的权限?我可以手动进行一些更改,但我想确切地知道是什么以及它是否总体上没问题(启动器在从头开始启动时,不应该负责设置正确的权限吗?)
在日志中,我看到了 nginx 错误,例如
2024/07/12 19:11:23 [crit] 76#76: *160552 stat() “/var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png” failed (13: Permission denied), client: 172.17.0.1, server: _, request: “GET /phorum/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png HTTP/1.0”, host: “myhost.com”, referrer: “https://myhost.com/phorum/admin/site_settings/category/branding”
uploads 的权限如下:
drwxr--r--+ 3 discourse www-data 21 Jul 12 11:47 uploads
pfaffman
(Jay Pfaffman)
2
这是推荐的。
/var/www/discourse 路径是容器内 discourse 的路径。/var/discourse 是容器外 Discourse_docker 的正常路径。
既然你刚开始,我建议你重新开始,这次不要重命名任何东西。
我猜你没有在你的 app.yml 中更新路径,所以它正在尝试访问不存在的东西。
lega4
3
我的服务器上还有许多其他项目,它们都很好地位于我的 /var/www 文件夹中,所以我希望保持这样
我不在乎容器内部是什么样的。
但我确实更新了?在 mounts 中,或者它还应该去哪里?
Jagster
(Jakke Lehtonen)
4
抱歉,帮不了你。但我非常确定你的 Nginx 不在那里
Docker 容器的情况也是如此。
lega4
5
抱歉,我没明白你说的是哪个 Nginx?日志来自 Discourse 的 Nginx,我的 SSL 终止 Nginx 在它上面。
Jagster
(Jakke Lehtonen)
6
这正是我说的。因为您的反向代理 nginx 不在该路径中,所以 docker 容器也不应该在该路径中。
但是容器有自己的生命周期,容器的路径不应该影响其 Nginx 的功能。您还更改了其他设置吗?
Jagster
(Jakke Lehtonen)
7
我检查了我拥有的内容:
lrwxrwxrwx 1 root root 15 Jul 12 10:10 uploads -> /shared/uploads
并且举例说明 /var/www/discourse/public/uploads/default/original/1X 上的一个图像看起来像这样:
-rw-r--r-- 1 discourse www-data 7100 May 19 2022 08335563eac3a393e60a902d4d38cffdfa6d967d
我知道这么多。否则 Docker 对我来说就是一个巨大的谜 
lega4
8
所以基本上是全局可写?这在安全方面不是被认为很糟糕吗?
pfaffman
(Jay Pfaffman)
9
您真的不想冒着将您的 app.yml 中的秘密暴露给世界的风险。
1 个赞
Jagster
(Jakke Lehtonen)
10
在 Docker 里面?我不这么认为。而且……我不在乎,因为所有这些都是由 CDCK 计划和完成的,我相信他们知道自己在做什么 
lega4
11
当然,但我并没有暴露任何东西 
无论是在里面还是外面,权限都是一样的。而且 uploads 文件夹是挂载的。
lega4
12
好的,什么都没起作用,所以我最终将 uploads 文件夹的权限更改为 755,现在一切正常。重建后,上传本身似乎没问题(从引擎方面来看),但是 nginx 无法读取它们。
Jagster
(Jakke Lehtonen)
13
我不完全明白你为什么要这么做。将容器放在全球可见的路径中是你的选择,如果你犯了一个小错误,但那是你的选择。但其他一切……为什么?
在 Discourse 前面设置反向代理非常简单,否则你的设置将是一个标准的安装,没有所有这些麻烦。当然,如果你想玩,那是你的爱好,但很快就会有人出来说,你只能获得标准安装的支持,而最大的问题是实际上没有人知道你做了什么。或者为什么。
lega4
14
“这样做”是指什么?我的设置相对标准
我正在尝试修复这个问题。
pfaffman
(Jay Pfaffman)
15
如果您愿意,可以上传一个文件,查看其权限,然后复制它。
也许可以上传几个文件,然后执行
find uploads -ls |less
Jagster
(Jakke Lehtonen)
16
您在修复一个您在执行其他操作时遇到的问题,而这是标准操作所需要的。即使使用了反向代理。
这就是为什么您离标准操作如此之远
因为有两种选择:
- 您遇到了一个别人都没有的 bug
- 您做了一些奇怪的事情
也许这是一个 bug。您可以通过进行一次标准的、安全的(在很多方面)安装,并同时正确连接您的反向代理来确认这一点。因为如果它仍然坏了,我敢打赌问题出在虚拟主机和/或端口上。但如果它工作正常……那么我们就回到了“奇怪”的选项——没有人知道您做了什么。
您看到问题所在了吗?
无论如何——使用反向代理将导致没有支持……这是这里的政策。但其他用户可以并且很可能提供帮助。
system
(system)
关闭
17
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.