【问题标题】:Run Django and Node in a Heroku app simultaneously在 Heroku 应用程序中同时运行 Django 和 Node
【发布时间】:2014-03-21 17:39:27
【问题描述】:

我想在我的 heroku 实例上同时运行一个 django 应用程序和一个节点应用程序。

这是我的过程文件:

web: python manage.py runserver 0.0.0.0:$PORT
web: node bin/node_modules/app.js

但是,正如我所料,它看起来好像只运行节点应用程序。是否可以将 Heroku 配置为在同一个 procfile 中运行这两个进程,还是我需要做其他事情? (如果有别的,什么?我不希望有一个完全独立的 heroku 实例)。

你知道,因为 Heroku 的端口变量完全是内部的,我可以做类似 pass node app.js port = $PORT 之类的事情,我不介意,但我仍然希望将它们放在同一个点。

【问题讨论】:

  • 这不起作用,因为您覆盖了 'web' procfile 类型的值。如果你想分别运行它们(在不同的测功机上),你可以给它们一个名字(例如:pythonnode),然后运行heroku scale python=1 node=1

标签: python django node.js heroku


【解决方案1】:

我参加聚会有点晚了,但 Heroku 刚刚发布了一篇关于如何完成此任务的博客文章。

阅读here,但本质上,您将使用此custom buildpack 来设置子过程文件,如下所示:

过程文件:

web: bin/runsvdir-dyno

Procfile.web:

django: gunicorn path.to.wsgi:application --bind 127.0.0.1:$DJANGO_PORT
node: node server.js

【讨论】:

    【解决方案2】:

    你只需要两个不同的进程名:

    webpy: python manage.py runserver 0.0.0.0:$PORT
    webjs: node bin/node_modules/app.js
    

    (假设每个进程都正常工作)

    【讨论】:

    • 这让我很接近,但实际上我只是添加到 web:references ad heroku ps:scale web=2 以添加另一个 web dyno。
    【解决方案3】:

    还不能发表评论,但你试过了吗:

    web: python manage.py runserver 0.0.0.0:$PORT & node bin/node_modules/app.js
    

    【讨论】:

      【解决方案4】:

      正如我在评论中所说,如果您想要两个 Web 进程,则需要扩展您的应用程序进程管理器以包含两个 dyno:

      heroku ps:scale web=2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-04
        • 2020-10-10
        • 1970-01-01
        • 2016-03-30
        • 2021-04-16
        • 2020-09-20
        • 1970-01-01
        • 2014-11-03
        相关资源
        最近更新 更多