Несколько приложений Ruby на одном порту, справка RackBaseURI

#ruby #passenger

#ruby #пассажир

Вопрос:

Я пытаюсь заставить два приложения Ruby работать с одного порта. Я вообще не разбираюсь в серверных технологиях, так что простите мое невежество. Я пытался следовать этому документу:

http://www.modrails.com/documentation/Users guide Apache.html

разделы 4.1 — 4.3, но я продолжаю что-то путать. Я попытался немного упростить, поэтому вот моя ситуация. Здесь у меня есть два простых приложения для rackup:

/Пользователи / dan/webapps/test1 /Users/dan/webapps/test2

У каждого из них есть «config.ru » файл, общедоступная папка / и папка tmp / с «restart.txt «, как указано. Они оба работают сами по себе.

В моем файле httpd.conf есть следующее:

 <VirtualHost *:80>
  ServerName localhost
  DocumentRoot /Users/dan/webapps
  <Directory /Users/dan/webapps>
      Allow from all
  </Directory>
  RackBaseURI /test1
  <Directory /Users/dan/webapps/test1>
    Options -MultiViews
  </Directory>
  RackBaseURI /test2
  <Directory /Users/dan/webapps/test2>
    Options -MultiViews
  </Directory>
</VirtualHost>
  

Я запускаю apache, а затем помещаю это в свой браузер:http://localhost/test1 . Я получаю:

Запрещено

У вас нет разрешения на доступ к / test1 на этом сервере.

Я не удивлен, что это не работает, потому что я должен настроить символическую ссылку, но я не знаю, как применить это к моей настройке. Вот пример из документа:

ln -s / webapps / rackapp / общедоступный / веб-сайты / phusion/rack

Можете ли вы рассказать мне, как настроить символические ссылки, и дайте мне знать, если увидите что-нибудь еще неправильное? Пожалуйста, дайте ответ «для чайников», этот материал поражает мой разум. Спасибо!

Комментарии:

1. Способен ли ваш сервер apache считывать данные из этих каталогов?

Ответ №1:

Чтобы создать символические ссылки, попробуйте это:

 ln-s /Users/dan/webapps/test1 /Users/dan/webapps/test1/public
ln-s /Users/dan/webapps/test2 /Users/dan/webapps/test2/public
  

Однако, как упоминал Крис Польцер, вам также следует проверить, может ли ваш пользователь apache читать из этих каталогов.

Если вы не знаете, как это сделать, тогда опубликуйте выходные данные этих команд:

 ls -l /Users/dan/webapps/test1
ls -l /Users/dan/webapps/test2.
ps -aux | grep http
ps -aux | grep apache
  

Вам также может потребоваться проверить разрешения всех родительских каталогов. Т.е. /Users, /Users/dan и /Users /dan/webapps. Смотрите: http://www.modrails.com/documentation/Users guide Apache.html#_deploying_to_a_virtual_host_8217_s_root_2

Ответ №2:

фила, я думаю, у вас могут быть обратные пути в символической ссылке. Чтобы это заработало, я изменил названия ссылок для наглядности:

 <VirtualHost *:80>
  ServerName localhost
  DocumentRoot /Users/dan/webapps
  <Directory /Users/dan/webapps>
      Allow from all
  </Directory>
  RackBaseURI /test1link
  <Directory /Users/dan/webapps/test1>
    Options -MultiViews
  </Directory>
  RackBaseURI /test2link
  <Directory /Users/dan/webapps/test2>
    Options -MultiViews
  </Directory>
</VirtualHost>
  

и затем символические ссылки:

ln -s /Users/dan/webapps/test1/public /Users/dan/webapps/test1link

ln -s /Users/dan/webapps/test2/public /Users/dan/webapps/test2link

Затем эти URL-адреса работают должным образом в браузере.

http://localhost/

http://localhost/test1link

http://localhost/test2link