Назад | Перейти на главную страницу

Elastic Beanstalk с Passenger Standalone: ​​рабочая конфигурация?

Я пытаюсь перенести приложение эластичного бобового стебля с 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 - так что это может быть где-то по умолчанию).

У меня была такая же проблема, и после некоторых копаний я обнаружил, что версия пассажира Amazon использовалась на

64-разрядная версия Amazon Linux 2015.03 v2.0.0

пассажир 4.0.59.

Если у вас просто есть gem "passenger" в вашем гем-файле без указания версии, которую ваше приложение устанавливает v5.0 или новее, что конфликтует с настройкой EBS. Какие бы изменения они ни внесли между 4.0.59 и 5.0, похоже, мешают развертыванию, потому что, когда я установил версию в своем гем-файле и повторно развернул, она сработала.

gem "passenger", '~> 4.0.59'

После того, как вы обновите свой гем-файл и отправите код, убедитесь, что вы завершили экземпляр, чтобы получить новый. После развертывания проверьте eb-activity.log на наличие строки

Использование пассажира 4.0.59

РЕДАКТИРОВАТЬ: Как указал Крис ниже, вам не нужно включать пассажира в свой файл драгоценного камня, поскольку он уже включен. Это предотвратит проблему в целом, не нужно беспокоиться о версиях.

gem "passenger ", group: :development