2009-11-23 24 views
6

很多人都問過在這個網站上託管的Rails,但是我不太瞭解事物的後端以知道是否有區別。Ruby(off the Rails)主機

我想要託管一些Ruby CGI的webservices,基本上只是從POST請求中獲取參數的ruby方法,訪問MySQL數據庫並返回數據。

我已經看過RoR,看起來似乎是過度的這個,從我可以告訴它是爲了加速數據baesd CRUD網站的發展,這並不是我所做的。

所以我的問題是,這會影響我選擇的託管服務提供商嗎?有沒有人推薦一個好的Ruby主機進行CGI操作?我不熟悉FastCGI,mod_ruby,Passenger,Mongrel等,以及它們對於性能,可伸縮性等的意義。我只想以合理的性能託管我的ruby腳本,並且所有信息(以及此處)似乎專注於鐵路。

回答

9

首先,如果你想輕量級,Sinatra通常是我的第一個選擇。將其與rackPassenger配對以取得最佳效果。這不是CGI,但從現實的角度來說,CGI很少與Ruby相提並論。

這是「Hello World!」西納特拉應用程序從主頁:

require 'rubygems' 
require 'sinatra' 
get '/hi' do 
    "Hello World!" 
end 

難以獲得比這更輕量級。

至於提供者,任何支持Passenger(mod_rack)的人都應該能夠處理Sinatra。我個人很喜歡Slicehost,但他們是VPS主機,這意味着您需要能夠自己安裝和管理整個堆棧。如果你不介意爲基礎設施支付額外的費用,那麼只要你的需求沒有超過他們提供的東西(聽起來他們不會這麼做),安裝和部署就會變得簡單。如果您只使用5MB或者如果您使用外部存儲機制(如Amazon RDS),Heroku實際上可能爲您免費。

更新:

  • 乘客是一個Apache模塊,使機架應用到Apache的內部運行。
  • Rack是一箇中間件層,它將Web服務器和Web框架相互分開。這允許Web框架在任何有適配器的Web服務器上運行。
  • Sinatra是一個輕量級的Web框架,可以在Rack上運行。

一旦乘客和機架安裝(​​,gem install passenger),你只需要修改Apache的虛擬主機在config.ru文件指向你的末日應用程序,並創建所需要的目錄,按照Passenger docs,你會很好去。

+0

對於noob響應感到抱歉,但這是我在.NET以外的第一個CGI努力 - 爲什麼我需要Sinatra(或Rack/Passenger/Camping)?我不能只將.rb文件放入cgi-bin文件夾,使用'require cgi'並閱讀POST變量,運行我的代碼併發送回應? – LoveMeSomeCode 2009-11-24 14:58:28

+0

當然,只要你不介意你發生的持續啓動/關機成本。如果你只是在寫「hello world」,這不會是什麼大不了的,但是你說你需要寫一個數據庫。這意味着您需要在每個請求上加載和卸載數據庫適配器。在Ruby中,像數據庫適配器這樣的庫的加載時間往往是不平凡的。坦率地說,Sinatra的安裝時間比CGI多5分鐘,而且使用起來更容易。如果你在這個項目上花費了一個多小時的工作,我保證Sinatra會爲你節省時間,即使學習曲線。 – 2009-11-24 16:49:48

+0

嗯......我應該記下......這是5分鐘爲我設定的時間。第一次可能會更長,因爲你還沒有安裝Passenger。 – 2009-11-24 16:50:56

0

我想你可能想看看Rack。它允許你做各種你在談論的事情,並且擺脫像Rails或Merb這樣的框架的重要性。機架應用程序可以在像Heroku這樣的地方託管。

+0

Heroku看起來很有趣,但我用'heroku create'命令在Windows上遇到了一個問題,告訴我'找不到ssh公鑰在...你可能想要指定密鑰文件的完整路徑。 – LoveMeSomeCode 2009-11-23 22:06:18

+0

對不起人...我在Mac上,所以我從來沒有使用它從Windows ... – 2009-11-24 00:13:09

+0

我也沒有使用Windows版本,但我第二投票Heroku。他們有一個免費的版本,直到你準備升級。 – 2009-11-24 01:09:47

相關問題