我想将Node.js用作Share.js服务器,将Ruby用作前端。据我所知,Heroku只允许一个面向Web的进程称为“web”。有没有人有尝试这样做的经验?
答案 0 :(得分:9)
不,当您将代码推送到Heroku时,Heroku会检测应用程序类型并编译slug。您需要将它们作为单独的应用程序,并在两者之间定义API(并不总是坏事)
更新:这些天你可以'堆叠'构建包,例如Ruby + PHP,这样你就可以同时执行。有关如何在同一个应用程序中使用多个buildpack的信息,请参阅https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app。
答案 1 :(得分: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;它会让你按顺序安装buildpacks。根据您的应用程序,您可能需要查找没有验证步骤的语言构建包,即在NodeJS应用程序中检查package.json
文件。
答案 2 :(得分:1)
是的,只要你没有做一些非常棘手的事情,我相信它主要是 。我曾经部署了一个使用斯坦福的CoreNLP的Flask(Python)应用程序 - 它都是用Java编写的。您需要heroku-buildpack-multi。
添加此内容后,请务必制作.buildbacks
文件并添加Heroku github所需的所有构建包。
这避免了Heroku检测您的应用类型本身并使其从.buildpacks
文件安装所有必需的构建包。