Implantar uma aplicação LAMP Web no Amazon Lightsail
GUIA DE CONCEITOS BÁSICOS
Módulo 1: Preparar seu contêiner
Neste módulo, você vai configurar sua pilha LAMP usando a AWS CLI
Introdução
Neste módulo, você usará a AWS CLI para criar uma instância Lightsail a partir de um projeto que tenha os componentes LAMP pré-configurados. Você instalará sua aplicação PHP a partir de um repositório do GitHub durante a criação da instância.
O que você aprenderá
- Criar uma instância do Lightsail usando a AWS CLI
- Implantar sua aplicação PHP usando os dados do usuário da instância
Tempo para a conclusão
10 minutos
Pré-requisitos do módulo
- Conta da AWS com acesso de administrador**
- Navegador recomendado: versão mais recente do Chrome ou Firefox
[**]Talvez as contas criadas nas últimas 24 horas ainda não tenham acesso aos serviços necessários para este tutorial.
Implementação
Criar sua instância Lightsail
Ao executar uma instância Lightsail, você tem a opção de transmitir dados de usuários para ela e usá-los para realizar tarefas comuns de configuração automática e até mesmo executar scripts após a execução da instância. Mais tarde neste guia, você criará uma instância do Lightsail usando a AWS CLI. Copie o script a seguir na parte --user-data do comando:
# 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 removerá o site padrão do projeto, clonará a aplicação de amostra para substituí-la, definirá as permissões de arquivo apropriadas, configurará a senha de banco de dados gerada automaticamente no arquivo de verificação da aplicação de amostra e executará o script init.sql para criar o banco de dados e preenchê-lo com os valores iniciais.
Para acessar sua instância quando estiver em execução, você precisará de uma chave SSH. Para gerar um, execute o seguinte 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
Agora você já pode criar sua instância usando a AWS CLI. Para este guia, usaremos a região da Irlanda (eu-oeste-1) e a blueprint LAMP com o blueprintId de lamp_7. Se quiser ver uma lista completa de blueprints disponíveis, você poderá executar o seguinte comando:
aws lightsail get-blueprints
Você deve especificar um pacote de instância ao criar uma instância do Lightsail. Para este guia, usaremos um pacote micro_2_0. Você pode visualizar uma lista de pacotes disponíveis com o seguinte comando:
aws lightsail get-bundles
Para criar sua instância Lightsail com o script de dados do usuário e a chave SSH criada, execute o seguinte 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)'
O comando exibirá como saída os detalhes da instância que você criou:
{
"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"
}
]
}
Levará alguns minutos para que sua instância esteja disponível, e você pode usar o seguinte comando para verificar o progresso:
aws lightsail get-instance-state --instance-name LightsailLampExample
Quando aparecer a saída a seguir, significa que a instância está em execução, mas talvez ainda não esteja funcionando por meio do script de dados do usuário:
{
"state": {
"code": 16,
"name": "running"
}
}
Para testar sua aplicação, você precisará do endereço IP público da sua instância. Execute o seguinte comando para recuperar o endereço IP público da sua instância.
aws lightsail get-instance --instance-name LightsailLampExample | jq -r .instance.publicIpAddress
Copie o endereço IP e cole-o no seu navegador. Você deve ver a aplicação em execução:

Conclusão
Neste primeiro módulo, aprendemos como criar nossa infraestrutura usando a AWS CLI e implantar uma aplicação de amostra. No próximo módulo, aprenderemos a limpar os recursos utilizados neste guia.
A seguir: Limpar os recursos