我正在尝试配置一个设置,其中 gitlab-pages 是来自单独 gitlab 实例的服务器。我已按照官方文档中描述的步骤进行操作(所有步骤均使用 NFS 共享,并且 git 用户在两个实例上的 UID 相同等),但最后当我尝试访问该站点时,出现了 HTTP 500 gitlab 错误。
我在 gitlab-pages 实例上的日志(我已将日志中的正确域替换为用户名.pages.mydomain.com):
{"error":"permission denied","level":"error","msg":"requested filepath \"/mnt/pages/@hashed/db/b1/dbb1ded63bc70732626c5dfe6c7f50ced3d560e970f30b15335ac290358748f6/pages_deployments/1/artifacts.zip\" not in allowed paths: \"/var/opt/gitlab/gitlab-rails/shared/pages\"","time":"2021-05-10T11:50:17Z"}
{"error":"httprange: new resource 403: \"403 Forbidden\"","host":"username.pages.mydomain.com","level":"error","msg":"vfs.Root","path":"/pages-test","time":"2021-05-10T11:50:17Z"}
{"content_type":"text/html; charset=utf-8","correlation_id":"01F5B1T63QV5FGFRGR6YPYWWXM","duration_ms":6,"host":"username.pages.mydomain.com","level":"info","method":"GET","msg":"access","pages_host":"username.pages.mydomain.com","pages_https":true,"pages_project_id":132,"pages_project_prefix":"/pages-test/","pages_project_serving_type":"zip","proto":"HTTP/1.0","referrer":"","remote_addr":"210.135.57.148","remote_ip":"210.135.57.148","status":500,"system":"http","time":"2021-05-10T11:50:17Z","ttfb_ms":6,"uri":"/pages-test","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36","written_bytes":2905}
我已检查过的内容:
- Gitlab CI/CD 使用适当的权限和用户创建新的静态文件git双方都可以从该目录进行读写
- gitlab-secrets.json 在两个实例上是相同的(正如文档所建议的)
- 项目范围是公开的(没有访问控制)
该错误似乎指向文件路径错误,但我在互联网上找不到有关该错误的任何信息。
答案1
我也遇到了同样的问题!这篇文章有点旧了,但也许今天还有其他人也遇到了同样的问题。
我假设您/mnt/pages
通过网络在主 gitlab 实例和页面服务器之间共享了目录。
在我的设置中,GitLab 服务器是从源代码安装的,而我使用 docker 运行 Pages 服务器。在我的 GitLab 服务器上,我将pages.path
和pages.local_store.path
设置为/mnt/pages
。在 Pages 服务器上,我将其/mnt/pages
作为卷安装在默认目录中/var/opt/gitlab/gitlab-rails/shared/pages
,因此没有在这些位置调整 gitlab.rb 文件(这里不是 .yml,因为这不是从源代码构建的,而是 docker 容器)。
通过此设置,我也遇到了与您完全相同的错误!
解决方案是简单地将/mnt/pages
Docker 容器中的目录挂载到/mnt/pages
. 在 gitlab.rb 中,当然,gitlab_rails['pages_local_store_path']
也gitlab_rails['pages_path']
必须将其设置为./mnt/pages
有了这个,我就可以正常工作了。