AWS elastic beanstalk не получает переменные среды

#ruby-on-rails #amazon-web-services #amazon-elastic-beanstalk #puma

#ruby-on-rails #amazon-веб-сервисы #amazon-elastic-beanstalk #puma

Вопрос:

Я пытаюсь запустить приложение Rails 6 на AWS Elastic Beanstalk, но я получаю из журнала puma следующее (повторяется каждые несколько секунд)

[21776] Gemfile в контексте: /var/app/current/Gemfile
[21776] Досрочное завершение работы worker

Номера версий:

  • Рельсы 6.0.3.3
  • puma 4.3.5
  • ElasticBeanstalk Ruby 2.7 running on 64bit Amazon Linux 2/3.1.1
  • ruby 2.7.1p83

Сервер не отвечает извне экземпляра, и на нем ничего log/production.log нет.

При запуске на компьютере разработчика в production режиме mode ошибок нет, и база данных доступна (сбой миграции отсутствует).

Запуск на экземпляре AWS команды bundle exec puma -p 3000 -e production , которую я получаю

 Puma starting in single mode...
Version 4.3.5 (ruby 2.7.1-p83), codename: Mysterious Traveller
Min threads: 5, max threads: 5
Environment: production
Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
  

таким образом, нет очевидной ошибки, которая может привести к остановке рабочего процесса.

Как я могу узнать, что вызывает сбой рабочих?

Редактировать 1:

Я запустил консоль Rails на экземпляре и обнаружил, что переменные среды отсутствуют — например, пользователь / передача / хост производственной базы данных. Как только я их жестко запрограммировал, я смог подключиться к базе данных. Я подозреваю, что отсутствие других переменных среды приводит к сбою приложения.

Комментарии:

1. Я не думаю, что EB использует порт 3000 — я бы вместо этого использовал переменную среды $PORT . Вам также может потребоваться проверить, где экземпляр nginx ищет ваш серверный сервер

Ответ №1:

У пользователя на форуме AWS был ответ.

Настройка в моем Gemfile

 gem "nio4r", "= 2.5.2"
  

исправлена проблема.

Комментарии:

1. Огромное спасибо за это! Интересно, как мы избежим повторения чего-то подобного в будущем?

2. @SimonL.Brazell Служба поддержки AWS рекомендует взять отдельную ветку и создать параллельную среду EB с последней конфигурацией платформы и посмотреть, работает ли она. Они также сказали, что у них даже нет доступа ssh к ящику, поэтому вам решать, как определить эти проблемы.

3. но это случилось со мной без развертывания или чего-либо еще, только клиент заметил, что сервер больше не отвечает, и дайте мне знать, конечно, если сервер не меняется / не нарушается, он должен просто продолжать работать правильно?

4. то же самое случилось со мной: окно продолжало работать, как будто ничего не произошло, но приложение rails не отвечало. Я обнаружил проблему путем устранения и обнаружил, что puma порождает рабочих, и они продолжают умирать.

5. Я нашел это подробное описание того, как упаковывать драгоценные камни с вашим приложением, не уверен, решит ли это проблему, но я мог бы попробовать.