3

我编写了一个实时 Web 应用程序,其中包含以下内容:

  1. Rails 提供网页服务(监听 80 端口)
  2. Nodejs处理实时逻辑(监听8888端口)

因此,在我的 rails 应用程序提供的特定页面上,JS 将使用 socket.io 建立与我的 nodejs 实例的连接,以允许实时 http 推送。

目前,Nodejs 通过更新 rails 数据库与 Rails 进行通信。(我知道这是贫民区,但它有效)。

我有哪些部署选项?

  1. 我之前在 heroku 上部署过简单的 Web 应用程序,我真的很喜欢这种简单性。
  2. 我还部署了一个具有类似功能的网络应用程序(除了它由 django + nodejs 组成)。我使用 HAProxy 进行反向代理,以处理我机器上正确进程的流量方向。但是,我将其部署在 VPS 服务器上。

注意:丑陋可能围绕着:

  • 我依赖一个普通的数据库
  • 这些进程正在侦听不同的端口
4

2 回答 2

1

我们有这个确切的问题。我们将它们部署到单独的 Heroku 应用程序中,但将它们保留在相同的代码库中。http://techtime.getharvest.com/blog/deploying-multiple-heroku-apps-from-a-single-repo概述了如何做到这一点。

  1. 手动设置 buildpack
  2. 设置一个可以在第 3 步中重复使用的配置变量
  3. 创建您的 Procfile 使用的自定义 Web 脚本

bin/web 中的自定义脚本

#!/bin/bash

if [ "$RAILS_DEPLOYMENT" == "true" ]; then
  bundle exec rails server -p $PORT
else
  node node/index.js
fi

和Procfile:

web: bin/web
于 2013-08-14T13:47:44.643 回答
0

我会考虑将这两个应用程序设置为不同子域上的单独 Heroku 应用程序,并将它们都放在端口 80 上。它们之间的通信通过共享数据库进行,因此它们不需要驻留在同一台机器甚至数据中心上。Socket.io 在所有浏览器上都支持跨域请求,因此不会造成任何问题。

于 2012-03-26T20:52:48.320 回答