我很抱歉,如果这是一个愚蠢的问题,但我不能让Ruby on Rails在我的Apache服务器上工作。 我正在使用Phusion Passenger(mod_rails,mod_rack)进行应用程序部署。 这是我的网站的Apacheconfiguration文件中的RoR特定的configuration代码:
Alias /rails /var/www/syyborg.com/ruby/blog/public <Directory /var/www/syyborg.com/ruby/blog/public> Options FollowSymLinks AllowOverride None Order Allow,Deny Allow from All </Directory> RailsBaseURI /rails
我再次对这种事情了解甚less, 我从来没有从头开始build立一个服务器。 无论如何,正如你所看到的,我的rails应用程序位于/var/www/syyborg.com/ruby/blog/ 。 我试图从http://[my domain, syyborg.com]/rails访问它。 但是,当我尝试加载该网站时,出现“403 Forbidden”错误。 任何帮助将不胜感激,如果需要,我可以提供进一步的细节。 提前致谢!
如果mod_rails被正确地安装并加载,你需要在apache中唯一的configuration是将文档根目录指向公用文件夹。 mod_rails足够聪明,可以实现其余的来源。 在apache中:<Directory>语句指的是物理文件的位置而不是感知的path。 这也应该是您的Rails应用程序的公用文件夹。
即
<Directory /var/www/syyborg.com/ruby/blog/public> Options FollowSymLinks AllowOverride None Order Allow,Deny Allow from All </Directory>
你的RailsBaseURI应该是你正在使用的path。
即
RailsBaseURI "/rails"
你的别名语句看起来不错。
这听起来像mod_rails没有安装。 假设你有这个:
gem install passenger
和
passenger-install-apache2-module
尝试看看你是否可以像这样开始乘客:
cd /path/to/your/webapp passenger start
乘客使用一些文件系统魔法来find实际的Rails应用程序。 其所有操作都基于您的虚拟主机的DocumentRoot 。
基本上,乘客需要两个configuration设置:
RailsBaseURI值来完成的。 RAILS_ROOT )的符号链接。 这个符号链接需要位于DOCUMENT_ROOT目录中。 所以假设你的DocumentRoot是/srv/www ,你需要创build下面的符号链接:
ln -s /var/www/syyborg.com/ruby/blog/public /srv/www/rails
请注意,不要将您的rails应用程序放入DOCUMENT_ROOT ,这是很好的做法。 此外,Passenger当前不支持VirtualDocumentRoot模块。
有关更多信息,请参阅Passenger文档的相应部分。