【问题标题】:How does deploying a Node.js app using Strongloop on Heroku work?在 Heroku 上使用 Strongloop 部署 Node.js 应用程序是如何工作的?
【发布时间】:2013-08-01 05:15:13
【问题描述】:
有实际经验的人能否解释一下这些层如何相互交互,以及工作设置(从开发到生产)实际上应该如何设置?
我知道有用于在 Heroku 上安装 Strongloop 的构建包。而实际应用的部署是通过 git push 完成的。
您可以解决的一些具体问题...
- 如何才能(或多或少)在本地和 Heroku 拥有相同的环境。
- 设置Strongloop Node后,服务器环境是否保持原状?还是每次我部署更新时都会重新创建它? (如果是,怎么会?)
- slnode 是如何融入图片的
- 我可以从开发机器连接到 Heroku 托管的数据库吗?
我希望这个问题的答案可以为像我这样正在努力理解所有部分如何组合在一起的人提供指导。
【问题讨论】:
标签:
node.js
heroku
deployment
paas
strongloop
【解决方案1】:
我知道有用于在 Heroku 上安装 Strongloop 的构建包。而实际应用的部署是通过 git push 完成的。
您不需要我们的 buildpack,是的,您使用 git push 进行部署。
我怎样才能(或多或少)在本地和 Heroku 拥有相同的环境。
多多少少?你可以在你的 Mac 笔记本电脑上开发,然后推送到 Heroku,使用相同版本的节点,或者你可以更像 Heroku,使用 Linux,或者......你想复制 Heroku 环境到底是什么?
设置Strongloop Node后,服务器环境是否保持原状?还是每次我部署更新时都会重新创建它? (如果是,怎么会?)
不确定您指的是什么设置。
slnode如何融入图片
没有。
我可以从开发机器连接到 Heroku 托管的数据库吗?
不知道,抱歉,请尝试 Heroku 支持页面来解决这类特定于 Heroku 的技术问题?
我在http://docs.strongloop.com/display/DOC/Heroku 关注页面底部的文档,查找“创建 Procfile 并部署”,它对我来说工作正常。
【解决方案2】:
快速解答
- 使用 Vagrant,下载一个 Debian 6 机器,然后在其中安装您需要的任何东西,记得检查一下 Heroku 使用的 Node.js 版本。
- 它将被部分重建,您的 npm 依赖项将被重新下载,您的应用程序将被重建等等。
- 您可以在您的开发机器上使用
slnode。但是,如果需要在测功机上使用 slnode,请分叉构建包并安装 slnode 作为其中的一部分。
- 您可以从任何网络连接的服务器或 PC 连接到 Heroku 上托管的数据库,您将获得一个 ip 和凭据。
构建包
我不确定构建包的实际限制,但它几乎可以做任何你可以在 Debian 6 虚拟化环境中使用共享内核做的事情。 (OpenVZ VPS 中的 Debian 6 实例)
- 将构建包视为解决依赖关系的低级依赖关系管理器,例如 node.js、Redis、Apache2 等。
- 他们还构建了文件系统结构、ENV 变量等环境。
Heroku 基础架构
Heroku 使用 AWS 作为其原始硬件提供商,AWS 在虚拟化硬件 (VPS) 中提供全新的操作系统安装
Heroku 在原始操作系统之上构建 dyno,猜测它在至少 128 个 dyno 之间共享一个操作系统。
每个 dyno 都与其他 dyno 隔离,它具有内置的通用软件,例如 ls,但构建包的职责是为您的应用程序安装任何其他软件,例如 Node.js。
Heroku 的节点构建包,安装 Node.js,并运行 npm。