Развертывание Rails на Win32. Лучшие практики: Lighty + Sgci
Я получил несколько замечательных рекомендаций от пользователей этого сайта, и я думаю, что некоторые продвинутые люди из Rails могут помочь мне в решении следующей проблемы.
Я пытаюсь развернуть простое приложение Rails на сервере win32.
Я тщательно прорабатывал эти инструкции (см. http://functionalelegant.blogspot.com/2008/05/deploying-rails-on-windows.html) для развертывания приложения Win32 Rails.
Я начал с более-менее чистой установки Windows, затем скачал и установил
- Рубин
- LightTPD
- Рельсы
- Zed's SCGI Rails Runner
- Инструменты комплекта ресурсов Windows Server 2003
- 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, и если вам нужна дополнительная помощь, дайте мне знать. Я был бы рад помочь.