Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déploiement d'une PHP application Cake sur Elastic Beanstalk
Cake PHP est un MVC framework open source pourPHP. Ce didacticiel explique comment générer un PHP projet Cake, le déployer dans un environnement Elastic Beanstalk et le configurer pour qu'il se connecte à une instance de base de données Amazon. RDS
Sections
Prérequis
Ce tutoriel suppose que vous connaissez les opérations de base Elastic Beanstalk et la console Elastic Beanstalk. Si ce n'est pas déjà fait, suivez les instructions dans Commencer à utiliser Elastic Beanstalk pour lancer votre premier environnement Elastic Beanstalk.
Pour suivre les procédures décrites dans ce guide, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes, les commandes sont précédées d'un symbole d'invite ($) et du nom du répertoire actuel, le cas échéant.
~/eb-project$ this is a command
this is output
Sous Linux et macOS, vous pouvez utiliser le shell et le gestionnaire de package de votre choix. Sur Windows, vous pouvez installer le sous-système Windows pour Linux
Cake PHP 4 nécessite la PHP version 7.2 ou une version ultérieure. Il nécessite également les PHP extensions répertoriées dans la documentation PHPd'installation officielle de Cake
Lancer un environnement Elastic Beanstalk
Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la PHPplateforme et acceptez les paramètres par défaut et l'exemple de code.
Pour lancer un environnement (console)
-
Pour Platform (Plateforme), sélectionnez la plateforme et la branche de plateforme qui correspondent au langage utilisé par votre application.
-
Pour l'option Code de l'application, choisissez Exemple d'application.
-
Choisissez Vérifier et lancer.
-
Passez en revue les options disponibles. Choisissez l'option disponible que vous souhaitez utiliser et, une fois que vous êtes prêt, choisissez Create app (Créer une application).
La création d'un environnement prend environ 5 minutes et crée les ressources suivantes :
-
EC2instance — Une machine virtuelle Amazon Elastic Compute Cloud (AmazonEC2) configurée pour exécuter des applications Web sur la plateforme de votre choix.
Chaque plateforme exécute un ensemble spécifique de logiciels, de fichiers de configuration et de scripts pour prendre en charge une version de langage, une infrastructure ou un conteneur web spécifiques, ou une combinaison de ces éléments. La plupart des plateformes utilisent Apache ou NGINX un proxy inverse qui se trouve devant votre application Web, lui transmet les demandes, fournit des ressources statiques et génère des journaux d'accès et d'erreurs.
-
Groupe de sécurité d'instance : groupe EC2 de sécurité Amazon configuré pour autoriser le trafic entrant sur le port 80. Cette ressource permet au HTTP trafic provenant de l'équilibreur de charge d'atteindre l'EC2instance qui exécute votre application Web. Par défaut, le trafic n'est pas autorisé sur les autres ports.
-
Équilibreur de charge – Équilibreur de charge Elastic Load Balancing configuré pour répartir les demandes vers les instances exécutant votre application. De plus, l'équilibreur de charge vous évite d'exposer directement vos instances sur Internet.
-
Groupe de sécurité d'équilibrage de charge : groupe EC2 de sécurité Amazon configuré pour autoriser le trafic entrant sur le port 80. Cette ressource permet au HTTP trafic provenant d'Internet d'atteindre l'équilibreur de charge. Par défaut, le trafic n'est pas autorisé sur les autres ports.
-
Groupe Auto Scaling – Groupe Auto Scaling configuré pour remplacer une instance si elle est résiliée ou devient indisponible.
-
Compartiment Amazon S3 – Emplacement de stockage pour votre code source, les journaux et autres artefacts qui sont créés lorsque vous utilisez Elastic Beanstalk.
-
CloudWatch Alarmes Amazon : deux CloudWatch alarmes qui surveillent la charge sur les instances de votre environnement et qui sont déclenchées si la charge est trop élevée ou trop faible. Lorsqu'une alarme est déclenchée, votre groupe Auto Scaling s'adapte en fonction, à la hausse ou à la baisse.
-
AWS CloudFormation stack — Elastic AWS CloudFormation Beanstalk utilise pour lancer les ressources de votre environnement et propager les modifications de configuration. Les ressources sont définies dans un modèle, que vous pouvez afficher dans la console AWS CloudFormation
. -
Nom de domaine : nom de domaine qui permet d'accéder à votre application Web sous la forme
subdomain
.region
.elasticbeanstalk.com.Sécurité du domaine
Si vous devez définir des cookies sensibles dans le nom de domaine par défaut de vos applications Elastic Beanstalk, nous vous recommandons d'utiliser des cookies
__Host-
avec un préfixe pour une sécurité accrue. Cette pratique protège votre domaine contre les tentatives de falsification de requêtes intersites (). CSRF Pour plus d'informations, consultez la page Set-Cookiedu Mozilla Developer Network.
Toutes ces ressources sont gérées par Elastic Beanstalk. Lorsque vous arrêtez votre environnement, Elastic Beanstalk arrête toutes les ressources qu'il contient.
Note
Le compartiment Amazon S3 créé par Elastic Beanstalk est partagé entre les environnements et n'est pas supprimé lors de l'arrêt de l'environnement. Pour de plus amples informations, veuillez consulter Utilisation d'Elastic Beanstalk avec Amazon S3.
Installez Cake PHP et générez un site Web
Composer peut installer Cake PHP et créer un projet fonctionnel avec une seule commande :
~$ composer create-project --prefer-dist cakephp/app eb-cake
Composer installe Cake PHP et une vingtaine de dépendances, et génère un projet par défaut.
Si vous rencontrez des problèmes lors de l'installation de CakePHP, consultez le sujet d'installation dans la documentation officielle : http://book.cakephp.org/4.0/en/installation.html
Déploiement de votre application
Créez un bundle source contenant les fichiers créés par Composer. La commande suivante permet de créer une solution groupée source nommée cake-default.zip
. Elle exclut les fichiers du dossier vendor
, lesquels prennent beaucoup de place et ne sont pas nécessaires pour le déploiement de votre application dans Elastic Beanstalk.
eb-cake zip ../cake-default.zip -r * .[^.]* -x "vendor/*"
Téléchargez le bundle source sur Elastic Beanstalk pour déployer Cake dans votre environnement. PHP
Pour déployer un groupe source
Ouvrez la console Elastic Beanstalk
, puis dans la liste des régions, sélectionnez votre. Région AWS -
Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.
Note
Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.
-
Sur la page de présentation de l'environnement, choisissez Upload and deploy (Charger et déployer).
-
Utilisez la boîte de dialogue à l'écran pour charger le bundle source.
-
Choisissez Deploy (Déployer).
-
Une fois le déploiement terminé, vous pouvez choisir le site sur URL lequel ouvrir votre site Web dans un nouvel onglet.
Note
En vue d'optimiser davantage le bundle source, initialisez un référentiel Git et utilisez la commande git
archive pour créer le bundle source. Le projet Symfony par défaut inclut un fichier .gitignore
qui indique à Git d'exclure le dossier vendor
et d'autres fichiers qui ne sont pas nécessaires pour le déploiement.
Lorsque le processus est terminé, cliquez sur le URL pour ouvrir votre PHP application Cake dans le navigateur.
Jusqu'ici, tout va bien. Vous allez ensuite ajouter une base de données à votre environnement et configurer Cake PHP pour qu'il s'y connecte.
Ajout d'une base de données à votre environnement
Lancez une instance RDS de base de données Amazon dans votre environnement Elastic Beanstalk. Vous pouvez utiliser les SQL bases de données My SQL ou Postgre avec Cake PHP on Elastic Beanstalk. SQLServer Pour cet exemple, nous allons utiliser PostgreSQL.
Pour ajouter une RDS instance de base de données Amazon à votre environnement Elastic Beanstalk
Ouvrez la console Elastic Beanstalk
, puis dans la liste des régions, sélectionnez votre. Région AWS -
Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.
Note
Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.
Dans le panneau de navigation, choisissez Configuration.
-
Sous Database (Base de données), choisissez Edit (Modifier).
-
Pour Moteur de base de données, choisissez postgres.
-
Saisissez un nom d'utilisateur principal et un mot de passe. Elastic Beanstalk fournit ces valeurs à votre application en utilisant les propriétés d'environnement.
-
Pour enregistrer les modifications, cliquez sur Appliquer en bas de la page.
La création d'une instance de base de données prend environ 10 minutes. En attendant, vous pouvez mettre à jour votre code source afin de lire les informations de connexion depuis l'environnement. Elastic Beanstalk fournit des détails de connexion en utilisant les variables d'environnement telles que RDS_HOSTNAME
auxquelles vous pouvez accéder depuis votre application.
La configuration PHP de la base de données de Cake se trouve app.php
dans un fichier nommé dans le config
dossier du code de votre projet. Ouvrez ce fichier et ajoutez du code qui lit les variables d'environnement de $_SERVER
et les attribue à des variables locales. Insérez les lignes en surbrillance dans l'exemple ci-dessous, après la première ligne (<?php
) :
Exemple ~/Eb- .php cake/config/app
<?php
if (!defined('RDS_HOSTNAME')) {
define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
La connexion de base de données est configurée plus bas dans app.php
. Trouvez la section suivante et modifiez la configuration des sources de données par défaut avec le nom du pilote qui correspond à votre moteur de base de données (Mysql
, Sqlserver
ou Postgres
) et configurez les variables host
, username
, password
et database
pour lire les valeurs correspondantes à partir d'Elastic Beanstalk :
Exemple ~/Eb- .php cake/config/app
...
/**
* Connection information used by the ORM to connect
* to your application's datastores.
* Drivers include Mysql Postgres Sqlite Sqlserver
* See vendor\cakephp\cakephp\src\Database\Driver for complete list
*/
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Postgres
',
'persistent' => false,
'host' => RDS_HOSTNAME
,
/*
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number',
'username' => RDS_USERNAME
,
'password' => RDS_PASSWORD
,
'database' => RDS_DB_NAME
,
/*
* You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6).
*/
//'encoding' => 'utf8mb4',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
...
Lorsque l'instance DB a terminé son lancement, regroupez et déployez l'application mise à jour dans votre environnement :
Pour mettre à jour votre environnement Elastic Beanstalk
-
Créez un nouveau groupe source :
~/eb-cake$
zip ../cake-v2-rds.zip -r * .[^.]* -x "vendor/*"
Ouvrez la console Elastic Beanstalk
, puis dans la liste des régions, sélectionnez votre. Région AWS -
Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.
Note
Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.
-
Choisissez Upload and Deploy (Charger et déployer).
-
Choisissez Browse (Parcourir) et chargez
cake-v2-rds.zip
. -
Choisissez Deploy (Déployer).
Le déploiement d'une nouvelle version de votre application prend moins d'une minute. Lorsque le déploiement est terminé, actualisez la page web à nouveau pour vérifier que la connexion de base de données a abouti :
Nettoyage
Lorsque vous avez fini d'utiliser Elastic Beanstalk, vous pouvez arrêter votre environnement. Elastic Beanstalk AWS met fin à toutes les ressources associées à votre environnement, telles que les instances EC2 Amazon, les instances de base de données, les équilibreurs de charge,les groupes de sécurité et les alarmes.
Pour mettre fin à votre environnement Elastic Beanstalk depuis la console
Ouvrez la console Elastic Beanstalk
, puis dans la liste des régions, sélectionnez votre. Région AWS -
Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.
Note
Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.
-
Choisissez Actions (Actions), puis Terminate Environment (Résilier l’environnement).
-
Utilisez la boîte de dialogue à l'écran pour confirmer la résiliation de l'environnement.
Avec Elastic Beanstalk, vous pouvez facilement créer un nouvel environnement pour votre application à tout moment.
Vous pouvez également arrêter les ressources de base de données que vous avez créées hors de votre environnement Elastic Beanstalk. Lorsque vous mettez fin à une RDS instance de base de données Amazon, vous pouvez prendre un instantané et restaurer les données sur une autre instance ultérieurement.
Pour mettre fin à votre RDS instance de base de données
-
Ouvrez la RDSconsole Amazon
. -
Choisissez Databases (Bases de données).
-
Sélectionnez votre instance DB.
-
Choisissez Actions, puis Supprimer.
-
Choisissez si vous souhaitez créer un instantané, puis choisissez Delete (Supprimer).
Étapes suivantes
Pour plus d'informations sur CakePHP, lisez le livre sur book.cakephp.org
À mesure que vous continuez à développer votre application, vous souhaiterez probablement disposer d'une solution pour gérer des environnements et déployer votre application sans devoir créer un fichier .zip et le charger manuellement sur la console Elastic Beanstalk. L'interface de ligne de commande CLI (EB easy-to-use) d'Elastic Beanstalk fournit des commandes pour créer, configurer et déployer des applications dans les environnements Elastic Beanstalk à partir de la ligne de commande.
L'exécution d'une instance Amazon RDS DB dans votre environnement Elastic Beanstalk est idéale pour le développement et les tests, mais elle lie le cycle de vie de votre base de données à votre environnement. Pour de plus amples informations sur la connexion à une base de données s'exécutant en dehors de votre environnement, consultez Ajouter une instance Amazon RDS DB à votre environnement PHP Elastic Beanstalk.
Enfin, si vous prévoyez d'utiliser votre application dans un environnement de production, vous devez configurer un nom de domaine personnalisé pour votre environnement et activer HTTPS les connexions sécurisées.