如何在 Mac OS X 上使用Passenger (mod_rails) 设置Apache?

Eri*_*k B 6 mac-osx ruby-on-rails phusion-passenger apache-2.2

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

http://rubyonrails.org/deploy建议将Phusion Passenger (mod_rails)与 Apache 一起使用。所以这就是我想要完成的,但我已经走到了死胡同。

这就是我所做的:

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

  2. 我运行以下命令来安装乘客:

    sudo gem install passenger
    passenger-install-apache2-module
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  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>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我使用以下命令重新启动了 Apache:

    sudo /usr/sbin/apachectl restart
    
    Run Code Online (Sandbox Code Playgroud)

我有一个正在运行的 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
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*k B 2

我最近因这个问题获得了热门问题徽章,所以我想是时候发布答案了。我只会发布我的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
Run Code Online (Sandbox Code Playgroud)

另请确保取消注释以下行:

Include /etc/apache2/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

然后/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>
Run Code Online (Sandbox Code Playgroud)

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

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

如果您对如何改进配置有任何建议,请随时发布。尽管我对这些没有任何用处,但其他人仍然可能有用。毕竟,这是一个热门问题。