2015-04-03 138 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