Elastic Beanstalk 与 Passenger Standalone:工作配置?

Elastic Beanstalk 与 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'

Amazon 堆栈名称为:

64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Passenger Standalone)

同一个应用程序可以在本地和 Heroku 上使用 Passenger 运行。(它也可以与 Puma 一起顺利运行)。

我是否遗漏了必需的配置文件或配置选项?

(我使用 eb_deployer 进行蓝绿部署而不是 AWS 控制台 - 因此它可能是某个地方的默认设置)。

答案1

我遇到了同样的问题,经过一番挖掘,我发现 Amazon 使用的乘客版本

64位 Amazon 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

编辑:正如 Chris 在下面指出的那样,您不需要在 gem 文件中包括 Passenger,因为它已经包含在内。这将完全避免出现此问题,无需担心版本问题。

gem "passenger ", group: :development

相关内容