Проблема развертывания Rails с Passenger на Mac OS X Leopard Server - PullRequest
2 голосов
/ 12 июня 2010

Я вращаю свои колеса ... Apache работает и обслуживает статические html, png и т. Д. В обычном режиме.Пытаясь заставить Пассажира обслуживать приложение rails из www.mydomain.com/rails/

в том виде, в каком оно есть, когда я пытаюсь запустить свое приложение: www.mydomain.com/rails/myapp/railsclassname Я получаю только ошибки Apache 403.Ничего в журнале производства myapp.

Apache2 access.log:

"GET /rails/ HTTP/1.1" 403 1085

Apache2 error.log:

[Fri Jun 11 22:44:01 2010] [error] [client 10.0.1.41] File does not exist: /Library/WebServer/wwwroot/rails/railsclassname

я даже пробовал www.mydomain.com/myapp/classname

Пассажир, очевидно, не перенаправляет запросы, сделанные в мою подпапку rails/, в мое приложение rails.не уверен, где я облажался.самая очевидная вещь - " Пассажир, кажется, не запускает " ... инструкции, которые я выполнил, просто скажите sudo apachectl graceful, что я и сделал (а также остановил / начал).новичок в этом, так что будь осторожен со мной!

Вот некоторая информация, которая может оказаться полезной.рад предоставить больше по мере необходимости ...


Согласно инструкциям @ Пассажирский сайт Я создал символическую ссылку из /Library/WebServer/myapp/rails -> /Library/WebServer/rails/myapp/public

myhost:myapp joe$ passenger-config --root
/Library/Ruby/Gems/1.8/gems/passenger-2.2.14
myhost:myapp joe$ passenger-status
ERROR: Phusion Passenger doesn't seem to be running.

apollo: myapp joe $ cat /etc/httpd/httpd.conf

...
<removed for brevity>
...
# Copied From Passenger Installer
   LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.14/ext/apache2/mod_passenger.so
   PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.14
   PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
# End Passenger Installer

  NameVirtualHost *

   <VirtualHost *:80>
      ServerName www.mydomain.com
      DocumentRoot /Library/WebServer/rails/myapp/public    # <-- be sure to point to 'public'!
      RackBaseURI /rails
      <Directory /Library/WebServer/rails/myapp/public>
         AllowOverride all              # <-- relax Apache security settings
         Options -MultiViews            # <-- MultiViews must be turned off
         order allow,deny
         Allow from all
      </Directory>
   </VirtualHost>

Этот последний бит из NameVirtualHost собран из нескольких онлайн-материалов, которые я нашел ...как я отчаянно пытался найти что-нибудь / что-нибудь, что покажет, что у Пассажира, по крайней мере, есть пульс!?!

1 Ответ

2 голосов
/ 12 июня 2010

Итак, у вас есть

www.mydomain.com
www.mydomain.com/rails

Они оба указывают на разные веб-сайты (давайте назовем их основными и рельсами), код для каждого сайта может быть сохранен в файловой системе следующим образом:

/Library/WebServer/main/
/Library/WebServer/rails/

Мы создаем символическую ссылку из общей папки вашего rails-приложения в папку с именем rails в вашем основном приложении:

ln -s /Library/WebServer/rails/public /Library/WebServer/main/rails

Затем мы создаем VirtualHost для основного сайта (а не rails-одного)и я предполагаю, что основной сайт не является rails) и добавьте приложение rails в качестве вспомогательного URI, например так:

<VirtualHost *:80>
  ServerName www.mydomain.com
  DocumentRoot /Library/WebServer/main
  <Directory /Library/WebServer/main>
    Allow from all
  </Directory>

  RackBaseURI /rails
  <Directory /Library/WebServer/main/rails>
    Options -MultiViews
  </Directory>
</VirtualHost>

(если у вас уже настроен VirtualHost для вашего основного веб-сайта, вывместо этого можно добавить к этому RackBaseURI и предыдущее объявление Справочника.)

Теперь перезапустите apache, и вы сможете перейти на:

www.mydomain.com/rails

и увидеть страницу «Добро пожаловать в Rails»,или:

www.mydomain.com/rails/controllername

Надеюсь, это поможет.

...