0

Rails 3 アプリを Windows マシンにデプロイしようとしています (はい、Windows である必要があります。Linux は使用できません)。

私は Mongrel + Apache を試してみることにしました (動作するセットアップを誰かが知っていれば、喜んで他のセットアップを試してみます)。

mongrel がインストールされており、Rails サーバー mongrel を実行してアプリを正常に実行できます。ただし、mongrel を Windows サービスとして起動しようとすると、

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

私はトラブルに遭遇します。サーバーは正常に起動しますが、Web ページにアクセスしようとすると、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'

これについて調べてみましたが、すべてのセットアップ ガイドが非常に古いようです。

4

1 に答える 1

0

Apache + Mongrel を使用して Windows (Win7) で Rails 3 アプリを実行しています。これはおそらく別のアプローチです。httpd.conf で、DocumentRoot を Rails アプリへのパスとして設定しました。次に、ディレクトリ タグは、ドキュメント ルートが何であれ設定されます。次に、次のように 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

ポート 3000 の代わりに 3001 を使用している場合は、適切な置換を行っていると思います。

次に、「rails server -e production -p 3001」を使用して (アプリ フォルダーから) すべてを開始します (Apache は既に実行されているはずです)。

于 2012-05-17T13:46:16.620 に答える