Развертывание Rails и Nodejs - PullRequest
3 голосов
/ 15 марта 2012

Я написал веб-приложение в реальном времени, которое состоит из следующего:

  1. Rails для обслуживания веб-страниц (прослушивает порт 80)
  2. Узлы для обработки логики в реальном времени (прослушивает порт 8888)

Таким образом, на определенной странице, обслуживаемой моим приложением rails, JS будет использовать socket.io, чтобы установить соединение с моим экземпляром nodejs, чтобы разрешить HTTP-передачу в реальном времени.

В настоящее время Nodejs связывается с Rails, просто обновляя базу данных rails. (Я знаю, что это гетто , но оно работает).

Какие у меня есть варианты для развертывания?

  1. Я уже развернул простые веб-приложения на heroku, и мне очень нравится эта простота.
  2. Я также развернул веб-приложение с аналогичной функциональностью (за исключением того, что оно состоит из django + nodejs). Я использовал HAProxy для обратного проксирования, чтобы управлять направлением трафика к правильному процессу на моей машине. Однако вместо этого я развернул это на сервере VPS.

Примечание: уродство, вероятно, будет вращаться вокруг:

  • Я полагаюсь на общий БД
  • Эти процессы прослушивают разные порты

Ответы [ 2 ]

1 голос
/ 14 августа 2013

У нас была именно эта проблема.Мы развернули их для разделения приложений Heroku, но сохранили их в одной и той же базе кода.http://techtime.getharvest.com/blog/deploying-multiple-heroku-apps-from-a-single-repo описывает, как это сделать.

  1. Вручную установите buildpack
  2. Установите переменную конфигурации , которую вы можете установитьповторно используйте в шаге № 3.
  3. Создайте собственный веб-скрипт, который ваш Procfile использует

Пользовательский скрипт в 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
0 голосов
/ 27 марта 2012

Я хотел бы рассмотреть возможность установки этих двух приложений в качестве отдельных приложений Heroku на разных поддоменах и просто иметь их оба на порте 80. Связь между ними происходит через общую базу данных, поэтому им не нужно находиться на одной машине или Дата центр. Socket.io поддерживает междоменные запросы во всех браузерах, поэтому проблем не должно быть.

...