【问题标题】:Can I use two languages in a Heroku app?我可以在 Heroku 应用程序中使用两种语言吗?
【发布时间】:2012-03-30 05:05:18
【问题描述】:

我想使用 Node.js 作为 Share.js 服务器,使用 Ruby 作为前端。据我所知,Heroku 只允许一个名为“web”的面向 Web 的进程。有没有人尝试做这样的事情?

【问题讨论】:

  • 我认为(不是答案)您将需要一个付费的单独工作进程来执行此操作。
  • 您可以 AFAIK 只有一个 Web 进程。您可以拥有额外的工作进程,但它们很可能不会获得有效的监听端口。

标签: ruby node.js heroku


【解决方案1】:

不,当您将代码推送到 Heroku 并编译 slug 时,Heroku 会检测应用程序类型。您需要将它们作为单独的应用程序,并在两者之间定义 API(并不总是一件坏事)

更新:现在您可以“堆叠”构建包,例如 Ruby + PHP,因此您可以同时执行。请参阅https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app,了解如何在同一个应用中使用多个构建包。

【讨论】:

  • 并非总是不可能,完全放弃前请看我的回答。
【解决方案2】:

是的,我相信大部分都是可能的,只要你没有做一些非常棘手的事情。我曾经部署了一个使用斯坦福 CoreNLP 的 Flask (Python) 应用程序——它都是用 Java 编写的。你需要heroku-buildpack-multi

添加后,确保创建一个.buildbacks 文件并从Heroku github 添加您需要的所有构建包。

这会绕过 Heroku 自行检测您的应用类型,并使其从 .buildpacks 文件安装所有必要的构建包。

【讨论】:

【解决方案3】:

需要注意的是,从技术上讲,您可以在一个应用程序上安装两种语言——但我不确定是否可以同时运行它们。我制作了这个 buildpack 来结合 NodeJS 和 PHP(这样我就可以在 slug 编译期间运行 Grunt):

https://github.com/gcpantazis/heroku-buildpack-php-gruntjs

语言检测通常相当愚蠢;它将寻找指示 lang 的文件,即 index.php 或 rakefile。您必须更改检测箱才能让您的代码通过。

更新:

更好的是,考虑使用https://github.com/ddollar/heroku-buildpack-multi;它会让你按顺序安装构建包。根据您的应用程序,您可能需要找到没有验证步骤的语言构建包,即在 NodeJS 应用程序中检查 package.json 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多