使用Passenger从Apache上的subDir运行rails应用程序

时间:2011-06-05 21:29:23

标签: ruby-on-rails passenger

我已经花了几个小时彻底地试图找到答案。来自Site5的那些提供托管服务的人遇到了障碍。

我正在尝试做什么:从playplanit [dot] com / sfcal运行reils应用程序,而不是从playplanit [dot] com /运行。

目前的设置: - 应用程序本身在这里:/ home / playplan / apps / ppi / current / - 在.htaccess文件中     PassengerEnabled on     PassengerAppRoot / home / playplan / apps / ppi / current - 公共文件在public_html中(以前在这里/ home / playplan / apps / ppi / current / public和public_html是一个sym链接,但我改变了,因为进行此更改的重点是我可以运行docRoot中的Wordpress博客

尝试了什么: - 创建sym链接:sfcal / - > /家庭/ playplan /应用/ PPI /电流/公 - 将RailsBaseURI / sfcal添加到.htaccess文件中 - 尝试更改routes.rb中的所有“路径”     这是在我可以考虑改变改变位置的路径之后的rake路由输出:http://cl.ly/2N2Q2z0N332v2B2F3r38 - 我想也许map.root需要以某种方式改变,但不能,然后其中一位技术人员帮助我将这一行添加到environment.rb:config.action_controller.relative_url_root =“/ sfcal” - 根据它们,httpd.conf文件中不需要更改任何内容 - 我还尝试通过在tmp /

中创建restart.txt文件来重新启动应用程序

我知道sym链接有效,但应用程序中的某些内容会识别出它是一个subDir并将提供位于'public'目录中的404。

还有什么需要配置的想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

检查乘客文档Deploying to a sub URI

编辑

您只需要遵循Passenger文档即可。您不必乱用rails路由或移动应用程序public文件夹。

假设您已将rails应用程序部署到/home/playplan/apps/ppi/current,并且/home/playplan/public_html目录是虚拟主机的root,并且具有以下Apache配置:

<VirtualHost *:80>
  ServerName playplanit.com
  DocumentRoot /home/playplan/public_html
  <Directory /home/playplan/public_html>
    Allow from all
  </Directory>
</VirtualHost>

要让您的应用程序从http://playplanit.com/sfcal访问,您需要执行以下操作:

  • 确保在httpd.conf中为您的Options FollowSymLinks启用了Apache AllowOverride OptionsVirtualHost,否则后续操作无效。

  • sfcal目录中创建一个名为public_html的链接,指向您的rails public目录。

ln -s /home/playplan/apps/ppi/current/public /home/playplan/public_html/sfcal

  • 将以下内容添加到/home/playplan/public_html/.htaccess

    RailsBaseURI /sfcal
    
  • 将以下内容放入/home/playplan/public_html/sfcal/.htaccess

    Options -MultiViews