Rails 3 - Windows + Mongrel (Ошибка с диспетчером)

Я пытаюсь развернуть приложение rails 3 на машине с Windows (да, это должны быть окна, я не могу использовать Linux)

Я решил попробовать использовать Mongrel + Apache (желаю попробовать другие установки, если кто-нибудь знает, что работает).

У меня установлен mongrel, и я могу запустить rails server mongrel и нормально запустить приложение. Однако, когда я пытаюсь запустить mongrel как службу Windows, используя

mongrel_rails service::install -N mongrel1 -e production -p 3001 -c mydirectory`

У меня проблемы. Сервер запускается нормально, но когда я пытаюсь перейти на веб-страницу, в моем mongrel.log файле появляется следующая ошибка.

Error calling Dispatcher.dispatch #<NameError: uninitialized constant ActionController::CgiRequest>
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:76:in `block in process'
<internal:prelude>:10:in `synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:74:in `process'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:165:in `block in process_client'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:164:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:164:in `process_client'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:291:in `block (2 levels) in run'

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


person Random Developer    schedule 16.05.2012    source источник


Ответы (1)


Я запускаю приложение Rails 3 в Windows (Win7) с помощью Apache + Mongrel. Вот, пожалуй, другой подход. В httpd.conf я установил DocumentRoot как путь к моему приложению rails. Затем для тега Directory устанавливается любой корневой каталог документа. Затем добавьте тег VirtualHost следующим образом:

<VirtualHost localhost:80>
  Servername YourAppServer
  DocumentRoot "same path as before"
  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/
  ProxyPreserveHost On
</VirtualHost>"

Значение ServerName я считаю произвольным.

Вам также необходимо добавить: LoadModule proxy_module modules / mod_proxy.so LoadModule proxy_http_module modules / mod_proxy_http.so

Я предполагаю, что если вы используете порт 3001 вместо 3000, вы сделаете соответствующие замены.

Затем запустите все (из папки вашего приложения) с помощью rails server -e production -p 3001 (Apache уже должен быть запущен)

person dallma77    schedule 17.05.2012
comment
Спасибо за ответ, я читал, что mongrel может обрабатывать только один запрос одновременно, поэтому лучше всего настроить 3 экземпляра mongrel и использовать apache для распределения запросов между ними. Я пытаюсь запустить экземпляры mongrel как службы Windows, чтобы мне не приходилось постоянно открывать 3 окна консоли. Я могу запустить беспородный сервер, как вы описали, но я не могу запустить его как службу вдов. - person Random Developer; 18.05.2012