Déploiement d'une appli web LAMP sur Amazon Lightsail

GUIDE DE MISE EN ROUTE

Module 1 : Préparation de votre conteneur

Dans ce module, vous configurerez une pile LAMP à l'aide de l'AWS CLI.

Introduction

Dans ce module, vous utiliserez l'AWS CLI pour créer une instance Lightsail à partir d'un plan pour lequel les composants LAMP sont pré-configurés. Vous installerez votre application PHP depuis un référentiel GitHub lors de la création de l'instance.

Ce que vous apprendrez

  • Comment créer une instance Lightsail à l'aide de l'AWS CLI
  • Déployer votre application PHP à l'aide des données utilisateur de l'instance

 Durée

10 minutes

 Prérequis du module

  • Compte AWS avec accès administrateur**
  • Dernière version de Chrome ou de Firefox (recommandé)

[**] Les comptes créés dans les dernières 24 heures sont susceptibles de ne pas encore avoir accès aux services nécessaires pour ce didacticiel.

Implémentation

Création de votre instance Lightsail

Lorsque vous créez une instance Lightsail, vous avez la possibilité de lui transmettre des données utilisateur qui peuvent être utilisées pour effectuer des tâches de configuration automatisées courantes et même exécuter des scripts après le démarrage de l'instance. Plus loin dans ce guide, vous créerez une instance Lightsail à l'aide l'AWS CLI. Copiez le script suivant dans la partie données utilisateur de la commande :

# 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)

Le script supprimera le site web par défaut du plan, clonera l'exemple d'application pour le remplacer, définira les autorisations de fichier appropriées et configurera le mot de passe de base de données généré automatiquement dans le fichier de configuration de l'exemple d'application. Ensuite, il exécutera le script init.sql afin de créer la base de données et de l'alimenter avec les valeurs initiales.

Afin d'accéder à votre instance une fois qu'elle est exécutée, vous aurez besoin d'une clé SSH. Pour en générer une, exécutez la commande suivante :

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

Vous êtes désormais prêt à créer votre instance à l'aide de l'AWS CLI. Pour ce guide, nous utiliserons la région Irlande (eu-west-1) ainsi que le plan LAMP avec le blueprintId de lamp_7. Si vous souhaitez consulter une liste complète des plans disponibles, vous pouvez exécuter la commande suivante :

aws lightsail get-blueprints

Vous devez spécifiez une solution groupée d'instance lors de la création d'une instance Lightsail. Pour ce guide, nous utiliserons une solution groupée micro_2_0. Vous pouvez consulter une liste des solutions groupées disponibles grâce à la commande suivante :

aws lightsail get-bundles

Afin de créer votre instance Lightsail avec le script de données utilisateur ainsi que la clé SSH que vous avez créée, exécutez la commande suivante :

# 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)' 

La commande produira les détails de l'instance créée :

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

Votre instance sera disponible au bout de quelques minutes. Pour vérifier l'avancement, vous pouvez utiliser la commande suivante :

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

Lorsque vous voyez la sortie suivante, l'instance est en cours d'exécution, mais il est possible qu'elle soit encore en train de fonctionner via le script de données utilisateur :

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

Afin de tester votre application, vous aurez besoin de l'adresse IP publique de votre instance. Exécutez la commande suivante pour restaurer l'adresse IP publique de votre instance.

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

Copiez et collez l'adresse IP dans votre navigateur, l'application doit s'exécuter :

gsg-build-lightsail-6

Conclusion

Dans ce premier module, nous avons découvert comment créer notre infrastructure à l'aide de l'AWS CLI et comment déployer un exemple d'application. Dans le module suivant, nous apprendrons à nettoyer les ressources utilisées dans ce guide.

À suivre : nettoyage des ressources

Dites-nous si nous avons répondu à vos attentes.

Nous vous remercions pour votre commentaire
Nous sommes ravis que cette page vous ait été utile. Souhaitez-vous partager des détails supplémentaires pour nous aider à continuer à nous améliorer ?
Fermer
Nous vous remercions pour votre commentaire
Nous sommes désolés que cette page ne vous ait pas été utile. Souhaitez-vous partager des détails supplémentaires pour nous aider à continuer à nous améliorer ?
Fermer