Эластичный бобовый стебель: настройка конфигурации Puma

Текущий стек решений Beanstalk для Ruby + Puma использует файл конфигурации по адресу /opt/elasticbeanstalk/support/conf/pumaconf.rb и игнорирует config/puma.rb внутри каталога приложений Rails.

Я мог переопределить файл выше с помощью другого .ebextensions но я колеблюсь, потому что я хотел бы избежать поломок в случае, если путь к PID или - что более важно - файлы сокетов Unix изменится в будущих версиях стека решений.

Как лучше всего настроить конфигурацию Puma на Beanstalk?

1 ответ

Решение

Мы используем Ruby+Passenger, но это звучит достаточно похоже на вашу ситуацию. Нам нужно настроить файл конфигурации nginx, хранящийся в /opt/elasticbeanstalk/support/conf/nginx_config.erbтак что мы делаем это через .ebextensions а также sed,

Вот пример для начала:

.ebextensions / 01-редактировать-nginx.config

container_commands:
  01backup_config:
    command: "cp -n /opt/elasticbeanstalk/support/conf/nginx_config.erb /opt/elasticbeanstalk/support/conf/nginx_config.erb.original"
  02edit_config:
    command: "sh -c \"sed '/string_to_insert_text_after/ i\
\    text_to_be_inserted;' /opt/elasticbeanstalk/support/conf/nginx_config.erb.original > /opt/elasticbeanstalk/support/conf/nginx_config.erb\""

Это создаст резервную копию файла конфигурации (без перезаписи, если он уже существует, благодаря -n флаг), а затем вставьте строку "text_to_be_inserted" после строки "string_to_insert_text_after". Вы можете передать несколько sed команды вместе, чтобы вставить несколько строк.

В Amazon Linux 2 вы можете использовать Procfile для этого, например

web: puma -C /var/app/current/config/puma.rb

Дополнительную информацию см. В документации по адресу https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ruby-platform-procfile.html.