【问题标题】:Deploy readthedocs on production (nginx + gunicorn)在生产环境中部署 readthedocs(nginx + gunicorn)
【发布时间】:2018-02-09 21:43:55
【问题描述】:

我正在尝试将 Read The Docs (http://docs.readthedocs.io/en/latest/install.html) 项目部署到生产服务器,以供我工作的公司内部使用。

我按照上面 url 中的安装步骤进行操作,当我使用“python manage.py 0.0.0.0:8000”运行时它可以工作,但是当我尝试使用 Nginx + Gunicorn + Supervisord 进行部署时,构建没有开始,它一直显示'Triggered version latest (html)'

在发球时我收到了以下错误,但我不知道我做错了什么。

Read The Docs 可以在 Nginx + Gunicorn + Supervisord 上运行吗?我必须安装或配置 celery 吗?

提前致谢!

[09/Feb/2018 15:29:59] "GET /api/v2/project/2/ HTTP/1.1" 403 39
[09/Feb/2018 15:29:59] readthedocs.projects.tasks:159[15266]: ERROR An unhandled exception was raised during build setup
Traceback (most recent call last):
  File "/webapps/readthedocs/src/readthedocs/projects/tasks.py", line 144, in run
    self.project = self.get_project(pk)
  File "/webapps/readthedocs/src/readthedocs/projects/tasks.py", line 299, in get_project
    project_data = api_v2.project(project_pk).get()
  File "/webapps/readthedocs/rtd_env/local/lib/python2.7/site-packages/slumber/__init__.py", line 155, in get
    resp = self._request("GET", params=kwargs)
  File "/webapps/readthedocs/rtd_env/local/lib/python2.7/site-packages/slumber/__init__.py", line 101, in _request
    raise exception_class("Client Error %s: %s" % (resp.status_code, url), response=resp, content=resp.content)
HttpClientError: Client Error 403: http://localhost:8000/api/v2/project/2/
[09/Feb/2018 15:29:59] celery.app.trace:248[15266]: ERROR Task readthedocs.projects.tasks.update_docs[1cf185cd-57dd-478b-8689-bb795f26543c] raised unexpected: AttributeError("'UpdateDocsTask' object has no attribute 'setup_env'",)
Traceback (most recent call last):
  File "/webapps/readthedocs/rtd_env/local/lib/python2.7/site-packages/celery/app/trace.py", line 374, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/webapps/readthedocs/src/readthedocs/projects/tasks.py", line 163, in run
    build_id=build_pk,
AttributeError: 'UpdateDocsTask' object has no attribute 'setup_env'

【问题讨论】:

    标签: python django nginx read-the-docs


    【解决方案1】:

    我每次使用 8000 以外的端口时也遇到了同样的问题。最后我使用了 8000 端口。你不需要配置 celery。我建议再次检查您的本地设置(readthedocs/settings/local_settings.py)。特别是PRODUCTION_DOMAIN 设置。

    我的看起来像这样 -

    PRODUCTION_DOMAIN = "mydomain.com"
    SITE_ID = 2  # i have overided it from 1 to 2. 
    ALLOW_PRIVATE_REPOS = True
    SECRET_KEY = "some random secret key"
    PUBLIC_API_URL = 'http://{0}'.format(PRODUCTION_DOMAIN)
    

    【讨论】: