我是一名 iOS 开发人员,所以我对 Apache 和 RoR 的经验很少,这是我第一次尝试使用 Mac OS X 作为服务器。
http://rubyonrails.org/deploy建议使用Phusion 乘客(mod_rails)使用 Apache。这就是我想要实现的目标,但我遇到了瓶颈。
这是我所做的:
我已启用 Apache(设置中的复选框),并将浏览器指向 localhost 时,会显示“It works!”文本。我也可以通过 dyndns 访问它。
我运行了以下命令来安装 Passenger:
sudo gem install passenger passenger-install-apache2-module
我添加了以下几行
/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
然后我将以下内容添加到
/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>
我使用以下命令重新启动了 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