使用Passenger将Rails部署到Mac OS X Leopard服务器的问题

时间:2010-06-12 05:54:21

标签: ruby-on-rails apache macos passenger

我正在转动我的车轮... Apache正在工作并正常提供静态html,png等。试图让Passenger从www.mydomain.com/rails/

中提供rails应用程序

当我尝试点击我的应用时,它就是这样:www.mydomain.com/rails/myapp/railsclassname 我只得到一个Apache 403错误。 myapp的生产日志中没有任何内容。

Apache2 access.log:

"GET /rails/ HTTP/1.1" 403 1085

Apache2 error.log:

[Fri Jun 11 22:44:01 2010] [error] [client 10.0.1.41] File does not exist: /Library/WebServer/wwwroot/rails/railsclassname

我甚至尝试过www.mydomain.com/myapp/classname

显然,Passenger没有将我的子文件夹rails/中的请求路由到我的rails应用程序。不知道我搞砸了哪里。最明显的事情是“乘客似乎没有运行”...我已经按照说明向sudo apachectl graceful说了一遍,我做过(以及停止/启动)。新的,所以对我来说很容易!

以下是一些可能有用的信息。很高兴根据需要提供更多......


根据some instruction @ Passenger site我已经从/Library/WebServer/myapp/rails创建了一个符号链接 - > /Library/WebServer/rails/myapp/public

myhost:myapp joe$ passenger-config --root
/Library/Ruby/Gems/1.8/gems/passenger-2.2.14
myhost:myapp joe$ passenger-status
ERROR: Phusion Passenger doesn't seem to be running.

apollo:myapp joe $ cat /etc/httpd/httpd.conf

...
<removed for brevity>
...
# Copied From Passenger Installer
   LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.14/ext/apache2/mod_passenger.so
   PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.14
   PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
# End Passenger Installer

  NameVirtualHost *

   <VirtualHost *:80>
      ServerName www.mydomain.com
      DocumentRoot /Library/WebServer/rails/myapp/public    # <-- be sure to point to 'public'!
      RackBaseURI /rails
      <Directory /Library/WebServer/rails/myapp/public>
         AllowOverride all              # <-- relax Apache security settings
         Options -MultiViews            # <-- MultiViews must be turned off
         order allow,deny
         Allow from all
      </Directory>
   </VirtualHost>

来自NameVirtualHost的最后一点是从我发现的一些在线资料中拼凑而成的...因为我一直在拼命想找到一些东西/任何能够显示乘客至少有脉搏的东西!?!

1 个答案:

答案 0 :(得分:2)

所以,你有

www.mydomain.com
www.mydomain.com/rails

这些都指向不同的网站(让我们称之为main和rails),每个网站的代码可能会保存在文件系统中,如下所示:

/Library/WebServer/main/
/Library/WebServer/rails/

我们从rails应用程序的公共文件夹创建一个符号链接到主应用程序中名为rails的文件夹:

ln -s /Library/WebServer/rails/public /Library/WebServer/main/rails

然后我们为主站点创建一个VirtualHost(而不是rails站点,我假设主站点不是rails)并将rails app添加为子URI,如下所示:

<VirtualHost *:80>
  ServerName www.mydomain.com
  DocumentRoot /Library/WebServer/main
  <Directory /Library/WebServer/main>
    Allow from all
  </Directory>

  RackBaseURI /rails
  <Directory /Library/WebServer/main/rails>
    Options -MultiViews
  </Directory>
</VirtualHost>

(如果您已经为主网站设置了VirtualHost,则可以将RackBaseURI和之前的目录声明添加到其中)。

现在重启apache,你应该可以去:

www.mydomain.com/rails

并查看“欢迎使用Rails”页面,或:

www.mydomain.com/rails/controllername

希望有所帮助。