La pila de soluciones Beanstalk actual para Ruby + Puma usa el archivo de configuración en /opt/elasticbeanstalk/support/conf/pumaconf.rb
e ignora config/puma.rb
dentro del directorio de la aplicación Rails.
Podría anular el archivo anterior con uno personalizado a través .ebextensions
pero dudo porque me gustaría evitar la rotura en caso de que la ruta al PID o, lo que es más importante, los archivos de socket de Unix cambien en las próximas versiones de la pila de soluciones.
¿Cuál es la mejor práctica para personalizar la configuración de Puma en Beanstalk?
Usamos Ruby+Passenger, pero suena lo suficientemente similar a su situación. Necesitamos personalizar el archivo de configuración de nginx almacenado en /opt/elasticbeanstalk/support/conf/nginx_config.erb
, así que lo hacemos a través .ebextensions
y sed
.
He aquí un ejemplo para empezar:
.ebextensions/01-editar-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\""
Esto hará una copia de seguridad del archivo de configuración (sin sobrescribirlo si ya existe, gracias al indicador -n
) y luego insertará la línea "text_to_be_inserted" después de la línea "string_to_insert_text_after". Puede canalizar varios comandos sed
para insertar varias líneas.
En Amazon Linux 2, puede usar Procfile
para hacer esto, por ejemplo
web: puma -C /var/app/current/config/puma.rb
Consulte los documentos en https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ruby-platform-procfile.html para obtener más información.