部署Rails和Nodejs

时间:2012-03-15 06:57:24

标签: ruby-on-rails node.js heroku haproxy

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

  1. 用于提供网页的Rails(侦听端口80)
  2. Nodejs处理实时逻辑(侦听端口8888)
  3. 因此,在我的rails应用程序提供的特定页面上,JS将使用socket.io建立与我的nodejs实例的连接,以允许实时http推送。

    目前,Nodejs只需更新rails数据库即可与Rails通信。 (我知道这是贫民区但它确实有效。)

    我有哪些部署选项?

    1. 之前我已经在heroku上部署了简单的web应用程序,我非常喜欢简单。
    2. 我还部署了一个具有类似功能的网络应用程序(除了它由django + nodejs组成)。我使用HAProxy进行反向代理,以处理流量到我机器上正确进程的方向。但是,我将其部署在VPS服务器上。
    3. 注意:丑陋可能围绕着:

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

2 个答案:

答案 0 :(得分:1)

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

  1. Manually set the buildpack
  2. 设置您可以在步骤3中重复使用的a config variable
  3. 创建Procfile使用的自定义Web脚本
  4. 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
    

答案 1 :(得分:0)

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