如何在Windows中为Ruby on Rails配置Apache 2.2?

时间:2020-03-06 14:52:33  来源:igfitidea点击:

我正在尝试开始编写一些Ruby on Rails应用程序,并且已经成功使用Mongrel,但是,我想将应用程序部署到Windows上的Apache 2.2实例吗?我发现的所有教程似乎都是过时的,并且是针对较旧版本的Apache / Rails的。

有谁知道如何为Ruby on Rails应用配置Apache 2.2的最新好教程?

解决方案

编辑:至少直到有赢取Phusion的乘客,Apache + Mongrel才是成功之路。我们可以在没有Mongrel的情况下使用Apache + FastCGI,但是在实际负载下,我们将获得(更多)僵尸进程和(更多)内存泄漏。

我们还可以按照以下详述的方式查看代理到Thin。但是,尽管Thin Pro的运行速度明显更快,但我在使用Thin时还是有些不稳定的地方。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 AB(Apache Benchmark)是朋友!

在Windows上配置Apache + Mongrel与* nix并没有太大区别。

本质上,我们需要将进入Apache的请求代理到Mongrel。归结为这样的事情:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost localhost:80>
    ServerName www.myapp.comm
    DocumentRoot "C:/web/myapp/public"
    ProxyPass / http://www.myapp.com:3000/
    ProxyPassReverse / http://www.myapp.com:3000/
    ProxyPreserveHost On
</VirtualHost>

将其粘贴到" httpd.conf"(或者包含在" httpd-vhost.conf"中)中。

假设我们要在端口3000上运行杂种,Rails的根目录位于C:\ web \ myapp,并且我们将在www.myapp.com上访问该应用程序。

要在生产模式下运行Rails应用程序:

mongrel_rails start -p 3000 -e production

走开(实际上杂种默认为端口3000,因此如果需要,我们可以跳过-p 3000)。

主要区别在于我们无法在Windows上守护杂种(即使其在后台运行)。相反,我们可以使用mongrel_servicegem将其作为服务安装。

而且,运行集群更加复杂,我们将无法使用Capistrano。让我知道我们是否需要更多信息。

我是RoR的新手,并且一直在Windows Server 2008上尝试相同的操作,这里有一些有关使杂种作为服务使用的其他说明:

如果在安装mongrel_service时遇到编译错误:

gem install mongrel_service

通过指定平台尝试使用二进制文件:

gem install mongrel_service --platform x86-mswin32

此外,要实际安装服务,我们需要在RoR的app目录中运行以下命令:

mongrel_rails service::install --name MyApp -e production -p 3001 -a 0.0.0.0

(或者删除:

mongrel_rails service::remove --name MyApp

)

然后,我们应该能够在Windows服务控制面板中启动/停止应用程序" MyApp"。

希望能对某人有所帮助。

目前,Mongrel无法在Ruby 1.9上正常工作,并且在执行命令mongrel_rails时将引发"找不到msvcrt-ruby18.dll"错误。

在这种情况下,Thin似乎是目前唯一的选择。