Implementación de una aplicación Symfony en Elastic Beanstalk - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementación de una aplicación Symfony en Elastic Beanstalk

Symfony es un marco de código abierto para el desarrollo de aplicaciones web PHP dinámicas. Este tutorial te guía por el proceso de generar una aplicación Symfony y desplegarla en un AWS Elastic Beanstalk entorno.

Requisitos previos

Este tutorial asume que tiene conocimiento de las operaciones básicas de Elastic Beanstalk y de la consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones que se indican en Introducción a Elastic Beanstalk para lanzar su primer entorno de Elastic Beanstalk.

Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema ($) y del nombre del directorio actual, si es aplicable.

~/eb-project$ this is a command this is output

En Linux y macOS, puede utilizar el administrador de shell y paquetes preferido. En Windows, puede instalar el subsistema de Windows para Linux para obtener una versión de Ubuntu y Bash integrada en Windows.

Symfony 4.4.9 requiere PHP 7.1.3 o posterior. También requiere las extensiones de PHP enumeradas en el tema de requisitos técnicos en la documentación oficial de instalación de Symfony. En este tutorial, utilizamos PHP 7.2 y la versión correspondiente de la plataformaElastic Beanstalk. Siga las instrucciones del tema Configuración del entorno de desarrollo de PHP para instalar PHP y Composer.

Para obtener información de soporte y mantenimiento de Symfony, consulte el tema de versiones de Symfony en el sitio web de Symfony. Con el fin de obtener más información acerca de las actualizaciones relacionadas con el soporte de versiones de PHP para Symfony 4.4.9, consulte el tema de notas de la versión de Symfony 4.4.9 en el sitio web de Symfony.

Lance un entorno de Elastic Beanstalk

Utilice la consola de Elastic Beanstalk para crear un entorno de Elastic Beanstalk. Elija la plataforma PHP y acepte la configuración predeterminada y el código de muestra.

Para lanzar un entorno (consola)
  1. Abra la consola de Elastic Beanstalk mediante este enlace preconfigurado: console.aws.amazon.com/elasticbeanstalk/home#/ newApplication?applicationName=Tutorials &EnvironmentType= LoadBalanced

  2. En Platform (Plataforma), seleccione la plataforma y la ramificación de plataforma que coincidan con el idioma utilizado por la aplicación.

  3. En Application code (Código de aplicación), seleccione Sample application (Aplicación de muestra).

  4. Elija Review and launch (Revisar y lanzar).

  5. Revise las opciones disponibles. Elija la opción disponible que quiera usar y, cuando esté listo, elija Create app (Crear aplicación).

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:

  • Instancia de EC2: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elija.

    Cada plataforma ejecuta un conjunto específico de software, archivos de configuración y scripts compatibles con una determinada versión de lenguaje, marco de trabajo y contenedor web (o una combinación de estos). La mayoría de las plataformas utilizan Apache o nginx como un proxy inverso que se sitúa delante de la aplicación web, reenvía las solicitudes a esta, administra los recursos estáticos y genera registros de acceso y errores.

  • Instance security group (Grupo de seguridad de la instancia): grupo de seguridad de Amazon EC2 configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente del balanceador de carga llegue a la instancia EC2 en la que se ejecuta la aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.

  • Balanceador de carga: balanceador de carga de Elastic Load Balancing configurado para distribuir solicitudes a las instancias que se ejecutan en la aplicación. Los balanceadores de carga también permiten que las instancias no estén expuestas directamente a Internet.

  • Grupo de seguridad del balanceador de carga: grupo de seguridad de Amazon EC2 configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al balanceador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.

  • Grupo de Auto Scaling: grupo de Auto Scaling configurado para reemplazar una instancia si termina o deja de estar disponible.

  • Bucket de Amazon S3: ubicación de almacenamiento para el código fuente, los registros y otros artefactos que se crean al utilizar Elastic Beanstalk.

  • CloudWatch Alarmas de Amazon: dos CloudWatch alarmas que monitorean la carga de las instancias de su entorno y que se activan si la carga es demasiado alta o demasiado baja. Cuando se activa una alarma, en respuesta, el grupo de Auto Scaling aumenta o reduce los recursos.

  • AWS CloudFormation pila: Elastic AWS CloudFormation Beanstalk se utiliza para lanzar los recursos de su entorno y propagar los cambios de configuración. Los recursos se definen en una plantilla que puede verse en la consola de AWS CloudFormation.

  • Nombre de dominio: nombre de dominio que direcciona el tráfico a la aplicación web con el formato subdominio.región.elasticbeanstalk.com.

    nota

    Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio elasticbeanstalk.com está registrado en la lista de sufijos públicos (PSL). Para mayor seguridad, se recomienda que utilice cookies con un prefijo __Host- en caso de que necesite configurar cookies confidenciales en el nombre de dominio predeterminado de sus aplicaciones de Elastic Beanstalk. Esta práctica le ayudará a defender su dominio contra intentos de falsificación de solicitudes entre sitios (CSRF). Para obtener más información, consulte la página de configuración de cookies en la red de desarrolladores de Mozilla.

Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk termina todos los recursos que este contiene.

