

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.

# Ejemplos avanzados de PHP en Elastic Beanstalk
<a name="php-samples"></a>

Para empezar a utilizar las aplicaciones PHP AWS Elastic Beanstalk, necesita cargar un [paquete de código fuente](applications-sourcebundle.md) de la aplicación como primera versión de la aplicación para implementarla en un entorno. 

Recomendamos la [QuickStart para PHP](php-quickstart.md) para empezar con una aplicación PHP sencilla implementada con la CLI de EB.

**Topics**
+ [Añadir una base de datos](create_deploy_PHP.rds.md)
+ [Tutorial: Laravel](php-laravel-tutorial.md)
+ [Tutorial: CakePHP](php-cakephp-tutorial.md)
+ [Tutorial: Symfony](php-symfony-tutorial.md)
+ [Tutorial: producción de HA](php-ha-tutorial.md)
+ [Tutorial: HA WordPress](php-hawordpress-tutorial.md)
+ [Tutorial: HA Drupal](php-hadrupal-tutorial.md)

# Adición de una instancia de base de datos de Amazon RDS a su entorno de PHP Elastic Beanstalk
<a name="create_deploy_PHP.rds"></a>

En este tema se proporcionan instrucciones para crear un Amazon RDS mediante la consola de Elastic Beanstalk. Puede utilizar una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para almacenar datos recopilados y modificados por su aplicación. La base de datos se puede adjuntar al entorno y administrarse con Elastic Beanstalk, o bien, crearse como desacoplada y administrarse de forma externa a través de otro servicio. En estas instrucciones, la base de datos se acoplará al entorno y se administrará con Elastic Beanstalk. Para obtener más información sobre el uso de Elastic Beanstalk con Amazon RDS, consulte [Añadir una base de datos al entorno de Elastic Beanstalk](using-features.managing.db.md).

