Несколько сайтов в нескольких проектах на одном сервере rails - PullRequest
4 голосов
/ 07 марта 2012

Я искал в Интернете, но я могу найти только информацию о совместном использовании кода между несколькими сайтами и о разделении базы данных на изолированные модели. Это не то, что я хочу.

Я хочу запустить один сервер rails с одним DNS-адресом и одним портом - http://myportal.com - который будет обрабатывать несколько других сайтов - http://myportal.com/site1, http://myportal.com/site2 и т. Д.

Я хочу, чтобы у каждого сайта была своя собственная папка (и репозиторий SCM), своя база данных, своя собственная маршрутизация - у него своя все . То есть - я хочу иметь возможность разрабатывать каждый сайт как отдельный - это означает, что я должен иметь возможность запускать сайт site1 как http://localhost:3000, а не http://localhost:3000/site1.

На сервере корневой сайт (тот, который отвечает на адрес http://myportal.com должен быть тем, с которого я запускаю сервер, и он должен знать абсолютные пути других сайтов (которые будут в разных каталогах на сервер, а не в дочерних каталогах корневого сайта) и предоставить информацию о маршрутизации для них - но он также должен связываться с файлами других сайтов routes.rb. Это означает, что если я перейду к адресу http://myportal.com/site1/books/, корневой сайт должен обрабатывать http://myportal.com/site1, а site1 должен обрабатывать /books/. Корневой сайт не должен знать о внутренней структуре маршрутизации других сайтов.

Возможно ли это? Сейчас я запускаю сервер rails, который поставляется с гемом (rails server из командной строки) на сервере Windows Server 2008, но я готов установить другой сервер, если это необходимо для достижения цели, которую я описал.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Вы должны быть в состоянии сделать это с Apache или nginx и, возможно, IIS, если настроены правильно.Я наиболее знаком с Apache и гибкими mod_rewrite и mod_proxy компонентами, которые могут облегчить это.

Идея состоит в том, что вы переписываете http://example.com/, чтобы быть http://example.com:3000/и http://example.com/site2 как http://example.com:3001/site2 и т. д.

Это также возможно сделать с помощью Passenger и некоторого умного использования директивы VirtualHost, но вам, возможно, придется поиграться, чтобы получить конфигурацию, которая работает длявы.Помните, что перезапись заголовков для внутренней маршрутизации не влияет на итоговый HTML, который излучают ваши серверы.

0 голосов
/ 16 апреля 2013

Создать символическую ссылку:

cd ~/Sites
ln -s /Users/hg/Developer/Rails/railsproj1/public ./railsproj1

изменить файл конфигурации apache

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /Users/hg/Sites
  <Directory /Users/hg/Sites>
    AllowOverride All
    Options Indexes FollowSymLinks MultiViews
    Order allow,deny
    Allow from all
  </Directory>
  RailsBaseURI /railsproj1
  RailsEnv development
</VirtualHost>

Источник ответа: http://collab.stat.ucla.edu/users/jose/weblog/9e335/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...