2015-04-03 2 views
0

Я ищу, чтобы создать общую среду размещения, позволяющую нескольким приложениям RoR работать хорошо изолированными друг от друга (и лежащими в основе os), запуская разные версии RoR как обязательный.Как создать совместную среду с несколькими приложениями Ruby on Rails

Мой вопрос: можно ли это сделать без нужно прибегать к OpenVZ/виртуализации?

Если да, то подходит ли следующий подход - что потребуется для того, чтобы приложения были хорошо изолированы друг от друга и ОС?

  • NGinx, один экземпляр для балансировки нагрузки
  • Unicorn, множественные экземпляры, созданные Nginx для обработки запросов (способные работать различные версии RoR
+2

Я использую RVM в рабочей среде, с Apache и Passenger, с несколькими версиями Rails и различными gemset. – pierallard

+0

@ForgetTheNorm RVM выглядит действительно хорошо, спасибо за это. Из интереса, какая часть вашей системы справляется с ограничением ресурсов ... используете ли вы для этого Passenger Enterprise? – James

+0

RVM не управляет ограничениями ресурсов. Это просто менеджер для рубиновых сред. Фактически, ваш дедамон базы данных делает это, пассажир тоже, Apache тоже. – pierallard

ответ

0

(Rbenv или РВМ) и Bundler позволяют изолировать драгоценные камни разных приложений Rails. Таким образом, проблем с этим не будет.

В каждом приложении для рельсов будет свой экземпляр Unicorn (пума, тонкий, что угодно).

Nginx будет иметь отдельный виртуальный хост на основе имени домена для каждого приложения rails и будет перенаправлять запросы вверх по течению (Unicorn/Puma).

Каждое приложение-рельс должно иметь отдельную базу данных на сервере базы данных.

Таким образом, я не вижу проблем с изоляцией нескольких приложений с рельсами.

Для дополнительной изоляции вы можете использовать Docker, поэтому каждое приложение будет работать в отдельном контейнере.

+0

Большое спасибо за информацию - только то, что я был после. – James