Implementare un'app Web LAMP su Amazon Lightsail

GUIDA ALLE OPERAZIONI DI BASE

Modulo 1: Preparare il tuo container

In questo modulo, configurerai una pila LAMP utilizzando la AWS CLI

Introduzione

In questo modulo sfrutterai la AWS CLI per creare un'istanza Lightsail da un progetto con i componenti LAMP preconfigurati. Installerai la tua applicazione PHP da un repository GitHub durante la creazione dell'istanza.

Cosa imparerai

  • Come creare un'istanza Lightsail tramite la AWS CLI
  • Implementa la tua applicazione PHP utilizzando i dati utente dell'istanza

 Tempo richiesto per il completamento

10 minuti

 Prerequisiti del modulo

  • Account AWS con accesso da amministratore**
  • Browser consigliato: l'ultima versione di Chrome o Firefox

[**]Gli account creati nelle ultime 24 ore potrebbero non avere ancora accesso a tutti servizi richiesti per questo tutorial.

Implementazione

Creazione della tua istanza Lightsail

Quando crei un'istanza Lightsail, puoi passare all'istanza i dati utente che possono essere utilizzati per attuare comuni processi di configurazione automatizzata, nonché eseguire script dopo l'avvio dell'istanza. Più avanti nella guida creerai un'istanza Lightsail tramite la AWS CLI. Copia il seguente script nella parte --user data del 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)

Questo script rimuoverà il sito web predefinito del progetto, clonerà l'app di esempio per sostituirlo, imposterà le autorizzazioni dei file opportune, configurerà la password del database generata automaticamente nel file config dell'app di esempio ed eseguirà lo script init.sql per creare il database e popolarlo con i valori iniziali.

Per accedere alla tua istanza una volta che è in esecuzione, avrai bisogno di una chiave SSH. Per generarne una, esegui il seguente 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

Ora sei pronto a creare la tua istanza usando la AWS CLI. Per questa guida, useremo la regione Irlanda (eu-west-1) e il progetto LAMP con il blueprintId di lamp_7. Per visualizzare un elenco completo dei progetti disponibili, esegui il seguente comando:

aws lightsail get-blueprints

È necessario specificare un bundle di istanze quando crei un'istanza Lightsail. Per questa guida utilizzeremo un bundle micro_2_0. Per visualizzare un elenco dei bundle disponibili puoi utilizzare il seguente comando:

aws lightsail get-bundles

Per creare la tua istanza Lightsail con lo script dei dati utente e la chiave SSH che hai creato, esegui il seguente 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)' 

Il comando mostrerà i dettagli dell'istanza che hai creato:

{
    "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"
        }
    ]
}

Ci vorranno alcuni minuti affinché la tua istanza diventi disponibile e usare il seguente comando per controllarne il progresso:

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

Quando vedrai il seguente output, l'istanza sarà in esecuzione, ma potrebbe ancora stare elaborando lo script dei dati utente:

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

Per testare la tua applicazione, è necessario l'indirizzo IP pubblico della tua istanza. Esegui il seguente comando per recuperare l'indirizzo IP pubblico della tua istanza.

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

Copia l'indirizzo IP e incollalo nel tuo browser, dovresti vedere l'applicazione in esecuzione:

gsg-build-lightsail-6

Conclusione

In questo primo modulo abbiamo imparato a creare la nostra infrastruttura utilizzando la AWS CLI e a implementare un'applicazione di esempio. Nel prossimo modulo impareremo come eliminare le risorse utilizzate in questa guida.

Successivo: Eliminare le risorse

Facci sapere com'è andata.

Grazie per il tuo feedback
Siamo contenti che questa pagina ti sia stata d’aiuto. Vuoi condividere ulteriori dettagli per aiutarci a continuare a migliorare?
Chiudi
Grazie per il tuo feedback
Ci dispiace che questa pagina non ti sia stata d'aiuto. Vuoi condividere ulteriori dettagli per aiutarci a continuare a migliorare?
Chiudi