2

我有一個Rails應用5,我正打算在Linux上部署,而是因爲我們需要有一些訪問非常具體的Windows的唯一的軟件,我需要將它部署在Windows Server 2012 R2上。我的軟件棧(或混合)應該是Nginx/Puma/Rails/PostgreSQL/Redis。除了Puma之外,所有的東西都安裝在Windows上,Rails文檔說我需要Puma for ActionCable。可以在Windows上部署帶有ActionCable的Rails 5應用程序嗎?

如何獲得彪馬在Windows上運行?我已經看過並嘗試過要嘗試的代碼片段,並且我還看過並嘗試過關於不能執行的代碼片段,例如以守護進程模式運行,因爲fork()不受支持。有沒有人有一套關於如何讓Puma在Rails應用程序上使用Windows的可重複使用說明?

或者,如果彪馬非起動用於Windows,是否有到Windows服務器主機(例如,Windows 2012 R2)部署具有ActionCable一個Rails 5應用可重複的方法嗎?

回答

1

按照readme file從GitHub的頁面,下面的事情要記住:不支持

  • daemon模式。所以註釋掉/刪除以下內容,如果有這樣的行。

    daemonize false 
    
  • 因爲不支持進程,所以工作人員不能在Windows中工作。我們希望工人成爲「0」。所以註釋掉以下行:

    workers 2  # The default is "0" 
    preload_app! 
    
  • 服務器插槽不在重啓無縫,必須關閉並重新打開。這些平臺無法將描述符傳遞給暴露於ruby的新進程。

  • 不要使用Unix套接字,而不是綁定服務器 「TCP://」。所以註釋掉,看起來像以下任何行:

    bind 'unix:///var/run/puma.sock' 
    bind 'unix:///var/run/puma.sock?umask=0111' 
    

    而是使用以下:

    bind "tcp://127.0.0.1:4001" 
    # You don't have to if you don't need to specify a port 
    # since the default is "tcp://0.0.0.0:9292" 
    
  • 如果您看到啓動軌服務器後,任何HTTP解析錯誤(格式不正確的HTTP請求),嘗試this answer。如果它不工作,然後註釋掉配置/環境/ production.rb或配置/環境/ production.rb這條線(取決於你想要運行彪馬這環境)

    config.force_ssl = true 
    

這裏是puma.rb文件可能是什麼樣子:

worker 0  # Not necessary. The default is "0"  

threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i 
threads threads_count, threads_count 

bind "tcp://127.0.0.1:4001" # Not necessary. Default is "tcp://0.0.0.0:9292" 

environment ENV.fetch("RAILS_ENV") { "development" } 

plugin :tmp_restart 

最後運行bundle exec puma -C config\puma.rb,它應該工作。

相關問題