Phusion-Passenger
帶有Passenger Standalone 的Elastic Beanstalk:工作配置?
我正在嘗試將彈性豆莖應用程序從 Puma 遷移到 Phusion Passenger。但是,Passenger 在啟動時失敗並出現以下錯誤:
/opt/elasticbeanstalk/support/conf/nginx_config.erb:48:in `block in write_nginx_config_file': undefined local variable or method `location_config_filename' for #<PhusionPassenger::Standalone::StartCommand:0x007f1eb35d06f0> (NameError) from /opt/rubies/ruby-2.2.2/lib/ruby/2.2.0/erb.rb:863:in `eval' from /opt/rubies/ruby-2.2.2/lib/ruby/2.2.0/erb.rb:863:in `result' from /opt/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/passenger-5.0.15/lib/phusion_passenger/standalone/start_command/nginx_engine.rb:120:in `block in write_nginx_config_file'
亞馬遜堆棧名稱是:
64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Passenger Standalone)
相同的應用程序使用Passenger 在本地和Heroku 上執行。(它也可以與 Puma 一起執行)。
是否有我錯過的必需配置文件或配置選項?
(我使用 eb_deployer 進行藍綠部署,而不是 AWS 控制台 - 所以它可能是某處的預設設置)。
我遇到了同樣的問題,經過一番探勘,我發現亞馬遜正在使用的乘客版本
64位亞馬遜Linux 2015.03 v2.0.0
是乘客4.0.59。
如果您只是
gem "passenger"
在 gemfile 中沒有指定您的應用程序正在安裝的版本 v5.0 或更新版本,這與 EBS 設置衝突。他們在 4.0.59 和 5.0 之間所做的任何更改似乎都會擾亂部署,因為當我在我的 gemfile 中設置版本並重新部署時,它就可以工作了。gem "passenger", '~> 4.0.59'
更新 gemfile 並推送程式碼後,請確保終止實例以獲取新實例。部署後檢查 eb-activity.log 的行
使用乘客 4.0.59
編輯:正如克里斯在下面指出的那樣,您不需要在 gem 文件中包含乘客,因為它已經包含在內。這將一起防止問題,無需擔心版本。
gem "passenger ", group: :development