我已经花了几个小时彻底寻找答案。提供托管服务的Site5家伙碰壁了。
我想做的是:从playplanit.com/sfcal而不是playplanit.com/运行reils应用程序。
当前设置:
-该应用本身位于此处:/ home / playplan / apps / ppi / current /
-在.htaccess文件中
PassengerEnabled在
PassengerAppRoot / home / playplan / apps / ppi / current
-公用文件位于public_html中(以前是/ home / playplan / apps / ppi / current / public,而public_html是一个符号链接,但我更改了它,因为进行此更改的全部目的是为了使我可以运行docRoot中的Wordpress博客
已经尝试了什么:
-创建符号链接:sfcal /-> / home / playplan / apps / ppi / current / public
-将RailsBaseURI / sfcal添加到.htaccess文件
-尝试更改route.rb中的所有“路径”
这是我认为可以更改的路径之后的耙路径输出:http://cl.ly/2N2Q2z0N332v2B2F3r38
-我以为可能需要对map.root进行某种方式的更改,但是不能这样做,然后一位帮助我的技术人员将这一行添加到environment.rb:config.action_controller.relative_url_root =“ / sfcal”
-根据他们的意见,httpd.conf文件中的任何内容都无需更改
-我还尝试通过在tmp /中创建restart.txt文件来重新启动应用程序
我知道sym链接有效,但是应用程序中的某些内容识别出它是subDir,并且将提供位于“ public”目录中的404。
还有什么需要配置的想法吗?
谢谢!
最佳答案
检查乘客文档Deploying to a sub URI。
编辑
您所需要做的就是遵循乘客文档。您无需弄乱铁轨路线或移动应用程序public
文件夹。
假设您已将Rails应用程序部署到/home/playplan/apps/ppi/current
,并且/home/playplan/public_html
目录是具有以下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 Options
和VirtualHost
,否则以下命令将不起作用。在
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
关于ruby-on-rails - 从Apache上的subDir到带有Passenger的运行Rails应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6245988/