Elastic Beanstalk:自定义Puma配置

时间:2018-03-19 10:30:02

标签: ruby-on-rails amazon-web-services elastic-beanstalk puma

Ruby + Puma的当前Beanstalk解决方案堆栈使用/opt/elasticbeanstalk/support/conf/pumaconf.rb处的配置文件,并忽略Rails应用程序目录中的config/puma.rb

我可以通过.ebextensions使用自定义文件覆盖上面的文件,但我犹豫不决,因为我想避免破坏,以防PID路径或 - 更重要的是 - unix套接字文件在即将发布的解决方案堆栈中发生变化版本

在Beanstalk上自定义Puma配置的最佳做法是什么?

2 个答案:

答案 0 :(得分:3)

我们使用Ruby + Passenger,但听起来与您的情况相似。我们需要自定义存储在/opt/elasticbeanstalk/support/conf/nginx_config.erb的nginx配置文件,因此我们通过.ebextensionssed来完成。

这是一个让你入门的例子:

<强> .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标志),然后在“string_to_insert_text_after”行之后插入“text_to_be_inserted”行。您可以将多个sed命令组合在一起以插入多行。

答案 1 :(得分:0)

在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上的文档。