nota

El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se elimina durante la terminación del entorno. Para obtener más información, consulte Usar Elastic Beanstalk con Amazon S3.

Instalación de Symfony y generación de un sitio web

Composer puede instalar Symfony y crear un proyecto de trabajo con un único comando:

~$ composer create-project symfony/website-skeleton eb-symfony

Composer instala Symfony y sus dependencias y genera un proyecto predeterminado.

Si tiene algún problema al instalar Symfony, vaya al tema de instalación en la documentación oficial de Symfony.

Implementar la aplicación

Vaya al directorio del proyecto.

~$ cd eb-symfony

Cree un paquete de código fuente que contenga los archivos creados por Composer. El comando siguiente crea un paquete de código fuente denominado symfony-default.zip. Excluye los archivos de la carpeta vendor, que ocupan mucho espacio y no se requieren para implementar la aplicación en Elastic Beanstalk.

eb-symfony$ zip ../symfony-default.zip -r * .[^.]* -x "vendor/*"

Cargue el paquete de origen en Elastic Beanstalk para implementar Symfony en su entorno.

Para implementar un paquete de código fuente
  1. Abra la consola de Elastic Beanstalk y, en la lista Regiones, seleccione su. Región de AWS

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En la página de información general del entorno, elija Upload and deploy (Cargar e implementar).

  4. Utilice el cuadro de diálogo en pantalla para cargar el paquete de código fuente.

  5. Elija Deploy (Implementar).

  6. Cuando se complete la implementación, seleccione la URL del para abrir el sitio web en una nueva pestaña.

nota

Para optimizar aun más el paquete de código fuente, inicialice un repositorio Git y use el comando git archive para crear el paquete de código fuente. El proyecto Symfony predeterminado incluye un archivo .gitignore que indica a Git que debe excluir la carpeta vendor y los demás archivos que no se requieren para la implementación.

Configuración de los ajustes de Composer

Cuando la implementación se complete, haga clic en la URL para abrir la aplicación de Symfony en el navegador.

¿Qué es esto? De forma predeterminada, Elastic Beanstalk proporciona la raíz del proyecto en la ruta raíz del sitio web. En este caso, sin embargo, la página predeterminada (app.php) está un nivel por debajo de la carpeta web. Puede comprobarlo agregando /public a la URL. Por ejemplo, http://symfony.us-east-2.elasticbeanstalk.com/public.

Para que la aplicación Symfony esté disponible en la ruta raíz, utilice la consola de Elastic Beanstalk con el fin de configurar la raíz del documento del sitio web.

Para configurar la raíz de documentos del sitio web
  1. Abra la consola de Elastic Beanstalk y, en la lista Regiones, seleccione su. Región de AWS

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Configuration (Configuración).

  4. En la categoría de configuración Actualizaciones, supervisión y registro, seleccione Editar.

  5. En Document root (Raíz del documento), introduzca /public.

  6. Para guardar los cambios, elija Aplicar en la parte inferior de la página.

  7. Cuando la actualización se haya completado, haga clic en la URL para volver a abrir el sitio en el navegador.

Limpieza

Cuando termine de trabajar con Elastic Beanstalk, puede terminar su entorno. Elastic Beanstalk AWS cancela todos los recursos asociados al entorno, como las instancias de Amazon EC2, las instancias de bases de datos, los balanceadoresde carga, los grupos de seguridad y las alarmas.

Para cerrar el entorno de Elastic Beanstalk desde la consola
  1. Abra la consola de Elastic Beanstalk y, en la lista Regiones, seleccione su. Región de AWS

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. Elija Actions (Acciones) y, a continuación, Terminate Environment (Terminar el entorno).

  4. Utilice el cuadro de diálogo en pantalla para confirmar la terminación del entorno.

Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.

Siguientes pasos

Para obtener más información acerca de Symfony, consulte What is Symfony? en symfony.com.

A medida que siga desarrollando la aplicación, es probable que desee contar con un mecanismo que le permita administrar los entornos e implementar la aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la consola de Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (EB CLI easy-to-use ) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la línea de comandos.

En este tutorial, ha utilizado la consola de Elastic Beanstalk para configurar las opciones de Composer. Para integrar esta configuración en el código fuente de la aplicación, puede utilizar un archivo de configuración similar al siguiente.

ejemplo .ebextensions/composer.config
option_settings: aws:elasticbeanstalk:container:php:phpini: document_root: /public

Para obtener más información, consulte Personalización avanzada de entornos con archivos de configuración (.ebextensions).

Symfony utiliza sus propios archivos de configuración para configurar las conexiones a las bases de datos. Para obtener instrucciones acerca de cómo conectarse a una base de datos con Symfony, consulte Conexión a una base de datos con Symfony.

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá configurar un nombre de dominio personalizado para el entorno y habilitar HTTPS para las conexiones seguras.