带有独立乘客的 Elastic Beanstalk:工作配置?

MZB*_*MZB 4 phusion-passenger 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'
Run Code Online (Sandbox Code Playgroud)

亚马逊堆栈名称是:

64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Passenger Standalone)
Run Code Online (Sandbox Code Playgroud)

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

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

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

ill*_*lph 6

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

64位亚马逊Linux 2015.03 v2.0.0

是乘客4.0.59

如果您只是gem "passenger"在您的 gemfile 中没有指定您的应用程序正在安装与 EBS 设置冲突的 v5.0 或更高版本的版本。他们在 4.0.59 和 5.0 之间所做的任何更改似乎都在扰乱部署,因为当我在我的 gemfile 中设置版本并重新部署时,它起作用了。

gem "passenger", '~> 4.0.59'
Run Code Online (Sandbox Code Playgroud)

更新 gemfile 并推送代码后,请确保终止实例以获取新实例。部署后检查该行的 eb-activity.log

使用乘客 4.0.59

编辑:正如克里斯在下面指出的,您不需要在您的 gem 文件中包含乘客,因为它已经包含在内。这将一起防止问题,无需担心版本。

gem "passenger ", group: :development
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 Elastic Beanstalk,您的 Gemfile 中可能不需要乘客,因为它本机安装在 Elastic Beanstalk 的默认 Ruby AMI 上。你可能应该只做`gem "passenger ", group::development` (5认同)