Mac OSX Lion Apache + RubyOnRails + mod_passenger

时间:2013-01-11 18:47:29

标签: ruby-on-rails ruby apache passenger mod-rails

我正在尝试学习如何使用Ruby On Rails开发Web应用程序,但我遇到了一个愚蠢的错误。 我正在尝试使用Phusion Passenger aka mod_rails来使用Apache而不是WEBrick;我通过gem安装了模块并运行

sudo passenger-install-apache2-module

安装乘客的命令;然后我编辑了http.conf文件添加

LoadModule passenger_module /Users/Stopped/.rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /Users/Stopped/.rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.19
PassengerRuby /Users/Stopped/.rvm/wrappers/ruby-1.9.3-p327/ruby

添加了VirtualHost

<VirtualHost *:80>
    ServerName rails.local
    DocumentRoot "/Users/Stopped/RoR/prova/public"
    <Directory /Users/Stopped/RoR/prova/public>
        AllowOverride all
        Options -MultiViews
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

使用sudo apachectl restart重新启动Apache,但它无法正常工作:(如果我在localhost中查找,我会看到“它工作!”页面但是如果我去rails.local那里没有我的Rails应用程序:(

载客

Apache/2.2.22 (Unix) Phusion_Passenger/3.0.19 DAV/2 PHP/5.4.9 Server at localhost Port 80

有什么想法吗?

PS:这是“apachectl -S”输出

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server rails.local (/private/etc/apache2/extra/httpd-vhosts.conf:53)
         port 80 namevhost rails.local (/private/etc/apache2/extra/httpd-vhosts.conf:53)
Syntax OK

嗯......我解决了它,将127.0.0.1 rails.local添加到我的hosts文件中,但我无法理解为什么;谁可以给我解释一下这个? ._。

1 个答案:

答案 0 :(得分:1)

您不能在hosts文件中使用带有localhost的通配符。您必须在hosts文件中显式指定localhost的每个子域。如果您正在寻找替代方案,您可以购买域名并使用通配符将该域名指向127.0.0.1。您甚至可以更进一步,拥有一个骨架应用程序,通过映射路径将不同的子域指向不同的应用程序。