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:

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