Implemente una aplicación web LAMP en Amazon Lightsail

GUÍA DE INTRODUCCIÓN

Módulo 1: prepare el contenedor

En este módulo, configurará una pila LAMP mediante AWS CLI

Introducción

En este módulo, utilizará AWS CLI para crear una instancia de Lightsail a partir de un proyecto con los componentes LAMP preconfigurados. Instalará la aplicación PHP a partir de un repositorio de GitHub al crear la instancia.

Lo que aprenderá

  • Cómo crear una instancia de Lightsail mediante AWS CLI
  • Implementar la aplicación PHP con los datos de usuario de la instancia

 Tiempo de realización

10 minutos

 Requisitos previos del módulo

  • Una cuenta de AWS con acceso de nivel de administrador**
  • Navegador recomendado: la última versión de Chrome o Firefox

[**] Es posible que las cuentas creadas en las últimas 24 horas aún no tengan acceso a los servicios necesarios para este tutorial.

Implementación

Creación de la instancia de Lightsail

Al crear una instancia de Lightsail, puede optar por transferir datos de usuario a la instancia para realizar tareas comunes de configuración automatizada e incluso ejecutar scripts después de que se inicie la instancia. Más adelante en esta guía, creará una instancia de Lightsail mediante AWS CLI. Copie el siguiente script en la parte del comando --user-data:

# remove default website
#-----------------------
cd /opt/bitnami/apache2/htdocs 
rm -rf *

# clone github repo
#------------------
/opt/bitnami/git/bin/git clone -b loft https://github.com/aws-developer-center/todo-php .

# set write permissons on the settings file
#-----------------------------------
chown bitnami:daemon ./*
chmod 666 connectvalues.php

# inject database password into configuration file
#-------------------------------------------------
sed -i.bak "s/<password>/$(cat /home/bitnami/bitnami_application_password)/;" /opt/bitnami/apache2/htdocs/connectvalues.php

# create database
#----------------
cat /home/bitnami/htdocs/data/init.sql | /opt/bitnami/mariadb/bin/mysql -u root -p$(cat /home/bitnami/bitnami_application_password)

Este script eliminará el sitio web predeterminado del proyecto, clonará la aplicación de muestra para sustituirla, establecerá los permisos de archivo adecuados, configurará la contraseña de la base de datos generada automáticamente en el archivo de configuración de la aplicación de muestra y ejecutará el script init.sql para crear la base de datos y rellenarla con los valores iniciales.

Necesitará una clave de SSH para acceder a la instancia una vez que se encuentra en ejecución. Para generar una, ejecute el siguiente comando:

aws lightsail create-key-pair \
    --key-pair-name LightsailGuide > ssh_key_response.json

cat ssh_key_response.json | jq -r '.publicKeyBase64' > lightsailguide.pub
cat ssh_key_response.json | jq -r '.privateKeyBase64' > lightsailguide
chmod 400 lightsailguide.pub lightsailguide

Ahora está listo para crear la instancia mediante AWS CLI. Para esta guía, utilizaremos la región de Irlanda (eu-west-1), así como el proyecto LAMP con el blueprintId de lamp_7. Si desea ver una lista completa de los proyectos disponibles, puede ejecutar el siguiente comando:

aws lightsail get-blueprints

Es necesario especificar un paquete de instancias al crear una instancia de Lightsail. Para esta guía, utilizaremos un paquete micro_2_0. Puede ver una lista de los paquetes disponibles con el siguiente comando:

aws lightsail get-bundles

Para crear la instancia de Lightsail con el script de datos del usuario y la clave SSH creada, ejecute el siguiente comando:

# Create the Lightsail instance:
aws lightsail create-instances \
    --instance-names "LightsailLampExample" \
    --availability-zone eu-west-1a \
    --blueprint-id lamp_7 \
    --bundle-id micro_2_0 \
    --key-pair-name LightsailGuide \
    --user-data '# remove default website
#-----------------------
cd /opt/bitnami/apache2/htdocs 
rm -rf *

# clone github repo
#------------------
/opt/bitnami/git/bin/git clone -b loft https://github.com/aws-developer-center/todo-php .

# set write permissons on the settings file
#-----------------------------------
chown bitnami:daemon ./*
chmod 666 connectvalues.php

# inject database password into configuration file
#-------------------------------------------------
sed -i.bak "s/<password>/$(cat /home/bitnami/bitnami_application_password)/;" /opt/bitnami/apache2/htdocs/connectvalues.php

# create database
#----------------
cat /home/bitnami/htdocs/data/init.sql | /opt/bitnami/mariadb/bin/mysql -u root -p$(cat /home/bitnami/bitnami_application_password)' 

El comando producirá los detalles de la instancia creada:

{
    "operations": [
        {
            "id": "a49e1398-fb81-455a-8a50-3159c9bd9966",
            "resourceName": "LightsailLampExample",
            "resourceType": "Instance",
            "createdAt": "2021-09-21T16:38:40.566000+02:00",
            "location": {
                "availabilityZone": "eu-west-1a",
                "regionName": "eu-west-1"
            },
            "isTerminal": false,
            "operationType": "CreateInstance",
            "status": "Started",
            "statusChangedAt": "2021-09-21T16:38:40.566000+02:00"
        }
    ]
}

La instancia tardará unos minutos en estar disponible. Puede utilizar el siguiente comando para verificar el avance:

aws lightsail get-instance-state --instance-name LightsailLampExample

Cuando aparezca el siguiente resultado, significa que la instancia está en ejecución, pero es posible que aún se encuentre procesando el script de datos del usuario:

{
    "state": {
        "code": 16,
        "name": "running"
    }
}

Necesitará la dirección IP pública de la instancia para probar la aplicación. Ejecute el siguiente comando para recuperar la dirección IP pública de la instancia.

aws lightsail get-instance --instance-name LightsailLampExample | jq -r .instance.publicIpAddress

Copie la dirección IP y péguela en el navegador para ver la aplicación en funcionamiento:

gsg-build-lightsail-6

Conclusión

En este primer módulo, aprendimos a crear nuestra infraestructura mediante AWS CLI, así como a implementar una aplicación de muestra. En el próximo módulo, aprenderemos a eliminar los recursos que se utilizaron para la realización de esta guía.

Siguiente: eliminación de recursos

Háganos saber cómo lo hicimos.

Agradecemos sus comentarios
Nos alegra que esta página le haya ayudado. ¿Le gustaría compartir detalles adicionales para ayudarnos a seguir mejorando?
Cerrar
Agradecemos sus comentarios
Lamentamos que esta página no le haya ayudado. ¿Le gustaría compartir detalles adicionales para ayudarnos a seguir mejorando?
Cerrar