我试图从Puma迁移一个弹性beanstalk应用程序到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)
同样的应用程序使用乘客在本地和Heroku上运行。 (它也与Puma运行正常)。
是否有我错过的必要configuration文件或configuration选项?
(我使用eb_deployer进行蓝绿色部署,而不是AWS控制台 – 所以它可能是默认的地方)。
我有同样的问题,经过一番挖掘,我发现亚马逊的乘客版本正在使用
64位Amazon Linux 2015.03 v2.0.0
是乘客4.0.59 。
如果您的gem "passenger"只有gem "passenger" ,而没有指定您的应用正在安装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