如何在 Mac OS X 上设置带有 Passenger(mod_rails)的 Apache?

如何在 Mac OS X 上设置带有 Passenger(mod_rails)的 Apache?

我是一名 iOS 开发人员,所以我对 Apache 和 RoR 的经验很少,这是我第一次尝试使用 Mac OS X 作为服务器。

http://rubyonrails.org/deploy建议使用Phusion 乘客(mod_rails)使用 Apache。这就是我想要实现的目标,但我遇到了瓶颈。

这是我所做的:

  1. 我已启用 Apache(设置中的复选框),并将浏览器指向 localhost 时,会显示“It works!”文本。我也可以通过 dyndns 访问它。

  2. 我运行了以下命令来安装 Passenger:

    sudo gem install passenger
    passenger-install-apache2-module
    
  3. 我添加了以下几行/etc/apache2/httpd.conf

    LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
    PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.7
    PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
    
  4. 然后我将以下内容添加到/etc/apache2/extra/httpd-vhosts.conf

    <VirtualHost *:80>
       ServerName my.dyndns.org
       DocumentRoot /Users/Shared/rails/project/public    # <-- be sure to point to 'public'!
       <Directory /Users/Shared/rails/project/public>
          AllowOverride all              # <-- relax Apache security settings
          Options -MultiViews            # <-- MultiViews must be turned off
       </Directory>
    </VirtualHost>
    
  5. 我使用以下命令重新启动了 Apache:

    sudo /usr/sbin/apachectl restart
    

我在 有一个可以运行的 Rails 应用程序/Users/Shared/rails/project,即,正在运行rails server。它只是“欢迎加入,您正在使用 Ruby on Rails!”页面,但它可以运行。

问题是我还没搞清楚如何通过 Apache 和 Passenger 访问该页面。我不知道如何配置虚拟主机,我几乎不知道它是什么。有人能向我解释我做错了什么以及如何修复它吗?

编辑:只是为了清楚起见。我希望my.dyndns.com/project在互联网上公开。我现在得到的是“在此服务器上未找到所请求的 URL /project。”

编辑2:好像没有任何虚拟主机:

$ sudo /usr/sbin/apachectl -S
VirtualHost configuration:
Syntax OK

除了添加虚拟主机之外还有什么需要做的吗/etc/apache2/extra/httpd-vhosts.conf

答案1

我最近因为这个问题被授予了热门问题徽章,所以我觉得是时候发布答案了。我只会发布我的 conf 文件的相关部分。

因此/etc/apache2/httpd.conf我有以下内容:

LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.7
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

还要确保取消注释以下行:

Include /etc/apache2/extra/httpd-vhosts.conf

然后/etc/apache2/extra/httpd-vhosts.conf我有以下内容:

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName example.dyndns.org
   DocumentRoot "/Users/Shared/rails/project/public"
   <Directory /Users/Shared/rails/project/public>
      AllowOverride all
      Options -MultiViews
      Order allow,deny
      Allow from all
   </Directory>
</VirtualHost>

今天之后我将无法访问该服务器。我们不再使用它。相反,我们使用Heroku。因此,如果出于某种原因,它无法正常工作,或者我忘记了配置的某些重要部分,我将无法为您提供帮助。它可能已经过时,我不知道它是否适用于较新版本的 Passenger。此外,服务器使用的是 Mac OS X Snow Leopard,因此它可能无法与其他版本的 OS X 兼容。但是,我猜它并没有发生太大变化,其中大部分仍然有效。

我还想再说一句免责声明。这可能不是最安全的配置。我不了解所有选项,但它似乎非常允许。我让一位同事帮我进行配置,这只是我们开始使用的配置的第一个版本。我们不太关心安全性,因为它只是一个开发服务器,而不是生产服务器。

如果您对如何改进配置有任何建议,请随时发布。尽管我不会用到这些建议,但其他人可能还是会用到。毕竟,这是一个很常见的问题。

答案2

https://github.com/Fingertips/passengerpane

我会尝试下载 Passenger Preference Pane 并使用它来设置你的开发环境。否则,如果你真的很有冒险精神,可以尝试http://pow.cx。我自己使用 Pow 进行 Rails 开发。

如果你确实使用 Pow,我建议你使用 powder gem 来管理你的 Pow 安装。它应该很简单:

gem install powder

应该您需要做的就是阅读此处有关粉末的资料:https://github.com/Rodreegez/powder

相关内容