**Topics**
+ [Añadir una instancia de base de datos al entorno](#php-rds-create)
+ [Descargar un controlador](#php-rds-drivers)
+ [Conectarse a una base de datos con un PDO o My SQLi](#php-rds-connect)
+ [Conexión a una base de datos con Symfony](#php-rds-symfony)

## Añadir una instancia de base de datos al entorno
<a name="php-rds-create"></a>

**Para agregar una instancia de base de datos al entorno**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

1. En la categoría de configuración **Database (Base de datos)**, seleccione **Edit (Edición de)**.

1. Seleccione un motor de base de datos y escriba el nombre de usuario y la contraseña.

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

Se tarda alrededor de 10 minutos en añadir una instancia de base de datos. Cuando se haya completado la actualización del entorno, el nombre de host de la instancia de base de datos y otra información de conexión estarán disponibles para su aplicación mediante las siguientes propiedades de entorno


| Nombre de la propiedad | Descripción | Valor de la propiedad | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  El nombre de host de la instancia de base de datos.  |  En la pestaña **Connectivity & security (Conectividad y seguridad)** de la consola de Amazon RDS: **Endpoint (Punto de conexión)**.  | 
|  `RDS_PORT`  |  El puerto en donde la instancia de base de datos acepta las conexiones. El valor predeterminado varía dependiendo del motor de base de datos.  |  En la pestaña **Connectivity & security (Conectividad y seguridad)** de la consola de Amazon RDS: **Port (Puerto)**.  | 
|  `RDS_DB_NAME`  |  El nombre de la base de dato, **ebdb**.  |  En la pestaña **Configuration (Configuración)** de la consola de Amazon RDS: **DB Name (Nombre de la base de datos)**.  | 
|  `RDS_USERNAME`  |  El nombre de usuario que ha configurado para la base de datos.  |  En la pestaña **Configuration (Configuración)** de la consola de Amazon RDS: **Master username (Nombre de usuario maestro)**.  | 
|  `RDS_PASSWORD`  |  La contraseña que ha configurado para la base de datos.  |  No está disponible como referencia en la consola de Amazon RDS.  | 

Para obtener más información sobre la configuración de una instancia de bases de datos acopladas a un entorno de Elastic Beanstalk, consulte [Añadir una base de datos al entorno de Elastic Beanstalk](using-features.managing.db.md).

## Descargar un controlador
<a name="php-rds-drivers"></a>

Si desea utilizar PHP Data Objects (PDO) para conectarse a la base de datos, instale el driver que corresponda al motor de base de datos elegido.
+ **MySQL** – [http://php.net/manual/en/ref.pdo-mysql.php](http://php.net/manual/en/ref.pdo-mysql.php)
+ **PostgreSQL** – [http://php.net/manual/en/ref.pdo-pgsql.php](http://php.net/manual/en/ref.pdo-pgsql.php)
+ **Oracle**: [http://php.net/manual/en/ref.pdo-oci.php](http://php.net/manual/en/ref.pdo-oci.php)
+ **SQL Server** – [http://php.net/manual/en/ref.pdo-sqlsrv.php](http://php.net/manual/en/ref.pdo-sqlsrv.php)

Para obtener más información, consulte [http://php.net/manual/en/pdo.installation.php](http://php.net/manual/en/pdo.installation.php).

## Conectarse a una base de datos con un PDO o My SQLi
<a name="php-rds-connect"></a>

Puede utilizar `$_SERVER[`VARIABLE`]` para leer la información de conexión del entorno.

Para obtener un PDO, cree un nombre de origen de datos (DSN) a partir del host, el puerto y el nombre. Pase el DSN al [constructor del PDO](https://php.net/manual/en/pdo.construct.php) con el nombre de usuario y la contraseña de la base de datos.

**Example Conexión con una base de datos de RDS a través de PDO - MySQL**  

```
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$charset = 'utf8' ;

$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];

$pdo = new PDO($dsn, $username, $password);
?>
```

Si utiliza otros controladores, sustituya `mysql` por el nombre del controlador: `pgsql`, `oci` o `sqlsrv`.

En el caso de MySQLi, pase el nombre de host, el nombre de usuario, la contraseña, el nombre de la base de datos y el `mysqli` puerto al constructor.

**Example Conexión con una base de datos de RDS a través de mysqli\$1connect()**  

```
$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
```

## Conexión a una base de datos con Symfony
<a name="php-rds-symfony"></a>

Para Symfony versión 3.2 y posteriores, puede utilizar `%env(PROPERTY_NAME)%` para establecer los parámetros de base de datos en un archivo de configuración en función de las propiedades de entorno establecidas por Elastic Beanstalk.

**Example app/config/parameters.yml**  

```
parameters:
    database_driver:   pdo_mysql
    database_host:     '%env(RDS_HOSTNAME)%'
    database_port:     '%env(RDS_PORT)%'
    database_name:     '%env(RDS_DB_NAME)%'
    database_user:     '%env(RDS_USERNAME)%'
    database_password: '%env(RDS_PASSWORD)%'
```

Consulte [External Parameters (Symfony 3.4)](http://symfony.com/doc/3.4/configuration/external_parameters.html) para obtener más información.

Para versiones anteriores de Symfony, las variables de entorno solo están accesibles si comienzan por `SYMFONY__`. Esto significa que las propiedades de entorno definidas por Elastic Beanstalk no están accesibles, por lo que deberá definir expresamente sus propiedades de entorno para pasar a Symfony la información de conexión.

Para conectarse a una base de datos con Symfony 2, [cree una propiedad de entorno](create_deploy_PHP.container.md#php-console-properties) para cada parámetro. A continuación, utilice `%property.name%` para obtener acceso a la variable transformada por Symfony en un archivo de configuración. Por ejemplo, a una propiedad del entorno denominada `SYMFONY__DATABASE__USER` se puede tener acceso como `database.user`.

```
    database_user:     "%database.user%"
```

Consulte [External Parameters (Symfony 2.8)](http://symfony.com/doc/2.8/configuration/external_parameters.html) para obtener más información.

# Implementación de una aplicación de Laravel en Elastic Beanstalk
<a name="php-laravel-tutorial"></a>

Laravel es un framework de código abierto model-view-controller (MVC) para PHP. En este tutorial, se explica el proceso de generación de una aplicación Laravel, su despliegue en un AWS Elastic Beanstalk entorno y su configuración para que se conecte a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS).

**Topics**
+ [Requisitos previos](#php-laravel-tutorial-prereqs)
+ [Lance un entorno de Elastic Beanstalk](#php-laravel-tutorial-launch)
+ [Instalación de Laravel y creación de un sitio web](#php-laravel-tutorial-generate)
+ [Implementar la aplicación](#php-laravel-tutorial-deploy)
+ [Configuración de los ajustes de Composer](#php-laravel-tutorial-configure)
+ [Agregar una base de datos al entorno](#php-laravel-tutorial-database)
+ [Limpieza](#php-laravel-tutorial-cleanup)
+ [Siguientes pasos](#php-laravel-tutorial-nextsteps)

## Requisitos previos
<a name="php-laravel-tutorial-prereqs"></a>

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 [Cómo empezar a utilizar Elastic Beanstalk](GettingStarted.md) 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 (\$1) 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 Windows Subsystem para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obtener una versión de Ubuntu y Bash integrada con Windows.

Laravel 6 requiere PHP 7.2 o posterior. También requiere las extensiones de PHP enumeradas en el tema [requisitos del servidor](https://laravel.com/docs/6.x/installation#server-requirements) en la documentación oficial de Laravel. Siga las instrucciones para instalar PHP y Composer.

Para obtener información sobre soporte y mantenimiento de Laravel, consulte el tema de la [política de soporte](https://laravel.com/docs/master/releases#support-policy) en la documentación oficial de Laravel.

## Lance un entorno de Elastic Beanstalk
<a name="php-laravel-tutorial-launch"></a>

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\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

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

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  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.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador 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**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático 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 escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic 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 CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
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 ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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 [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Instalación de Laravel y creación de un sitio web
<a name="php-laravel-tutorial-generate"></a>

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

```
~$ composer create-project --prefer-dist laravel/laravel eb-laravel
```

Composer instala Laravel y sus dependencias, y genera un proyecto predeterminado.

[Si tienes algún problema al instalar Laravel, consulta el tema de instalación de la documentación oficial: 6.x. https://laravel.com/docs/](https://laravel.com/docs/6.x) 

## Implementar la aplicación
<a name="php-laravel-tutorial-deploy"></a>

Cree un [paquete de código fuente](applications-sourcebundle.md) que contenga los archivos creados por Composer. El comando siguiente crea un paquete de código fuente denominado `laravel-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-laravel$ zip ../laravel-default.zip -r * .[^.]* -x "vendor/*"
```

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

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

1. 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`](applications-sourcebundle.md#using-features.deployment.source.git) para crear el paquete de código fuente. El proyecto Laravel 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
<a name="php-laravel-tutorial-configure"></a>

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

![\[Error message indicating no permission to access or on this server.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/php-laravel-403.png)


¿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 (`index.php`) está un nivel por debajo de la carpeta `public`. Puede comprobarlo agregando `/public` a la URL. Por ejemplo, `http://laravel.us-east-2.elasticbeanstalk.com/public`.

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

**Para configurar la raíz de documentos del sitio web**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

1. En **Document Root (Raíz del documento)**, introduzca **/public**.

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

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

![\[Laravel logo with navigation menu items: Documentation, Laracasts, News, Forge, GitHub.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/php-laravel-defaultnodb.png)


Hasta el momento, todo fue bien. A continuación, debe agregar una base de datos al entorno y configurar Laravel para que se conecte a ella.

## Agregar una base de datos al entorno
<a name="php-laravel-tutorial-database"></a>

Inicie una instancia de base de datos de RDS en su entorno de Elastic Beanstalk. Puede usar bases de datos MySQL o PostgreSQL con Laravel en Elastic Beanstalk. SQLServer En este ejemplo, utilizaremos MySQL.

**Para agregar una instancia de base de datos de RDS a su entorno Elastic Beanstalk**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

1. En la categoría de configuración **Database (Base de datos)**, seleccione **Edit (Edición de)**.

1. En **Engine (Motor)**, seleccione **mysql**.

1. Escriba un **nombre de usuario** y **contraseña** maestros. Elastic Beanstalk proporcionará estos valores a la aplicación a través de propiedades de entorno.

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

Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Para obtener más información sobre las bases de datos acopladas a un entorno de Elastic Beanstalk, consulte [Añadir una base de datos al entorno de Elastic Beanstalk](using-features.managing.db.md).

Mientras tanto, puede actualizar el código fuente para que pueda leer la información de conexión del entorno. Elastic Beanstalk proporciona la información de la conexión a través de variables de entorno, como `RDS_HOSTNAME`, a las que puede obtener acceso desde la aplicación.

La configuración de base de datos de Laravel se guarda en un archivo llamado `database.php` en la carpeta `config` del proyecto de código. Busque la entrada `mysql` y modifique las variables `host`, `database`, `username` y `and password` de forma que lean los valores correspondientes en Elastic Beanstalk:

**Example \$1/Eb- .php laravel/config/database**  

```
...
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('RDS_HOSTNAME', '127.0.0.1'),
            'port' => env('RDS_PORT', '3306'),
            'database' => env('RDS_DB_NAME', 'forge'),
            'username' => env('RDS_USERNAME', 'forge'),
            'password' => env('RDS_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
...
```

Para comprobar que la conexión de la base de datos está configurada correctamente, agregue código a `index.php` para conectarse a la base de datos y también para la respuesta predeterminada:

**Example \$1/Eb-.php laravel/public/index**  

```
...
if(DB::connection()->getDatabaseName())
{
   echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
```

Cuando finalice el lanzamiento de la instancia de base de datos, empaquete e implemente la aplicación actualizada en el entorno.

**Para actualizar su entorno de Elastic Beanstalk**

1. Cree un nuevo paquete de código fuente:

   ```
   ~/eb-laravel$ zip ../laravel-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. Elija **Upload and Deploy (Cargar e implementar)**.

1. Seleccione **Browse (Examinar)** y cargue `laravel-v2-rds.zip`.

1. Elija **Implementar**.

La implementación de una nueva versión de la aplicación tarda menos de un minuto. Cuando se haya completado, actualice la página web de nuevo para comprobar que la conexión con la base de datos es correcta:

![\[Laravel website header with navigation menu items for Documentation, Laracasts, News, Forge, and GitHub.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/php-laravel-defaultwdb.png)


## Limpieza
<a name="php-laravel-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk. Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para restaurar los datos posteriormente en otra instancia.

**Para terminar la instancia de base de datos de RDS**

1. Abra la [consola de Amazon RDS](https://console.aws.amazon.com/rds).

1. Seleccione **Bases de datos**.

1. Seleccione la instancia de base de datos.

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. Decida si desea crear una instantánea y seleccione **Delete (Eliminar)**.

## Siguientes pasos
<a name="php-laravel-tutorial-nextsteps"></a>

Para obtener más información sobre Laravel, visite el sitio web oficial de Laravel en [laravel.com](https://laravel.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-cli3.md) (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.

**Example .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`)](ebextensions.md).

Ejecutar una instancia de base de datos de Amazon RDS; en el entorno de Elastic Beanstalk es ideal para desarrollo y pruebas, pero supedita el ciclo de vida de la base de datos al entorno. Consulte [Adición de una instancia de base de datos de Amazon RDS a su entorno de PHP Elastic Beanstalk](create_deploy_PHP.rds.md) para obtener instrucciones acerca de cómo conectarse a una base de datos que se ejecute fuera del entorno.

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.

# Implementación de una aplicación de CakePHP en Elastic Beanstalk
<a name="php-cakephp-tutorial"></a>

CakePHP es un marco MVC de código abierto para PHP. En este tutorial, se explica paso a paso cómo se genera un proyecto de CakePHP, cómo se implementa en un entorno de Elastic Beanstalk y cómo se configura para conectarlo a una instancia de base de datos de Amazon RDS.

**Topics**
+ [Requisitos previos](#php-cakephp-tutorial-prereqs)
+ [Lance un entorno de Elastic Beanstalk](#php-cakephp-tutorial-launch)
+ [Instalación de CakePHP y creación de un sitio web](#php-cakephp-tutorial-generate)
+ [Implementar la aplicación](#php-cakephp-tutorial-deploy)
+ [Agregar una base de datos al entorno](#php-cakephp-tutorial-database)
+ [Limpieza](#php-cakephp-tutorial-cleanup)
+ [Siguientes pasos](#php-cakephp-tutorial-nextsteps)

## Requisitos previos
<a name="php-cakephp-tutorial-prereqs"></a>

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 [Cómo empezar a utilizar Elastic Beanstalk](GettingStarted.md) 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 (\$1) 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 Windows Subsystem para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obtener una versión de Ubuntu y Bash integrada con Windows.

CakePHP 4 requiere PHP 7.4 o posterior. También requiere las extensiones de PHP enumeradas en la documentación oficial de [instalación de CakePHP](https://book.cakephp.org/4/en/installation.html) . Debe instalar tanto PHP como Composer.

## Lance un entorno de Elastic Beanstalk
<a name="php-cakephp-tutorial-launch"></a>

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\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

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

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  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.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador 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**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático 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 escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic 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 CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
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 ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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 [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Instalación de CakePHP y creación de un sitio web
<a name="php-cakephp-tutorial-generate"></a>

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

```
~$ composer create-project --prefer-dist cakephp/app eb-cake
```

Composer instala CakePHP y unas 20 dependencias, y genera un proyecto predeterminado.

Si tiene algún problema al instalar CakePHP, visite el tema de instalación en la documentación oficial: [http://book.cakephp.org/4.0/en/installation.html](http://book.cakephp.org/4.0/en/installation.html)

## Implementar la aplicación
<a name="php-cakephp-tutorial-deploy"></a>

Cree un [paquete de código fuente](applications-sourcebundle.md) que contenga los archivos creados por Composer. El comando siguiente crea un paquete de código fuente denominado `cake-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-cake zip ../cake-default.zip -r * .[^.]* -x "vendor/*"
```

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

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

1. 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`](applications-sourcebundle.md#using-features.deployment.source.git) 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.

Cuando el proceso se complete, haga clic en la URL para abrir su aplicación CakePHP en el navegador.

Hasta el momento, todo fue bien. A continuación, va a agregar una base de datos al entorno y a configurar CakePHP para que se conecte a ella.

## Agregar una base de datos al entorno
<a name="php-cakephp-tutorial-database"></a>

Inicie una instancia de base de datos de Amazon RDS en su entorno de Elastic Beanstalk. Puede usar bases de datos MySQL o PostgreSQL con CakePHP en Elastic Beanstalk. SQLServer En este ejemplo, vamos a utilizar PostgreSQL.

**Para agregar una instancia de base de datos de Amazon RDS a su entorno de Elastic Beanstalk**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En **Database (Base de datos)**, elija **Edit (Edición de)**.

1. En **DB engine (Motor de base de datos)**, seleccione **postgres**.

1. Escriba un **nombre de usuario** y **contraseña** maestros. Elastic Beanstalk proporcionará estos valores a la aplicación a través de propiedades de entorno.

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

Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, puede actualizar el código fuente para que pueda leer la información de conexión del entorno. Elastic Beanstalk proporciona la información de la conexión a través de variables de entorno, como `RDS_HOSTNAME`, a las que puede obtener acceso desde la aplicación.

La configuración de base de datos de CakePHP se encuentra en un archivo llamado `app.php` de la carpeta `config` del proyecto de código. Abra este archivo y agregue código que permita leer las variables de entorno de `$_SERVER` y las asigne a variables locales. Inserte las líneas resaltadas en el siguiente ejemplo, detrás de la primera línea (`<?php`):

**Example \$1/Eb- .php cake/config/app**  

```
<?php
if (!defined('RDS_HOSTNAME')) {
  define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
  define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
  define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
  define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
```

La conexión de la base de datos está configurada más adelante en el archivo `app.php`. Busque la sección siguiente y modifique la configuración predeterminada de las fuentes de datos con el nombre del controlador que corresponda al motor de base de datos (`Mysql`, `Sqlserver` o `Postgres`) y configure las variables `host`, `username`, `password` y `database` para que lean los valores correspondientes en Elastic Beanstalk:

**Example \$1/Eb-.php cake/config/app**  

```
...
     /**
     * Connection information used by the ORM to connect
     * to your application's datastores.
     * Drivers include Mysql Postgres Sqlite Sqlserver
     * See vendor\cakephp\cakephp\src\Database\Driver for complete list
     */
    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Postgres',
            'persistent' => false,
            'host' => RDS_HOSTNAME,
            /*
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => RDS_USERNAME,
            'password' => RDS_PASSWORD,
            'database' => RDS_DB_NAME,
            /*
             * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6).
             */
            //'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
...
```

Cuando finalice el lanzamiento de la instancia de base de datos, empaquete e implemente la aplicación actualizada en el entorno:

**Para actualizar su entorno de Elastic Beanstalk**

1. Cree un nuevo paquete de código fuente:

   ```
   ~/eb-cake$ zip ../cake-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. Elija **Upload and Deploy (Cargar e implementar)**.

1. Seleccione **Browse (Examinar)** y cargue `cake-v2-rds.zip`.

1. Elija **Implementar**.

La implementación de una nueva versión de la aplicación tarda menos de un minuto. Cuando se haya completado, actualice la página web de nuevo para comprobar que la conexión con la base de datos es correcta:

![\[Green checkmark icon indicating successful database connection for CakePHP.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/php-cakephp-defaultwdb.png)


## Limpieza
<a name="php-cakephp-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk. Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para restaurar los datos posteriormente en otra instancia.

**Para terminar la instancia de base de datos de RDS**

1. Abra la [consola de Amazon RDS](https://console.aws.amazon.com/rds).

1. Seleccione **Bases de datos**.

1. Seleccione la instancia de base de datos.

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. Decida si desea crear una instantánea y seleccione **Delete (Eliminar)**.

## Siguientes pasos
<a name="php-cakephp-tutorial-nextsteps"></a>

Para obtener más información sobre CakePHP, consulte el libro en [book.cakephp.org](http://book.cakephp.org/4.0/en/index.html).

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-cli3.md) (EB CLI easy-to-use) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la línea de comandos.

Ejecutar una instancia de base de datos de Amazon RDS; en el entorno de Elastic Beanstalk es ideal para desarrollo y pruebas, pero supedita el ciclo de vida de la base de datos al entorno. Consulte [Adición de una instancia de base de datos de Amazon RDS a su entorno de PHP Elastic Beanstalk](create_deploy_PHP.rds.md) para obtener instrucciones acerca de cómo conectarse a una base de datos que se ejecute fuera del entorno.

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.

# Implementación de una aplicación Symfony en Elastic Beanstalk
<a name="php-symfony-tutorial"></a>

[Symfony](http://symfony.com/) 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.

**Topics**
+ [Requisitos previos](#php-symfony-tutorial-prereqs)
+ [Lance un entorno de Elastic Beanstalk](#php-symfony-tutorial-launch)
+ [Instalación de Symfony y generación de un sitio web](#php-symfony-tutorial-generate)
+ [Implementar la aplicación](#php-symfony-tutorial-deploy)
+ [Configuración de los ajustes de Composer](#php-symfony-tutorial-configure)
+ [Limpieza](#php-symfony-tutorial-cleanup)
+ [Siguientes pasos](#php-symfony-tutorial-nextsteps)

## Requisitos previos
<a name="php-symfony-tutorial-prereqs"></a>

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 [Cómo empezar a utilizar Elastic Beanstalk](GettingStarted.md) 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 (\$1) 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 Windows Subsystem para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obtener una versión de Ubuntu y Bash integrada con 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](https://symfony.com/doc/4.4/setup.html ) en la documentación oficial de instalación de Symfony. En este tutorial, utilizamos PHP 7.2 y la [versión correspondiente de la plataforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP)Elastic Beanstalk. Antes de continuar, debe instalar PHP y Composer.

Para obtener información de soporte y mantenimiento de Symfony, consulte el tema de [versiones de Symfony](https://symfony.com/releases) 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](https://symfony.com/blog/symfony-4-4-9-released) en el sitio web de Symfony.

## Lance un entorno de Elastic Beanstalk
<a name="php-symfony-tutorial-launch"></a>

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\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

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

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  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.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador 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**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático 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 escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic 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 CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
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 ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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 [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Instalación de Symfony y generación de un sitio web
<a name="php-symfony-tutorial-generate"></a>

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](https://symfony.com/doc/4.4/setup.html) en la documentación oficial de Symfony.

## Implementar la aplicación
<a name="php-symfony-tutorial-deploy"></a>

Vaya al directorio del proyecto.

```
~$ cd eb-symfony
```

Cree un [paquete de código fuente](applications-sourcebundle.md) 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](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

1. 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`](applications-sourcebundle.md#using-features.deployment.source.git) 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
<a name="php-symfony-tutorial-configure"></a>

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](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

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

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

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

## Limpieza
<a name="php-symfony-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

## Siguientes pasos
<a name="php-symfony-tutorial-nextsteps"></a>

Para obtener más información acerca de Symfony, consulte [What is Symfony?](https://symfony.com/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-cli3.md) (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.

**Example .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`)](ebextensions.md).

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](create_deploy_PHP.rds.md#php-rds-symfony).

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.

# Implementación de una aplicación PHP de alta disponibilidad con una base de datos externa de Amazon RDS en Elastic Beanstalk
<a name="php-ha-tutorial"></a>

Este tutorial explica el proceso de [lanzar una instancia de base de datos de RDS](AWSHowTo.RDS.md) externa y configurar un entorno de alta disponibilidad que ejecute una aplicación PHP para conectarse a él. AWS Elastic Beanstalk Si se ejecuta una instancia de base de datos externa en Elastic Beanstalk, la base de datos se desvincula del ciclo de vida del entorno. Esto le permite conectarse a la misma base de datos desde diferentes entornos, intercambiar una base de datos por otra o realizar una implementación azul/verde sin que ello afecte a la base de datos.

En este tutorial, se utiliza una [aplicación PHP de ejemplo](https://github.com/awslabs/eb-demo-php-simple-app) que emplea una base de datos MySQL para guardar los datos de texto proporcionados por el usuario. La aplicación de muestra utiliza [archivos de configuración](ebextensions.md) para configurar los [ajustes de PHP](create_deploy_PHP.container.md#php-namespaces) y crear una tabla en la base de datos para que la aplicación la utilice. También se muestra cómo utilizar un [archivo Composer](create_deploy_PHP.container.md#php-configuration-composer) para instalar paquetes durante la implementación.

**Topics**
+ [Requisitos previos](#php-hawrds-tutorial-prereqs)
+ [Inicie una instancia de base de datos en Amazon RDS](#php-hawrds-tutorial-database)
+ [Cree un entorno de Elastic Beanstalk](#php-hawrds-tutorial-create)
+ [Configuración de grupos de seguridad, propiedades de entorno y escalado](#php-hawrds-tutorial-configure)
+ [Implemente la aplicación de muestra.](#php-hawrds-tutorial-deploy)
+ [Limpieza](#php-hawrds-tutorial-cleanup)
+ [Siguientes pasos](#php-hawrds-tutorial-nextsteps)

## Requisitos previos
<a name="php-hawrds-tutorial-prereqs"></a>

[Antes de empezar, descargue el paquete fuente de la aplicación de muestra desde GitHub: -app-1.3.zip eb-demo-php-simple](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

Los procedimientos de este tutorial para las tareas de Amazon Relational Database Service (Amazon RDS) suponen que está iniciando recursos en una [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) predeterminada. Todas las nuevas cuentas contienen una VPC predeterminada en cada región. Si no dispone de una VPC predeterminada, los procedimientos serán diferentes. Consulte las instrucciones [Uso de Elastic Beanstalk con Amazon RDS](AWSHowTo.RDS.md) para las EC2 plataformas de VPC clásicas y personalizadas.

## Inicie una instancia de base de datos en Amazon RDS
<a name="php-hawrds-tutorial-database"></a>

Para utilizar una base de datos externa con una aplicación que se ejecuta en Elastic Beanstalk, primero lance una instancia de base de datos con Amazon RDS. Cuando inicia una instancia con Amazon RDS, es completamente independiente de Elastic Beanstalk y sus entornos Elastic Beanstalk, y Elastic Beanstalk no la finalizará ni supervisará.

Use la consola de Amazon RDS para lanzar una instancia de base de datos **MySQL** Multi-AZ. La elección de una implementación Multi-AZ garantiza que la base de datos realice una conmutación por error y siga estando disponible en caso de que la instancia de base de datos de origen quede fuera de servicio.

**Para lanzar una instancia de base de datos de RDS en una VPC predeterminada**

1. Abra la [consola de RDS](https://console.aws.amazon.com/rds/home).

1. En el panel de navegación, elija **Databases** (Bases de datos).

1. Elija **Create database (Creación de base de datos)**.

1. Elija **Standard Create (Creación estándar)**.
**importante**  
No elija la opción **Easy Create (Creación sencilla)**. Si lo elije, no puede configurar los ajustes necesarios para lanzar esta base de datos de RDS.

1. En **Additional configuration (Configuración adicional)**, escriba **ebdb** en **Initial database name (Nombre de base de datos inicial)**. 

1. Revise la configuración predeterminada y ajústela de acuerdo con sus requisitos específicos. Preste atención a las siguientes opciones:
   + **DB instance class (Clase de instancia de base de datos)**: elija un tamaño de instancia que cuente con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
   + **Implementación en zonas de disponibilidad múltiples**: para obtener una alta disponibilidad, configúrelo en **Crear un Replica/Reader nodo Aurora en una zona de disponibilidad diferente.**
   + **Master username (Nombre de usuario maestro)** y **Master password (Contraseña maestra)**: nombre de usuario y contraseña de la base de datos. Anote esta configuración, ya que la necesitará posteriormente.

1. Compruebe los valores predeterminados de las demás opciones y, a continuación, elija **Create database (Creación de base de datos)**.

A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir el tráfico entrante en el puerto correspondiente. Este es el mismo grupo de seguridad que asociará a su entorno de Elastic Beanstalk más adelante, por lo que la regla que añada concederá permiso de entrada a otros recursos del mismo grupo de seguridad.

**Para modificar las reglas de entrada del grupo de seguridad adjuntas a la instancia de RDS**

1. Abra la [ consola de Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Seleccione **Bases de datos**.

1. Elija el nombre de la instancia de base de datos para ver sus detalles.

1. En la sección **Conectividad**, tome nota de los valores de **Subredes**, **Grupos de seguridad** y **Punto de conexión** que aparecen en esta página. Esto es para que pueda utilizar esta información más adelante.

1. En **Security (Seguridad)** se muestra el grupo de seguridad que está asociado a la instancia de base de datos. Abre el enlace para ver el grupo de seguridad en la EC2 consola de Amazon.

1. En los detalles del grupo de seguridad, elija la pestaña **Inbound (Entrada)**.

1. Elija **Edit (Edición de)**.

1. Seleccione **Add Rule (Agregar regla)**.

1. En **Type (Tipo)**, elija el motor de base de datos que utiliza la aplicación.

1. En **Source (Origen)**, escriba **sg-** para ver una lista de grupos de seguridad disponibles. Elija el grupo de seguridad que está asociado al grupo de escalado automático que se utiliza con su entorno de Elastic Beanstalk. Esto es para que EC2 las instancias de Amazon del entorno puedan tener acceso a la base de datos.  
![\[Imagen de pantalla para editar las reglas de entrada de un grupo de seguridad en la EC2 consola de Amazon.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Seleccione **Save**.

Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, cree su entorno de Elastic Beanstalk.

## Cree un entorno de Elastic Beanstalk
<a name="php-hawrds-tutorial-create"></a>

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. Tras lanzar el entorno, puede configurarlo para que se conecte a la base de datos y, a continuación, implementar la aplicación de muestra desde GitHub la que la descargó.

**Para lanzar un entorno (consola)**

1. [Abra la consola de Elastic Beanstalk mediante este enlace preconfigurado: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

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

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  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.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador 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**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático 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 escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic 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 CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
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 ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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. La instancia de base de datos de RDS que lanzó se encuentra fuera de su entorno, por lo que usted es responsable de administrar su ciclo de vida.

**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 [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Configuración de grupos de seguridad, propiedades de entorno y escalado
<a name="php-hawrds-tutorial-configure"></a>

Agregue el grupo de seguridad de la instancia de base de datos al entorno en ejecución. Este procedimiento hace que Elastic Beanstalk vuelva a aprovisionar todas las instancias de su entorno con el grupo de seguridad adicional asociado.

**Para agregar un grupo de seguridad al entorno**
+ Realice una de las siguientes acciones:
  + Para añadir un grupo de seguridad mediante la consola de Elastic Beanstalk

    1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

    1. En la categoría de configuración **Instances (Instancias)**, elija **Edit (Edición de)**.

    1. En **grupos EC2 de seguridad**, elija el grupo de seguridad que desee adjuntar a las instancias, además del grupo de seguridad de instancias que cree Elastic Beanstalk.

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

    1. Lea la advertencia y, a continuación, elija **Confirm (Confirmar)**.
  + Para agregar un grupo de seguridad con un [archivo de configuración](ebextensions.md), utilice el archivo de ejemplo [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Después, utilice las propiedades de entorno para pasar la información de la conexión al entorno. La aplicación de muestra utiliza un conjunto predeterminado de propiedades que coinciden con las que Elastic Beanstalk configura al aprovisionar una base de datos en su entorno.

**Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

1. En la sección **Environment properties (Propiedades del entorno)**, defina las variables que lee la aplicación para crear una cadena de conexión. Para conseguir compatibilidad con los entornos que tienen una instancia de base de datos de RDS, utilice los siguientes nombres y valores. Encontrará todos los valores, excepto la contraseña, en la [consola de RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/php-ha-tutorial.html)  
![\[Sección Environment properties configuration (Configuración de propiedades del entorno) con propiedades de RDS añadidas\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

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

Por último, configure el grupo de escalado automático de su entorno con un número mínimo de instancias mayor. Ejecute al menos dos instancias en todo momento para evitar que los servidores web de su entorno se conviertan en un único punto de error y para poder implementar cambios sin que el sitio se quede fuera de servicio.

**Si desea configurar el grupo de escalado automático del entorno para disponer de una alta disponibilidad**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

1. En la categoría de configuración **Capacity (Capacidad)**, elija **Edit (Edición de)**.

1. En la sección **escalado automático group (grupo de escalado automático)** defina **Min instances (Instancias mínimas)** en **2**.

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

## Implemente la aplicación de muestra.
<a name="php-hawrds-tutorial-deploy"></a>

Ahora, el entorno está listo para ejecutar la aplicación de muestra y conectarse a Amazon RDS. Implemente la aplicación de muestra en el entorno.

**nota**  
[Descargue el paquete fuente desde GitHub, si aún no lo ha hecho: -app-1.3.zip eb-demo-php-simple](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

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

El sitio recopila los comentarios de los usuarios y utiliza una base de datos MySQL para almacenar los datos. Para agregar un comentario, elija **Share Your Thought (Compatir su opinión)**, escriba sus impresiones y seleccione **Submit Your Thought (Enviar su opinión)**. La aplicación web escribe el comentario en la base de datos para que cualquier instancia del entorno pueda leerlo y que no se pierda en caso de que las instancias se queden fuera de servicio.

![\[User interface for sharing thoughts, with a posted comment about Elastic Beanstalk on AWS.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/php-ha-tutorial-app.png)


## Limpieza
<a name="php-hawrds-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk. Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para restaurar los datos posteriormente en otra instancia.

**Para terminar la instancia de base de datos de RDS**

1. Abra la [consola de Amazon RDS](https://console.aws.amazon.com/rds).

1. Seleccione **Bases de datos**.

1. Seleccione la instancia de base de datos.

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. Decida si desea crear una instantánea y seleccione **Delete (Eliminar)**.

## Siguientes pasos
<a name="php-hawrds-tutorial-nextsteps"></a>

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-cli3.md) (EB CLI easy-to-use) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la línea de comandos.

La aplicación de muestra utiliza los archivos de configuración para configurar los ajustes de PHP y crear una tabla en la base de datos si no existe todavía. También puede utilizar un archivo de configuración para configurar el grupo de seguridad de las instancias durante la creación del entorno y evitar así la laboriosa tarea de actualizar la configuración. Para obtener más información, consulte [Personalización avanzada de entornos con archivos de configuración (`.ebextensions`)](ebextensions.md).

En las tareas de desarrollo y pruebas, es posible que desee utilizar la funcionalidad de Elastic Beanstalk para agregar una instancia de base de datos administrada directamente al entorno. Para obtener instrucciones acerca de cómo configurar una base de datos dentro del entorno, consulte [Añadir una base de datos al entorno de Elastic Beanstalk](using-features.managing.db.md).

Si necesita una base de datos de alto desempeño, considere la posibilidad de usar [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora es un motor de base de datos compatible con MySQL que ofrece características de bases de datos comerciales a bajo costo. Para conectar la aplicación a una base de datos diferente, repita los pasos de la [configuración del grupo de seguridad](#php-hawrds-tutorial-database) y [actualice las propiedades de entorno relacionadas con RDS](#php-hawrds-tutorial-configure). 

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.

# Implementación de un WordPress sitio web de alta disponibilidad con una base de datos externa de Amazon RDS en Elastic Beanstalk
<a name="php-hawordpress-tutorial"></a>

En este tutorial se describe cómo [lanzar una instancia de base de datos de Amazon RDS](AWSHowTo.RDS.md) externa y AWS Elastic Beanstalk, a continuación, cómo configurar un entorno de alta disponibilidad en el que se ejecute un WordPress sitio web para conectarse a él. El sitio web utiliza Amazon Elastic File System (Amazon EFS) como almacenamiento compartido para los archivos cargados.

Si se ejecuta una instancia de base de datos externa en Elastic Beanstalk, la base de datos se desvincula del ciclo de vida del entorno. Esto le permite conectarse a la misma base de datos desde diferentes entornos, intercambiar una base de datos por otra o realizar una [implementación blue/green](using-features.CNAMESwap.md) sin que ello afecte a la base de datos.

**nota**  
Para obtener información actualizada sobre la compatibilidad de las versiones de PHP con WordPress las versiones, consulte [Compatibilidad y WordPress versiones de PHP](https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/) en el WordPress sitio web. Debe consultar esta información antes de actualizar sus WordPress implementaciones a una nueva versión de PHP.

**Topics**
+ [Requisitos previos](#php-wordpress-tutorial-prereqs)
+ [Inicie una instancia de base de datos en Amazon RDS](#php-hawordpress-tutorial-database)
+ [Descarga WordPress](#php-hawordpress-tutorial-download)
+ [Lance un entorno de Elastic Beanstalk](#php-hawordpress-tutorial-launch)
+ [Configuración de grupos de seguridad y propiedades de entorno](#php-wordpress-tutorial-configure)
+ [Configuración e implementación de la aplicación](#php-wordpress-tutorial-deploy)
+ [Instale WordPress](#php-hawordpress-tutorial-install)
+ [Actualización de claves y sales](#php-hawordpress-tutorial-updatesalts)
+ [Eliminación de las restricciones de acceso](#php-hawordpress-tutorial-updateenv)
+ [Configure el grupo de escalado automático](#php-hawordpress-tutorial-autoscaling)
+ [Actualice WordPress](#php-hawordpress-tutorial-upgrade)
+ [Limpieza](#php-hawordpress-tutorial-cleanup)
+ [Siguientes pasos](#php-hawordpress-tutorial-nextsteps)

## Requisitos previos
<a name="php-wordpress-tutorial-prereqs"></a>

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 [Cómo empezar a utilizar Elastic Beanstalk](GettingStarted.md) 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 (\$1) 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 Windows Subsystem para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obtener una versión de Ubuntu y Bash integrada con Windows.

**VPC predeterminada**  
Los procedimientos de este tutorial de Amazon Relational Database Service (Amazon RDS) suponen que está iniciando recursos en una [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) predeterminada. Todas las cuentas nuevas incluyen una VPC predeterminada en cada AWS región. Si no dispone de una VPC predeterminada, los procedimientos serán diferentes. Consulte las instrucciones [Uso de Elastic Beanstalk con Amazon RDS](AWSHowTo.RDS.md) para las EC2 plataformas de VPC clásicas y personalizadas.

**AWS Regiones**  
La aplicación de ejemplo utiliza Amazon EFS, que solo funciona en AWS las regiones que admiten Amazon EFS. Para obtener más información sobre AWS las regiones compatibles, consulte los [puntos de enlace y las cuotas de Amazon Elastic File System](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) en. *Referencia general de AWS*

## Inicie una instancia de base de datos en Amazon RDS
<a name="php-hawordpress-tutorial-database"></a>

Cuando inicia una instancia con Amazon RDS, es completamente independiente de Elastic Beanstalk y sus entornos Elastic Beanstalk, y Elastic Beanstalk no la finalizará ni supervisará.

En los siguientes pasos, utilizará la consola de Amazon RDS para:
+ Lanzar una base de datos con el motor de **MySQL**.
+ Habilitar una **Multi-AZ deployment (Implementación Multi-AZ)**. Esto crea una zona de disponibilidad (AZ) en una zona de disponibilidad (AZ) diferente para proporcionar redundancia de datos, eliminar las I/O congelaciones y minimizar los picos de latencia durante las copias de seguridad del sistema.

**Para lanzar una instancia de base de datos de RDS en una VPC predeterminada**

1. Abra la [consola de RDS](https://console.aws.amazon.com/rds/home).

1. En el panel de navegación, elija **Databases** (Bases de datos).

1. Elija **Create database (Creación de base de datos)**.

1. Elija **Standard Create (Creación estándar)**.
**importante**  
No elija la opción **Easy Create (Creación sencilla)**. Si lo elije, no puede configurar los ajustes necesarios para lanzar esta base de datos de RDS.

1. En **Additional configuration (Configuración adicional)**, escriba **ebdb** en **Initial database name (Nombre de base de datos inicial)**. 

1. Revise la configuración predeterminada y ajústela de acuerdo con sus requisitos específicos. Preste atención a las siguientes opciones:
   + **DB instance class (Clase de instancia de base de datos)**: elija un tamaño de instancia que cuente con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
   + **Implementación en zonas de disponibilidad múltiples**: para obtener una alta disponibilidad, configúrelo en **Crear un Replica/Reader nodo Aurora en una zona de disponibilidad diferente.**
   + **Master username (Nombre de usuario maestro)** y **Master password (Contraseña maestra)**: nombre de usuario y contraseña de la base de datos. Anote esta configuración, ya que la necesitará posteriormente.

1. Compruebe los valores predeterminados de las demás opciones y, a continuación, elija **Create database (Creación de base de datos)**.

Una vez creada la instancia de base de datos, modifique el grupo de seguridad asociado para permitir el tráfico entrante en el puerto apropiado.

**nota**  
Este es el mismo grupo de seguridad que asociará a su entorno de Elastic Beanstalk más adelante, por lo que la regla que añada ahora concederá permiso de entrada a otros recursos del mismo grupo de seguridad.

**Para modificar las reglas de entrada del grupo de seguridad adjuntas a la instancia de RDS**

1. Abra la [ consola de Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Seleccione **Bases de datos**.

1. Elija el nombre de la instancia de base de datos para ver sus detalles.

1. En la sección **Conectividad**, tome nota de los valores de **Subredes**, **Grupos de seguridad** y **Punto de conexión** que aparecen en esta página. Esto es para que pueda utilizar esta información más adelante.

1. En **Security (Seguridad)** se muestra el grupo de seguridad que está asociado a la instancia de base de datos. Abre el enlace para ver el grupo de seguridad en la EC2 consola de Amazon.

1. En los detalles del grupo de seguridad, elija la pestaña **Inbound (Entrada)**.

1. Elija **Edit (Edición de)**.

1. Seleccione **Add Rule (Agregar regla)**.

1. En **Type (Tipo)**, elija el motor de base de datos que utiliza la aplicación.

1. En **Source (Origen)**, escriba **sg-** para ver una lista de grupos de seguridad disponibles. Elija el grupo de seguridad que está asociado al grupo de escalado automático que se utiliza con su entorno de Elastic Beanstalk. Esto es para que EC2 las instancias de Amazon del entorno puedan tener acceso a la base de datos.  
![\[Imagen de pantalla para editar las reglas de entrada de un grupo de seguridad en la EC2 consola de Amazon.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Seleccione **Save**.

Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, descargue WordPress y cree su entorno de Elastic Beanstalk.

## Descarga WordPress
<a name="php-hawordpress-tutorial-download"></a>

Para prepararse para la implementación WordPress mediante AWS Elastic Beanstalk, debe copiar los WordPress archivos en su ordenador y proporcionar la información de configuración correcta.

**Para crear un WordPress proyecto**

1. Descárgalo WordPress desde [wordpress.org](https://wordpress.org/download/).

   ```
   ~$curl https://wordpress.org/wordpress-6.2.tar.gz -o wordpress.tar.gz
   ```

1. Descargue los archivos de configuración del repositorio de muestra.

   ```
   ~$ wget https://github.com/aws-samples/eb-php-wordpress/releases/download/v1.1/eb-php-wordpress-v1.zip
   ```

1. Extrae WordPress y cambia el nombre de la carpeta.

   ```
    ~$ tar -xvf wordpress.tar.gz
    ~$ mv wordpress wordpress-beanstalk
    ~$ cd wordpress-beanstalk
   ```

1. Extraiga los archivos de configuración de la WordPress instalación.

   ```
    ~/wordpress-beanstalk$ unzip ../eb-php-wordpress-v1.zip
     creating: .ebextensions/
    inflating: .ebextensions/dev.config
    inflating: .ebextensions/efs-create.config
    inflating: .ebextensions/efs-mount.config
    inflating: .ebextensions/loadbalancer-sg.config
    inflating: .ebextensions/wordpress.config
    inflating: LICENSE
    inflating: README.md
    inflating: wp-config.php
   ```

## Lance un entorno de Elastic Beanstalk
<a name="php-hawordpress-tutorial-launch"></a>

Utilice la consola de Elastic Beanstalk para crear un entorno de Elastic Beanstalk. Tras lanzar el entorno, puede configurarlo para que se conecte a la base de datos y, a continuación, implementar el WordPress código en el entorno.

En los siguientes pasos, utilizará la consola de Elastic Beanstalk para:
+ Creación de una aplicación de Elastic Beanstalk mediante la plataforma **PHP** administrada.
+ Aceptar 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\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

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

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

### Elastic Beanstalk creó recursos
<a name="php-hawordpress-tutorial-launch.EB-resources"></a>
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  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.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador 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**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático 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 escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic 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 CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
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 ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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.

Dado que la instancia de base de datos de Amazon RDS que lanzó se encuentra fuera de su entorno, usted es responsable de administrar su ciclo de vida.

**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 [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Configuración de grupos de seguridad y propiedades de entorno
<a name="php-wordpress-tutorial-configure"></a>

Agregue el grupo de seguridad de la instancia de base de datos al entorno en ejecución. Este procedimiento hace que Elastic Beanstalk vuelva a aprovisionar todas las instancias de su entorno con el grupo de seguridad adicional asociado.

**Para agregar un grupo de seguridad al entorno**
+ Realice una de las siguientes acciones:
  + Para añadir un grupo de seguridad mediante la consola de Elastic Beanstalk

    1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

    1. En la categoría de configuración **Instances (Instancias)**, elija **Edit (Edición de)**.

    1. En **grupos EC2 de seguridad**, elija el grupo de seguridad que desee adjuntar a las instancias, además del grupo de seguridad de instancias que cree Elastic Beanstalk.

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

    1. Lea la advertencia y, a continuación, elija **Confirm (Confirmar)**.
  + Para agregar un grupo de seguridad con un [archivo de configuración](ebextensions.md), utilice el archivo de ejemplo [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Después, utilice las propiedades de entorno para pasar la información de la conexión al entorno.

La WordPress aplicación utiliza un conjunto predeterminado de propiedades que coinciden con las que Elastic Beanstalk configura al aprovisionar una base de datos en su entorno.

**Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

1. En la sección **Environment properties (Propiedades del entorno)**, defina las variables que lee la aplicación para crear una cadena de conexión. Para conseguir compatibilidad con los entornos que tienen una instancia de base de datos de RDS, utilice los siguientes nombres y valores. Encontrará todos los valores, excepto la contraseña, en la [consola de RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html)  
![\[Sección Environment properties configuration (Configuración de propiedades del entorno) con propiedades de RDS añadidas\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

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

## Configuración e implementación de la aplicación
<a name="php-wordpress-tutorial-deploy"></a>

Compruebe que la estructura de la carpeta `wordpress-beanstalk` es correcta, según se indica.

```
wordpress-beanstalk$ tree -aL 1
.
├── .ebextensions
├── index.php
├── LICENSE
├── license.txt
├── readme.html
├── README.md
├── wp-activate.php
├── wp-admin
├── wp-blog-header.php
├── wp-comments-post.php
├── wp-config.php
├── wp-config-sample.php
├── wp-content
├── wp-cron.php
├── wp-includes
├── wp-links-opml.php
├── wp-load.php
├── wp-login.php
├── wp-mail.php
├── wp-settings.php
├── wp-signup.php
├── wp-trackback.php
└── xmlrpc.php
```

El archivo `wp-config.php` personalizado del repositorio del proyecto utiliza las variables de entorno definidas en el paso anterior para configurar la conexión a la base de datos. La carpeta `.ebextensions` contiene archivos de configuración que crean recursos adicionales en el entorno de Elastic Beanstalk.

Los archivos de configuración requieren modificaciones para que funcionen con su cuenta. Sustituya los valores de los marcadores de posición de los archivos por los correspondientes IDs y cree un paquete de código fuente.

**Para actualizar los archivos de configuración y crear un paquete de código fuente.**

1. Modifique los archivos de configuración como se indica a continuación.
   + `.ebextensions/dev.config`— Restringe el acceso a su entorno para protegerlo durante el proceso de WordPress instalación. Sustituya la dirección IP del marcador de posición situada en la parte superior del archivo por la dirección IP pública del ordenador que utilizará para acceder al sitio web de su entorno y completar la instalación. WordPress 
**nota**  
En función de su red, es posible que tenga que utilizar un bloque de direcciones IP.
   + `.ebextensions/efs-create.config`— Crea un sistema de archivos EFS y puntos de montaje en cada disponibilidad Zone/subnet de su VPC. Identifique la VPC y la subred predeterminadas en IDs la consola de Amazon [VPC](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Cree un [paquete de código fuente](applications-sourcebundle.md) que contenga los archivos de la carpeta del proyecto. El comando siguiente crea un paquete de código fuente denominado `wordpress-beanstalk.zip`.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk.zip -r * .[^.]*
   ```

Cargue el paquete de código fuente en Elastic Beanstalk WordPress para implementarlo en su entorno.

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

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

## Instale WordPress
<a name="php-hawordpress-tutorial-install"></a>

**Para completar la WordPress instalación**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. Elija la URL del entorno para abrir su sitio en un navegador. Se le redirigirá a un asistente WordPress de instalación porque aún no ha configurado el sitio.

1. Realice una instalación estándar. El archivo `wp-config.php` ya está presente en el código fuente y configurado para leer la información de conexión a la base de datos del entorno. No se le pedirá que configure la conexión.

La instalación tarda alrededor de un minuto en completarse.

## Actualización de claves y sales
<a name="php-hawordpress-tutorial-updatesalts"></a>

El archivo WordPress de configuración `wp-config.php` también lee los valores de las claves y sales de las propiedades del entorno. En la actualidad, estas propiedades están establecidas en `test` a través del archivo `wordpress.config` de la carpeta `.ebextensions`.

La sal hash puede ser cualquier valor que cumpla los [requisitos de las propiedades de entorno](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console), pero no debe almacenarla en el control de código fuente. Utilice la consola de Elastic Beanstalk para establecer estas propiedades directamente en el entorno.

**Para actualizar propiedades de entorno**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, seleccione **Configuration (Configuración)**.

1. En **Software**, seleccione **Edit (Edición de)**.

1. En `Environment properties`, modifique las propiedades siguientes:
   + `AUTH_KEY`: el valor elegido para `AUTH_KEY`.
   + `SECURE_AUTH_KEY`: el valor elegido para `SECURE_AUTH_KEY`.
   + `LOGGED_IN_KEY`: el valor elegido para `LOGGED_IN_KEY`.
   + `NONCE_KEY`: el valor elegido para `NONCE_KEY`.
   + `AUTH_SALT`: el valor elegido para `AUTH_SALT`.
   + `SECURE_AUTH_SALT`: el valor elegido para `SECURE_AUTH_SALT`.
   + `LOGGED_IN_SALT`: el valor elegido para `LOGGED_IN_SALT`.
   + `NONCE_SALT`: el valor elegido para `NONCE_SALT`.

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

**nota**  
El establecimiento de las propiedades directamente en el entorno invalida los valores de `wordpress.config`.

## Eliminación de las restricciones de acceso
<a name="php-hawordpress-tutorial-updateenv"></a>

El proyecto de muestra incluye el archivo de configuración `loadbalancer-sg.config`. Crea un grupo de seguridad y lo asigna al equilibrador de carga del entorno, utilizando la dirección IP que configuró en `dev.config`. y restringe el acceso HTTP en el puerto 80 a las conexiones procedentes de su red. De lo contrario, una persona externa podría conectarse a su sitio antes de que usted haya instalado WordPress y configurado su cuenta de administrador.

Ahora que lo has instalado WordPress, elimina el archivo de configuración para abrir el sitio al resto del mundo.

**Para eliminar la restricción y actualizar el entorno**

1. Elimine el archivo `.ebextensions/loadbalancer-sg.config` del directorio del proyecto.

   ```
   ~/wordpress-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Cree un paquete de código fuente.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk-v2.zip -r * .[^.]*
   ```

Cargue el paquete de código fuente en Elastic Beanstalk WordPress para implementarlo en su entorno.

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

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

## Configure el grupo de escalado automático
<a name="php-hawordpress-tutorial-autoscaling"></a>

Por último, configure el grupo de escalado automático de su entorno con un número mínimo de instancias mayor. Ejecute al menos dos instancias en todo momento para evitar que los servidores web del entorno se conviertan en un único punto de error. Esto también le permite implementar cambios sin que el sitio quede fuera de servicio.

**Si desea configurar el grupo de escalado automático del entorno para disponer de una alta disponibilidad**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

1. En la categoría de configuración **Capacity (Capacidad)**, elija **Edit (Edición de)**.

1. En la sección **escalado automático group (grupo de escalado automático)** defina **Min instances (Instancias mínimas)** en **2**.

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

Con el fin de admitir la carga de contenido en varias instancias, el proyecto de muestra utiliza Amazon EFS para crear un sistema de archivos compartidos. Cree una publicación en el sitio y cargue contenido para almacenarlo en el sistema de archivos compartidos. Consulte la publicación y actualice la página varias veces para utilizar ambas instancias y comprobar que el sistema de archivos compartidos funciona.

## Actualice WordPress
<a name="php-hawordpress-tutorial-upgrade"></a>

Para actualizar a una nueva versión de WordPress, haga una copia de seguridad de su sitio e impleméntelo en un nuevo entorno.

**importante**  
No utilices la funcionalidad de actualización incluida en los archivos fuente WordPress ni actualices una versión nueva para utilizarlos. Estas dos acciones pueden provocar que tu publicación URLs devuelva errores 404 aunque todavía estén en la base de datos y el sistema de archivos.

**Para actualizar WordPress**

1. En la consola de WordPress administración, usa la herramienta de exportación para exportar tus publicaciones a un archivo XML.

1. Implemente e instale la nueva versión de WordPress en Elastic Beanstalk siguiendo los mismos pasos que utilizó para instalar la versión anterior. Para evitar el tiempo de inactividad, puede crear un entorno con la nueva versión.

1. En la nueva versión, instale la herramienta WordPress Importer en la consola de administración y utilícela para importar el archivo XML que contiene las publicaciones. Si el usuario administrador creó las publicaciones en la versión antigua, asígneselas al usuario administrador en el nuevo sitio, en lugar de intentar importar el usuario administrador.

1. Si ha implementado la nueva versión en un entorno distinto, lleve a cabo un [intercambio de CNAME](using-features.CNAMESwap.md) para redirigir a los usuarios del sitio anterior al nuevo.

## Limpieza
<a name="php-hawordpress-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk. Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para restaurar los datos posteriormente en otra instancia.

**Para terminar la instancia de base de datos de RDS**

1. Abra la [consola de Amazon RDS](https://console.aws.amazon.com/rds).

1. Seleccione **Bases de datos**.

1. Seleccione la instancia de base de datos.

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. Decida si desea crear una instantánea y seleccione **Delete (Eliminar)**.

## Siguientes pasos
<a name="php-hawordpress-tutorial-nextsteps"></a>

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-cli3.md) (EB CLI easy-to-use) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la línea de comandos.

La aplicación de muestra utiliza archivos de configuración para configurar las opciones de PHP y crear una tabla en la base de datos si no existe todavía. También puede utilizar un archivo de configuración para configurar el grupo de seguridad de las instancias durante la creación del entorno y evitar así la laboriosa tarea de actualizar la configuración. Para obtener más información, consulte [Personalización avanzada de entornos con archivos de configuración (`.ebextensions`)](ebextensions.md).

En las tareas de desarrollo y pruebas, es posible que desee utilizar la funcionalidad de Elastic Beanstalk para agregar una instancia de base de datos administrada directamente al entorno. Para obtener instrucciones acerca de cómo configurar una base de datos dentro del entorno, consulte [Añadir una base de datos al entorno de Elastic Beanstalk](using-features.managing.db.md).

Si necesita una base de datos de alto desempeño, considere la posibilidad de usar [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora es un motor de base de datos compatible con MySQL que ofrece características de bases de datos comerciales a bajo costo. Para conectar la aplicación a una base de datos diferente, repita los pasos de la [configuración del grupo de seguridad](php-ha-tutorial.md#php-hawrds-tutorial-database) y [actualice las propiedades de entorno relacionadas con RDS](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.

# Implementación de un sitio web de Drupal de alta disponibilidad con una base de datos externa de Amazon RDS en Elastic Beanstalk
<a name="php-hadrupal-tutorial"></a>

En este tutorial se explica el proceso de [lanzamiento de una instancia de base de datos de RDS](AWSHowTo.RDS.md) externa a AWS Elastic Beanstalk. A continuación, se describe cómo configurar un entorno de alta disponibilidad con un sitio web de Drupal para que se conecte a esa instancia. El sitio web utiliza Amazon Elastic File System (Amazon EFS) como almacenamiento compartido para los archivos cargados. La ejecución de una instancia de base de datos externa a Elastic Beanstalk desacopla la base de datos del ciclo de vida de su entorno y le permite conectarse a la misma base de datos desde varios entornos, cambiar una base de datos por otra o blue/green realizar una implementación sin que ello afecte a la base de datos.

**Topics**
+ [Requisitos previos](#php-hadrupal-tutorial-prereqs)
+ [Inicie una instancia de base de datos en Amazon RDS](#php-hadrupal-tutorial-database)
+ [Lance un entorno de Elastic Beanstalk](#php-hadrupal-tutorial-launch)
+ [Configuración de ajustes de seguridad y propiedades de entorno](#php-hadrupal-tutorial-configure)
+ [Configuración e implementación de la aplicación](#php-hadrupal-tutorial-deploy)
+ [Instalación de Drupal](#php-hadrupal-tutorial-install)
+ [Actualización de la configuración de Drupal y supresión de las restricciones de acceso](#php-hadrupal-tutorial-updateenv)
+ [Configure el grupo de escalado automático](#php-hadrupal-tutorial-autoscaling)
+ [Limpieza](#php-hadrupal-tutorial-cleanup)
+ [Siguientes pasos](#php-hadrupal-tutorial-nextsteps)

## Requisitos previos
<a name="php-hadrupal-tutorial-prereqs"></a>

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 [Cómo empezar a utilizar Elastic Beanstalk](GettingStarted.md) 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 (\$1) 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 Windows Subsystem para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obtener una versión de Ubuntu y Bash integrada con Windows.

Los procedimientos de este tutorial para las tareas de Amazon Relational Database Service (Amazon RDS) suponen que está iniciando recursos en una [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) predeterminada. Todas las nuevas cuentas contienen una VPC predeterminada en cada región. Si no dispone de una VPC predeterminada, los procedimientos serán diferentes. Consulte las instrucciones [Uso de Elastic Beanstalk con Amazon RDS](AWSHowTo.RDS.md) para las EC2 plataformas de VPC clásicas y personalizadas.

La aplicación de muestra utiliza Amazon EFS. Solo funciona en AWS las regiones que admiten Amazon EFS. Para obtener más información sobre AWS las regiones compatibles, consulte los [puntos de enlace y las cuotas de Amazon Elastic File System](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) en la *Referencia general de AWS*.

Si la plataforma del entorno Elastic Beanstalk utiliza PHP 7.4 o anterior, recomendamos que utilice la versión 8.9.13 de Drupal para este tutorial. Para plataformas instaladas con PHP 8.0 o posterior, recomendamos usar Drupal 9.1.5.

Para obtener más información acerca de las versiones de Drupal y las versiones de PHP que soportan, consulte [los requisitos de PHP](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) en el sitio web de Drupal. [Las versiones principales que recomienda Drupal se encuentran en el sitio web https://www.drupal. org/project/drupal](https://www.drupal.org/project/drupal). 

## Inicie una instancia de base de datos en Amazon RDS
<a name="php-hadrupal-tutorial-database"></a>

Para utilizar una base de datos externa con una aplicación que se ejecuta en Elastic Beanstalk, primero lance una instancia de base de datos con Amazon RDS. Cuando inicia una instancia con Amazon RDS, es completamente independiente de Elastic Beanstalk y sus entornos Elastic Beanstalk, y Elastic Beanstalk no la finalizará ni supervisará.

Use la consola de Amazon RDS para lanzar una instancia de base de datos **MySQL** Multi-AZ. La elección de una implementación Multi-AZ garantiza que la base de datos realice una conmutación por error y siga estando disponible en caso de que la instancia de base de datos de origen quede fuera de servicio.

**Para lanzar una instancia de base de datos de RDS en una VPC predeterminada**

1. Abra la [consola de RDS](https://console.aws.amazon.com/rds/home).

1. En el panel de navegación, elija **Databases** (Bases de datos).

1. Elija **Create database (Creación de base de datos)**.

1. Elija **Standard Create (Creación estándar)**.
**importante**  
No elija la opción **Easy Create (Creación sencilla)**. Si lo elije, no puede configurar los ajustes necesarios para lanzar esta base de datos de RDS.

1. En **Additional configuration (Configuración adicional)**, escriba **ebdb** en **Initial database name (Nombre de base de datos inicial)**. 

1. Revise la configuración predeterminada y ajústela de acuerdo con sus requisitos específicos. Preste atención a las siguientes opciones:
   + **DB instance class (Clase de instancia de base de datos)**: elija un tamaño de instancia que cuente con la memoria y la potencia de CPU apropiadas para su carga de trabajo.
   + **Implementación en zonas de disponibilidad múltiples**: para obtener una alta disponibilidad, configúrelo en **Crear un Replica/Reader nodo Aurora en una zona de disponibilidad diferente.**
   + **Master username (Nombre de usuario maestro)** y **Master password (Contraseña maestra)**: nombre de usuario y contraseña de la base de datos. Anote esta configuración, ya que la necesitará posteriormente.

1. Compruebe los valores predeterminados de las demás opciones y, a continuación, elija **Create database (Creación de base de datos)**.

A continuación, modifique el grupo de seguridad asociado a la instancia de base de datos para permitir el tráfico entrante en el puerto correspondiente. Este es el mismo grupo de seguridad que asociará a su entorno de Elastic Beanstalk más adelante, por lo que la regla que añada concederá permiso de entrada a otros recursos del mismo grupo de seguridad.

**Para modificar las reglas de entrada del grupo de seguridad adjuntas a la instancia de RDS**

1. Abra la [ consola de Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Seleccione **Bases de datos**.

1. Elija el nombre de la instancia de base de datos para ver sus detalles.

1. En la sección **Conectividad**, tome nota de los valores de **Subredes**, **Grupos de seguridad** y **Punto de conexión** que aparecen en esta página. Esto es para que pueda utilizar esta información más adelante.

1. En **Security (Seguridad)** se muestra el grupo de seguridad que está asociado a la instancia de base de datos. Abre el enlace para ver el grupo de seguridad en la EC2 consola de Amazon.

1. En los detalles del grupo de seguridad, elija la pestaña **Inbound (Entrada)**.

1. Elija **Edit (Edición de)**.

1. Seleccione **Add Rule (Agregar regla)**.

1. En **Type (Tipo)**, elija el motor de base de datos que utiliza la aplicación.

1. En **Source (Origen)**, escriba **sg-** para ver una lista de grupos de seguridad disponibles. Elija el grupo de seguridad que está asociado al grupo de escalado automático que se utiliza con su entorno de Elastic Beanstalk. Esto es para que EC2 las instancias de Amazon del entorno puedan tener acceso a la base de datos.  
![\[Imagen de pantalla para editar las reglas de entrada de un grupo de seguridad en la EC2 consola de Amazon.\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Seleccione **Save**.

Se tarda alrededor de 10 minutos en crear una instancia de base de datos. Mientras tanto, inicie el entorno de Elastic Beanstalk.

## Lance un entorno de Elastic Beanstalk
<a name="php-hadrupal-tutorial-launch"></a>

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. Después de iniciar el entorno, puede configurar el entorno para que se conecte a la base de datos e implementar el código Drupal en el entorno.

**Para lanzar un entorno (consola)**

1. [Abra la consola de Elastic Beanstalk mediante este enlace preconfigurado: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

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

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  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.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador 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**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático 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 escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic 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 CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
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 ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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. La instancia de base de datos de RDS que lanzó se encuentra fuera de su entorno, por lo que usted es responsable de administrar su ciclo de vida.

**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 [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Configuración de ajustes de seguridad y propiedades de entorno
<a name="php-hadrupal-tutorial-configure"></a>

Agregue el grupo de seguridad de la instancia de base de datos al entorno en ejecución. Este procedimiento hace que Elastic Beanstalk vuelva a aprovisionar todas las instancias de su entorno con el grupo de seguridad adicional asociado.

**Para agregar un grupo de seguridad al entorno**
+ Realice una de las siguientes acciones:
  + Para añadir un grupo de seguridad mediante la consola de Elastic Beanstalk

    1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

    1. En la categoría de configuración **Instances (Instancias)**, elija **Edit (Edición de)**.

    1. En **grupos EC2 de seguridad**, elija el grupo de seguridad que desee adjuntar a las instancias, además del grupo de seguridad de instancias que cree Elastic Beanstalk.

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

    1. Lea la advertencia y, a continuación, elija **Confirm (Confirmar)**.
  + Para agregar un grupo de seguridad con un [archivo de configuración](ebextensions.md), utilice el archivo de ejemplo [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Después, utilice las propiedades de entorno para pasar la información de la conexión al entorno. La aplicación de muestra utiliza un conjunto predeterminado de propiedades que coinciden con las que Elastic Beanstalk configura al aprovisionar una base de datos en su entorno.

**Para configurar las propiedades de entorno de una instancia de base de datos de Amazon RDS**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

1. En la sección **Environment properties (Propiedades del entorno)**, defina las variables que lee la aplicación para crear una cadena de conexión. Para conseguir compatibilidad con los entornos que tienen una instancia de base de datos de RDS, utilice los siguientes nombres y valores. Encontrará todos los valores, excepto la contraseña, en la [consola de RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/php-hadrupal-tutorial.html)  
![\[Sección Environment properties configuration (Configuración de propiedades del entorno) con propiedades de RDS añadidas\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

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

Después de instalar Drupal, tiene que conectarse a la instancia con SSH para recuperar algunos detalles de configuración. Asigne una clave SSH a las instancias del entorno.

**Para configurar SSH**

1. Si no has creado un par de claves anteriormente, abre la [página de pares de claves](https://console.aws.amazon.com/ec2/v2/home#KeyPairs) de la EC2 consola de Amazon y sigue las instrucciones para crear uno.

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En **Security (Seguridad)**, seleccione **Edit (Edición de)**.

1. Para el **par de EC2 claves**, elige tu par de claves.

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

## Configuración e implementación de la aplicación
<a name="php-hadrupal-tutorial-deploy"></a>

[Para crear un proyecto de Drupal para Elastic Beanstalk, descargue el código fuente de Drupal y combínelo con los archivos del repositorio aws-samples/ de. eb-php-drupal](https://github.com/aws-samples/eb-php-drupal) GitHub

**Para crear un proyecto de Drupal**

1. Ejecute el siguiente comando para descargar Drupal desde *www.drupal.org/download*. Para obtener más información sobre las descargas, consulte [el sitio web de Drupal](https://www.drupal.org/download).

   Si la plataforma del entorno Elastic Beanstalk utiliza PHP 7.4 o anterior, recomendamos que descargue la versión 8.9.13 de Drupal para este tutorial. Puede ejecutar el siguiente comando para descargarlo.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-8.9.13.tar.gz -o drupal.tar.gz
   ```

   Si la plataforma utiliza PHP 8.0 o posterior, recomendamos que descargue Drupal 9.1.5. Puede usar este comando para descargarlo.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-9.1.5.tar.gz -o drupal.tar.gz
   ```

   Para obtener más información acerca de las versiones de Drupal y las versiones de PHP que soportan, consulte [los requisitos de PHP](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) en la documentación oficial de Drupal. Las versiones principales que Drupal recomienda se enumeran en [el sitio web de Drupal](https://www.drupal.org/project/drupal).

1. Utilice el siguiente comando para descargar los archivos de configuración del repositorio de ejemplo:

   ```
   ~$ wget https://github.com/aws-samples/eb-php-drupal/releases/download/v1.1/eb-php-drupal-v1.zip
   ```

1. Extraiga Drupal y cambie el nombre de la carpeta.

   Si descargó Drupal 8.9.13:

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-8.9.13 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

   Si descargó Drupal 9.1.5:

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-9.1.5 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

1. Extraiga los archivos de configuración a través de la instalación de Drupal.

   ```
    ~/drupal-beanstalk$ unzip ../eb-php-drupal-v1.zip
     creating: .ebextensions/
     inflating: .ebextensions/dev.config
     inflating: .ebextensions/drupal.config
     inflating: .ebextensions/efs-create.config
     inflating: .ebextensions/efs-filesystem.template
     inflating: .ebextensions/efs-mount.config
     inflating: .ebextensions/loadbalancer-sg.config
     inflating: LICENSE
     inflating: README.md
     inflating: beanstalk-settings.php
   ```

Compruebe que la estructura de la carpeta `drupal-beanstalk` es correcta, según se indica.

```
drupal-beanstalk$ tree -aL 1
.
├── autoload.php
├── beanstalk-settings.php
├── composer.json
├── composer.lock
├── core
├── .csslintrc
├── .ebextensions
├── .ebextensions
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── example.gitignore
├── .gitattributes
├── .htaccess
├── .ht.router.php
├── index.php
├── LICENSE
├── LICENSE.txt
├── modules
├── profiles
├── README.md
├── README.txt
├── robots.txt
├── sites
├── themes
├── update.php
├── vendor
└── web.config
```

El archivo `beanstalk-settings.php` del repositorio del proyecto utiliza las variables de entorno definidas en el paso anterior para configurar la conexión a la base de datos. La carpeta `.ebextensions` contiene archivos de configuración que crean recursos adicionales en el entorno de Elastic Beanstalk.

Los archivos de configuración requieren modificaciones para que funcionen con su cuenta. Sustituya los valores de los marcadores de posición de los archivos por los correspondientes y cree un paquete de código fuente. IDs 

**Para actualizar los archivos de configuración y crear un paquete de código fuente.**

1. Modifique los archivos de configuración como se indica a continuación.
   + `.ebextensions/dev.config`: limita a su dirección IP el acceso a su entorno con el fin de protegerlo durante el proceso de instalación de Drupal. Cambie la dirección IP del marcador de posición situada cerca de la parte superior del archivo por la dirección IP pública.
   + `.ebextensions/efs-create.config`: crea un sistema de archivos EFS y puntos de montaje en cada zona de disponibilidad/subred de la VPC. Identifique la VPC y la subred predeterminadas en IDs la consola de Amazon [VPC](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Cree un [paquete de código fuente](applications-sourcebundle.md) que contenga los archivos de la carpeta del proyecto. El comando siguiente crea un paquete de código fuente denominado `drupal-beanstalk.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-drupal$ zip ../drupal-beanstalk.zip -r * .[^.]* -x "vendor/*"
   ```

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

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

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

## Instalación de Drupal
<a name="php-hadrupal-tutorial-install"></a>

**Para completar la instalación de Drupal**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. Elija la URL del entorno para abrir su sitio en un navegador. Se abrirá un asistente de instalación de Drupal, ya que aún no se ha configurado el sitio.

1. Realice una instalación estándar de la base de datos con la siguiente configuración:
   + **Database name (Nombre de la base de datos)**: el **nombre de base de datos** que se muestra en la consola de Amazon RDS.
   + **Database username and password**: valores de **Master Username (Nombre de usuario maestro)** y **Master Password (Contraseña maestra)** que especificó al crear la base de datos.
   + **Advanced Options > Host (Opciones avanzadas > Host)**: el **punto de conexión** de la instancia de base de datos que se muestra en la consola de Amazon RDS.

La instalación tarda alrededor de un minuto en completarse.

## Actualización de la configuración de Drupal y supresión de las restricciones de acceso
<a name="php-hadrupal-tutorial-updateenv"></a>

Durante el proceso de instalación de Drupal, se crea un archivo denominado `settings.php` en la carpeta `sites/default` de la instancia. Este archivo se necesita en el código fuente para evitar restablecer el sitio en las implementaciones subsiguientes; sin embargo, el archivo contiene secretos que no es conveniente incorporar al código fuente. Conéctese a la instancia de aplicación para recuperar la información del archivo de configuración.

**Para conectarse a la instancia de aplicación con SSH**

1. Abre la [página de instancias](https://console.aws.amazon.com/ec2/v2/home#Instances:sort=tag:Name) de la EC2 consola de Amazon.

1. Elija la instancia de aplicación. Es la que tiene el nombre de su entorno de Elastic Beanstalk.

1. Elija **Conectar**.

1. Siga las instrucciones para conectar la instancia con SSH. El comando tiene un aspecto similar al siguiente.

   ```
   $ ssh -i ~/.ssh/mykey ec2-user@ec2-00-55-33-222.us-west-2.compute.amazonaws.com
   ```

Obtenga el ID del directorio de sincronización, que aparece en la última línea del archivo de configuración.

```
[ec2-user ~]$ tail -n 1 /var/app/current/sites/default/settings.php
$config_directories['sync'] = 'sites/default/files/config_4ccfX2sPQm79p1mk5IbUq9S_FokcENO4mxyC-L18-4g_xKj_7j9ydn31kDOYOgnzMu071Tvc4Q/sync';
```

El archivo también contiene la clave de hash actual de los sitios, pero puede hacer caso omiso del valor actual y utilizar el suyo propio.

Asigne la ruta del directorio de sincronización y la clave de hash a las propiedades de entorno. El archivo de configuración personalizado del repositorio del proyecto leerá estas propiedades para configurar el sitio durante la implementación, además de las propiedades de conexión de la base de datos establecidas anteriormente.

**Propiedades de configuración de Drupal**
+ `SYNC_DIR`: la ruta al directorio de sincronización.
+ `HASH_SALT`: cualquier valor de tipo cadena que cumpla los [requisitos de las propiedades del entorno](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console).

**Cómo configurar variables de entorno en la consola de Elastic Beanstalk**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

1. Desplácese hacia abajo hasta **Variables de entorno de tiempo de ejecución**.

1. Seleccione **Añadir variables de entorno**.

1. En **Fuente**, seleccione **Texto sin formato**.
**nota**  
Los valores de **Secrets Manager** y **Almacén de parámetros de SSM** del menú desplegable sirven para configurar variables de entorno como secretos para almacenar información confidencial, como credenciales y claves de API. Para obtener más información, consulte [Uso de Elastic AWS Secrets Manager AWS Systems Manager Beanstalk con un almacén de parámetros](AWSHowTo.secrets.md). 

1. Introduzca los pares de **nombre de la variable de entorno** y **valor de la variable de entorno**.

1. Si necesita añadir más variables, repita desde el **Paso 6** hasta el **Paso 8**.

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

Por último, el proyecto de muestra incluye un archivo de configuración (`loadbalancer-sg.config`) que crea un grupo de seguridad y lo asigna al equilibrador de carga del entorno usando la dirección IP que configuró en `dev.config` para restringir el acceso HTTP en el puerto 80 a las conexiones procedentes de su red. De no ser así, una entidad externa podría conectarse al sitio antes de que se instalase Drupal y se hubiese configurado la cuenta de administrador.

**Para actualizar la configuración de Drupal y suprimir las restricciones de acceso**

1. Elimine el archivo `.ebextensions/loadbalancer-sg.config` del directorio del proyecto.

   ```
   ~/drupal-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Copie el archivo `settings.php` personalizado en la carpeta de sitios.

   ```
   ~/drupal-beanstalk$ cp beanstalk-settings.php sites/default/settings.php
   ```

1. Cree un paquete de código fuente.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk-v2.zip -r * .[^.]* -x "vendor/*"
   ```

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

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

1. Elija **Deploy (Implementar)**.

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

## Configure el grupo de escalado automático
<a name="php-hadrupal-tutorial-autoscaling"></a>

Por último, configure el grupo de escalado automático de su entorno con un número mínimo de instancias mayor. Ejecute al menos dos instancias en todo momento para evitar que los servidores web de su entorno se conviertan en un único punto de error y para poder implementar cambios sin que el sitio se quede fuera de servicio.

**Si desea configurar el grupo de escalado automático del entorno para disponer de una alta disponibilidad**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

1. En la categoría de configuración **Capacity (Capacidad)**, elija **Edit (Edición de)**.

1. En la sección **escalado automático group (grupo de escalado automático)** defina **Min instances (Instancias mínimas)** en **2**.

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

Con el fin de admitir la carga de contenido en varias instancias, el proyecto de muestra utiliza Amazon Elastic File System para crear un sistema de archivos compartidos. Cree una publicación en el sitio y cargue contenido para almacenarlo en el sistema de archivos compartidos. Consulte la publicación y actualice la página varias veces para utilizar ambas instancias y comprobar que el sistema de archivos compartidos funciona.

## Limpieza
<a name="php-hadrupal-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

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

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

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

Además, puede terminar los recursos de base de datos creados fuera del entorno de Elastic Beanstalk. Cuando termine una instancia de base de datos de Amazon RDS, puede hacer una instantánea para restaurar los datos posteriormente en otra instancia.

**Para terminar la instancia de base de datos de RDS**

1. Abra la [consola de Amazon RDS](https://console.aws.amazon.com/rds).

1. Seleccione **Bases de datos**.

1. Seleccione la instancia de base de datos.

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. Decida si desea crear una instantánea y seleccione **Delete (Eliminar)**.

## Siguientes pasos
<a name="php-hadrupal-tutorial-nextsteps"></a>

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-cli3.md) (EB CLI easy-to-use) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la línea de comandos.

La aplicación de muestra utiliza los archivos de configuración para configurar los ajustes de PHP y crear una tabla en la base de datos si no existe todavía. También puede utilizar un archivo de configuración para configurar el grupo de seguridad de las instancias durante la creación del entorno y evitar así las laboriosas tareas de actualización de la configuración. Para obtener más información, consulte [Personalización avanzada de entornos con archivos de configuración (`.ebextensions`)](ebextensions.md).

En las tareas de desarrollo y pruebas, es posible que desee utilizar la funcionalidad de Elastic Beanstalk para agregar una instancia de base de datos administrada directamente al entorno. Para obtener instrucciones acerca de cómo configurar una base de datos dentro del entorno, consulte [Añadir una base de datos al entorno de Elastic Beanstalk](using-features.managing.db.md).

Si necesita una base de datos de alto desempeño, considere la posibilidad de usar [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora es un motor de base de datos compatible con MySQL que ofrece características de bases de datos comerciales a bajo costo. Para conectar la aplicación a una base de datos diferente, repita los pasos de la [configuración del grupo de seguridad](php-ha-tutorial.md#php-hawrds-tutorial-database) y [actualice las propiedades de entorno relacionadas con RDS](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.