Развертывание Rails на Win32. Лучшие практики: Lighty + Sgci

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

Я пытаюсь развернуть простое приложение Rails на сервере win32.

Я тщательно прорабатывал эти инструкции (см. http://functionalelegant.blogspot.com/2008/05/deploying-rails-on-windows.html) для развертывания приложения Win32 Rails.

Я начал с более-менее чистой установки Windows, затем скачал и установил

  1. Рубин
  2. LightTPD
  3. Рельсы
  4. Zed's SCGI Rails Runner
  5. Инструменты комплекта ресурсов Windows Server 2003
  6. Ruby/DBI ADO пакет

После этого я сделал следующее:

Я закомментировал строку в самоцвете SCGI (которая на самом деле вызывала проблемы).

Я создал структуру каталогов, как предложено, с папками для журналов.

Я изменил файл scgi.yaml и файлы конфигурации Lighty, чтобы отразить мои настройки среды.

После этого я написал пакетные сценарии для запуска Lighty и процесса SGCI. Кажется, они работают правильно. Однако внутри app-errors.log появляются следующие строки:

2009-05-15 16:48:06: (mod_scgi.c.2645) fcgi: got a FDEVENT_ERR. Don't know why. 
2009-05-15 16:48:06: (mod_scgi.c.2469) emergency exit: scgi: connection-fd: 7 fcgi-fd: 8 

Наконец, когда я перехожу на http://localhost:xxxx/, я просто вижу пустую страницу. Обновление: я только понял, что пустая страница только появилась. Просмотр источника выявил следующую проблему:

2C:/Ruby/lib/ruby/1.8/drb/drb.rb:573:in `load'":C:/Ruby/lib/ruby/1.8/drb/drb.rb:612:in `recv_request'":C:/Ruby/lib/ruby/1.8/drb/drb.rb:911:in `recv_request'"?C:/Ruby/lib/ruby/1.8/drb/drb.rb:1530:in `init_with_client'"<C:/Ruby/lib/ruby/1.8/drb/drb.rb:1542:in `setup_message'"6C:/Ruby/lib/ruby/1.8/drb/drb.rb:1494:in `perform'"8C:/Ruby/lib/ruby/1.8/drb/drb.rb:1589:in `main_loop'"3C:/Ruby/lib/ruby/1.8/drb/drb.rb:1585:in `loop'"8C:/Ruby/lib/ruby/1.8/drb/drb.rb:1585:in `main_loop'"4C:/Ruby/lib/ruby/1.8/drb/drb.rb:1581:in `start'"8C:/Ruby/lib/ruby/1.8/drb/drb.rb:1581:in `main_loop'"2C:/Ruby/lib/ruby/1.8/drb/drb.rb:1430:in `run'"4C:/Ruby/lib/ruby/1.8/drb/drb.rb:1427:in `start'"2C:/Ruby/lib/ruby/1.8/drb/drb.rb:1427:in `run'"9C:/Ruby/lib/ruby/1.8/drb/drb.rb:1347:in `initialize'"2C:/Ruby/lib/ruby/1.8/drb/drb.rb:1627:in `new'"<C:/Ruby/lib/ruby/1.8/drb/drb.rb:1627:in `start_service'"MC:/Ruby/lib/ruby/gems/1.8/gems/scgi_rails-0.4.3/lib/scgi.rb:402:in `run'"HC:/Ruby/lib/ruby/gems/1.8/gems/scgi_rails-0.4.3/bin/scgi_service:61"*C:/Ruby/bin/scgi_service:19:in `load'" C:/Ruby/bin/scgi_service:19:   mesg" too large packet

Обратите внимание, что 'ruby script / server' работает просто отлично, но страницу не видно снаружи.

Есть идеи? Пожалуйста, дайте мне знать, если на вас что-нибудь выпрыгнет.

1 ответ

Решение

Я написал главу для этого в разделе "Развертывание Rails-приложений". http://www.pragprog.com/titles/fr_deploy/deploying-rails-applications

По сути, вам нужны mongrel, mongrel_service и apache 2.2 с mod_proxy_balancer для Windows.

Вы устанавливаете 2 или более экземпляров своего приложения, когда Mongrel работает на отдельных портах. Вы устанавливаете сервисы на автозапуск.

Затем вы настраиваете Apache для баланса с ними.

Все это изложено в книге, и у меня есть несколько старых статей на моем веб-сайте - если вы будете искать "разбивку рельсов на окнах", вы найдете довольно устаревшие материалы. Путь apache + mongrel - лучший способ для Windows, и если вам нужна дополнительная помощь, дайте мне знать. Я был бы рад помочь.

Другие вопросы по тегам