构建已完成,但“查看文档”链接已断开

问题描述

我已经安装了本地ReadTheDocs服务器,并且认为我已经接近使其工作了。但是,虽然我的文档项目的构建说明已完成,并且可以在readthedocs.org/media/html/cadd-faq/latest目录下看到生成文件,但构建页面上的“查看文档”链接生成404页面,其中包含以下调试信息。

Using the URLconf defined in readthedocs.urls,Django tried these URL patterns,in this order:

^$ [name='homepage'] 
^support/ [name='support'] 
^security/ 
^\.well-kNown/security.txt$ 
^search/$ [name='search'] 
^dashboard/ 
^profiles/ 
^accounts/ 
^accounts/ 
^notifications/ 
^accounts/gold/ 
^builds/ 
^500/$ 
^projects/ 
^api/v2/ 
^api/v2/docsearch/$ [name='doc_search'] 
^api/v2/search/$ [name='search_api'] 
^api-auth/ 
^api/v3/ 
^wipe/(?P<project_slug>(?:[-\w]+))/(?P<version_slug>(?:[a-z0-9A-Z][-._a-z0-9A-Z]*?))/$ [name='wipe_version'] 
^i18n/ 
^admin/ 
^media\/epub(?P<path>.*)$ 
^media\/htmlzip(?P<path>.*)$ 
^media\/json(?P<path>.*)$ 
^media\/pdf(?P<path>.*)$ 
style-catalog/$ 
^media/(?P<remainder>.+)$ [name='media-redirect'] 
^__debug__/ 

The current path,docs/cadd-faq/en/latest/,didn't match any of these.

我可以手动将浏览器指向URL“ ... / media / html / cadd-faq / latest / index.html”,该URL重定向到“ ... / static / html / cadd-faq / latest / index” .html”并查看sphinx生成内容,因此构建似乎确实成功了。但是这些页面没有我希望“查看文档”按钮发送给我的ReadTheDocs包装内容,因此这些URL当然也不是正确的。

这一切似乎都表明问题出在我的ReadTheDocs和/或Django配置中。任何有关如何解决该问题的指针将不胜感激。

因此,如果您仍然与我在一起,请仅对我的安装发表一些评论。我相信我忠实地遵循了https://docs.readthedocs.io/en/stable/custom_installs/local_rtd_vm.html(及相关页面)上的说明,但是,当然,由于回顾了一些严重的步骤,我可能会大失所望。我在Read the Docs local install: Celery ValueError: signal only works in main thread上获得了非常有用的帮助和自我回答的说明,通过该说明,我运行了Redis服务和芹菜工人,至少使我到达了一个开始看到我的项目的构建页面有任何进展的地方。 / p>

尽管如此,即使如此,我仍然需要一些步骤来获得“构建完成”结果。首先,我必须修改readthedocs.org/readthedocs/doc_builder/python_environments.py文件,以允许我在local_settings.py文件中指定HTTP_PROXY值,并将该值发送到pip install的--proxy参数。 (仅设置环境变量似乎不起作用。)其次,我不得不手动将django-storages软件包pip安装到readthedocs.org/venv环境中。第三,我不得不在我的sphinx conf.py文件添加master_doc规范,以处理以下事实:readthedocs认为认的sphinx master_doc是content.rst,但是我们的sphinx版本认为它是index.rst。

但这基本上就是我所做的,所以我看不到我的配置在哪里导致View Docs链接具有错误的URL,或者从模式中删除了“ ^ docs /” Django正在寻找。

我将很乐意发布我拥有的配置文件的副本,但是恐怕我不确定要发布的相关文件是什么。让我知道哪些文件包括我的python_environments.py代码更改的上下文差异,将有助于诊断我的问题,我将非常高兴在这里共享它们。

谢谢, 马尔科姆

解决方法

自版本5起,RTD的行为已更改(请参阅changelog)。过去,该文档曾被同步过,以将构建的文档复制到rtd-builds文件夹,然后从/ public_web_root /文件夹进行符号链接。情况不再如此。

从版本5开始,他们引入了称为El Proxito的代理中间件,该中间件在URL传递给nginx之前对其进行拦截,然后将其代理指向/ media /文件夹,如您所述,该文件夹包含内置文档。

RTD对自定义安装的支持一直都很乏善可陈,但是现在更糟了,因为他们还没有更新文档来解释如何正确使用El Proxito。 RTD的开发人员使用docker-compose工作流程进行设置,但这有其自身的问题,该特定模块的自述文件明确声明他们不建议将其用于自定义安装。因此,实际上,他们暂时让您自己离开了。

我建议您深入研究El Proxito,然后尝试将该中间件安装到您的Django配置中,以查看是否可以使用url代理。