2011-03-11 77 views
7

我一直在尋找一種在Windows上可靠部署Rails 3應用程序的方法。我感到非常震驚,似乎目前沒有辦法做到這一點。 Apache +少量Mongrel服務解決方案目前無法正常工作,因爲Mongrel無法以守護進程模式運行,因此我無法將其作爲mongrel_service安裝。如何在Windows上部署Rails 3應用程序?

我猜的要求應該是:使用Rails 3

    • Web服務器兼容必須能夠作爲Windows服務,運行進程化。
    • 必須能夠在出現問題時自動重啓。
    • 必須是生產質量:沒有內存泄漏等
    • 應該能夠擴展並且同時接受多個請求。
    • 減少黑客可能。

    我發現這些東西:

    • 雜種不生產準備的Rails 3(1.2.0pre),我遇到內存泄漏相當快,從一個控制檯窗口。該應用剛剛退出。
    • Mongrel不會以Rails 3的形式運行在守護進程模式(-d)中。
    • 因此,Mongrel不能作爲服務安裝。
    • Phusion Passenger在Windows上不可用(將是最佳解決方案)。

    這是我想出了可能的解決方案:

    • 找一臺Linux機器,安裝Apache +的Phusion客運和滾動。
    • Using thin,但是,作者說這個瘦身過程並不是「守護」的。
    • Using Ngnix但是,作者說他只是運行了一個默認的應用程序,而不是一個完整的應用程序。
    • Using Ngnix。我認爲這個解決方案存在與上述相同的問題。
    • 使用Linux的虛擬化,但我必須解決像自動啓動等問題。
    • 在Tomcat中運行JRuby。

    這可能是一個方便的工具:http://projectkenai.com/projects/winsw

    我希望我們能找到真正的解決這個問題。


    更新:

    我同意的JRuby + J2EE容器是最好的選擇。一些問題必須像擴展名的寶石一樣解決這裏有很多有價值的點子:http://rails-nutshell.labs.oreilly.com/ch14.html#production_r259035_id35801805

  • +0

    也可以查看http://torquebox.org。 – 2012-03-03 20:24:08

    回答

    6

    這是我目前已經在運行安裝程序:

    • 的Windows Server 2008
    • Apache 2.2的
    • 瘦服務器
    • 的Ruby 1.9.2
    • 的Rails 3.0.9

    安裝這些方面包含在這個偉大的教程「How to install and configure Ruby on Rails with Windows Server 2008 EE「。我忽略了LDAP和ActiveDirectory位,但是因爲gem 'thin'通常會在Windows上中斷,所以安裝瘦服務器時有一個很好的解決方法。

    對於生產,我設置了MySQL Server 5.5來託管我的數據庫。 Rails 3需要mysql2適配器,但我的Windows環境中尚不支持。 mysql適配器也會在Rails 3上拋出一個錯誤,但作爲解決方法,您可以通過安裝舊版本的libmysql.dll來使其工作。您只需將其放入Ruby192/bin目錄即可。

    一旦正確的MySQL適配器和服務器安裝,您需要創建數據庫:

    >> mysql -u root -p 
    [enter root pw] 
    create database production; 
    quit; 
    

    (您可能需要你的MySQL安裝添加到您的路徑,如果「MySQL的」無法找到)

    最後,設置在your_rails_app /配置/數據庫中找到的數據庫配置:

    # MySQL Production Database 
    production: 
        adapter: mysql 
        database: production 
        pool: 5 
        timeout: 5000 
        encoding: utf8 
        password: [your_root_password] 
        host: localhost 
    

    其餘的,包括代理設置和運行作爲Windows服務,是覆蓋在「How to install and configure Ruby on Rails with Windows Server 2008 EE」。爲了確保您的基本設置薄運行正常:

    thin start -p 3000 -e production 
    

    這應該使用MySQL數據庫啓動服務器3000端口的生產模式。這裏唯一缺少的是負載均衡,我希望能很快找到答案!

    +0

    謝謝克里斯。我還想在這裏注意到,Rails安裝程序現在在一個包中安裝ruby 1.9.2和Rails 3.1。請在這裏查看:http://railsinstaller.org/ – gamov 2011-09-25 07:02:34

    +0

    這是最好的答案! http://everything-ruby.blogspot.com/2011/04/installing-windows-server-2008-ee-with_10.html – 2012-10-15 05:33:13

    +0

    來自中國大陸的人們必須通過VPN訪問以上網址。 – 2013-06-15 13:03:39

    2

    就我個人而言,我認爲JRuby + Tomcat大道將會是你最好的選擇,只是因爲Tomcat在Windows上經過審覈並且它與JRuby一起非常穩定。我的第一個想法是乘客,並且很遺憾它還沒有移植。