Heroku技术细节

时间:2014-09-07 04:49:07

标签: node.js heroku paas

Heroku运行的VM有哪些规格?我的二进制可执行文件之一无法正常工作(在我的计算机上工作得很好),我认为这可能是由于技术不匹配造成的。

当我在我的可执行文件上运行file时,我得到Mach-O 64-bit executable x86_64

  • Heroku是否使用带有x86架构的64位计算机?
  • 他们使用什么样的nix?
  • 在我的应用程序本地执行正常的(C ++)可执行文件还有什么其他原因,但Heroku本身没有?

我得到的错误是胡言乱语:

2014-09-07T04:38:32.909511+00:00 app[web.1]: ./process: 1: �����#�
                                                                  ��!H__PAGEZERO�__TEXT�__text__TEXT�a�d�a�__stubs__TEXT: not found
2014-09-07T04:38:32.909519+00:00 app[web.1]: ./process: 3: Syntax error: "(" unexpected
2014-09-07T04:38:32.909521+00:00 app[web.1]:
2014-09-07T04:38:32.909517+00:00 app[web.1]: ./process: 2: ��: not found

1 个答案:

答案 0 :(得分:0)

Heroku应用程序部署在Cedar Stack上,基于64位Ubuntu 10.04。新的Cedar-14堆栈基于Ubuntu 14.04。

通过部署一个简单的Node.js应用程序并使用heroku run bash,我们可以检查实时环境:

$ heroku run bash
Running `bash` attached to terminal... up, run.2785

~ $ which node
/app/vendor/node/bin/node

~ $ file /app/vendor/node/bin/node
/app/vendor/node/bin/node: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

~ $ uname -a
Linux 9cf0ac66-9131-4a19-8f4a-f4a132cf3db8 3.8.11-ec2 #6 SMP Tue Jul 22 22:02:15 UTC 2014 x86_64 GNU/Linux

重要的是要注意Heroku 旨在运行预编译的可执行文件。相反,它旨在将您的应用程序编译为Heroku Buildpacks的构建阶段的一部分。

有关更多详细信息,请查看The Twelve Factor App的“构建,发布,运行”部分 - 使用像Heroku这样的PaaS必须遵循的一组应用程序最佳实践。