Запустите два разных приложения Rails на одном выделенном сервере

У меня есть один выделенный сервер с настройками ниже

i3 - Dual Core - 3.06Ghz H/T
16GB RAM
500GB SATA2

Теперь я хочу выполнить два разных приложения Rails на одном выделенном сервере. Оба приложения отличаются друг от друга, но они используют общую базу данных.

Можно ли это сделать? Если да - как я могу это сделать? Является ли Phusion Passenger с Apache хорошим подходом? Если да - Как настроить два приложения на одном сервере Phusion Passenger?

Ответы

Ответ 1

Я расскажу, как я запускаю несколько приложений Rails на одном сервере Linux, используя Apache, Phusion Passenger и некоторую версию Ruby. У вас много вариантов, но это должно помочь вам начать работу. Многие из этих деталей взяты из установки script

Сначала установите Phusion Passenger.

> gem install passenger

Во-вторых, создайте модуль Apache 2 Passenger. Вы должны иметь возможность выполнить следующее script, установленное во время первого шага.

> passenger-install-apache2-module

Этот script скомпилирует модуль Apache 2 и объяснит, как настроить Apache. Если отсутствуют зависимости, script должен предложить несколько полезных советов о том, как их установить.

В-третьих, отредактируйте файл конфигурации Apache. Я должен добавить что-то вроде этого. (Просто используйте это для ссылок и не беспокойтесь о .rvm). Запуск script на втором шаге даст вам то, что вы можете скопировать и вставить.

LoadModule passenger_module /Users/me/.rvm/gems/ree/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
PassengerRoot /Users/me/.rvm/gems/ree/gems/passenger-3.0.9
PassengerRuby /Users/me/.rvm/wrappers/ree/ruby

В-четвертых, добавьте что-то подобное в ваш конфигурационный файл Apache для каждого приложения, которое вы хотите запустить.

<VirtualHost *:80>
  ServerName app1.example.com
  DocumentRoot /somewhere/app1/public    # <-- be sure to point to 'public'!
  <Directory /somewhere/app1/public>
     AllowOverride all              # <-- relax Apache security settings
     Options -MultiViews            # <-- MultiViews must be turned off
  </Directory>
</VirtualHost>

Если у вас есть два приложения Rails, совместно использующие одну базу данных, они будут иметь аналогичную информацию о соединении в config/database.yml

Ответ 2

Да, это определенно возможно. Я никогда не делал этого с Passenger + Apache, но я уверен, что это прекрасный способ. Я только делал это с помощью тонкого + nginx.

Ответ 3

Пассажирский фьюжн с Apache - это прочный подход. Тот факт, что они используют одну и ту же базу данных, не должен быть проблемой (просто убедитесь, что они не наступают друг на друга каким-либо образом).

Как правило, просто установите вещи как обычно, но посмотрите на виртуальные хосты на основе имен Apache:

http://httpd.apache.org/docs/2.2/vhosts/name-based.html