2015-04-03 86 views
0

我与红宝石葡萄+乘客+ Apache的

grape 
passenger 
apache2 

试图建立由API服务器我安装了宝石“乘客”跑

passenger-install-apache2-module 

摆在我的“虚拟主机”以下配置

服务器名api.website.com

LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so 
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-5.0.6 
PassengerDefaultRuby /usr/bin/ruby1.9.1 
DocumentRoot /var/www/html/lib/api 

但是,当我重新启动服务器并尝试通过浏览器访问它时,我只能看到文件夹列表。

enter image description here

什么我需要做的有什么不同?

回答

0

我想通了。我看着Sinatra是如何部署的。我必须将DocumentRoot指向文件夹“公共”(或其他任何东西)。虽然此文件夹必须存在于我的config.ru所在的同一目录中。然后,所有的工作。

我的文件夹结构看起来像这样

/app 
    |- apis.rb 
    |- config.ru 
    \- public 

virtualhost.conf

DocumentRoot ...../app/public 

我的解决办法似乎工作。虽然会喜欢一些解释,但:)任何人都有这方面的见解?

谢谢!

0

您必须将Passenger指向public dir,因为这允许它首先从该目录提供静态文件,并且如果未找到任何文件,则请求应用程序处理该请求。这为服务静态文件和提高性能提供了清晰的语义。

request to /img.gif 
public/img.gif exists => send it to user 
---- 
request to /users.json 
public/users.json doesnt exist => 
send request to app in public/.. 

所以,你必须把它指向公共目录,即使你不具备任何东西

+0

谢谢@lobanovadik,是的,我想通之多。虽然,我想知道是否有任何文件说,config.ru应该在同一个文件夹中包含? – 2015-04-06 05:25:30