Les développeurs aiment automatiser les choses. Pour chaque processus entre le développement et la production, ils souhaitent disposer d'un script facilitant leur flux de travail. C’est également le cas du déploiement.
Le processus de mise en place de la version finale et du déploiement de l'application doit être aussi simple que d'appuyer sur un Déployer maintenant bouton, mais ce n’est pas ce qui se passe la plupart du temps. Nous finissons par investir notre temps et nos ressources dans la configuration du serveur, la configuration de l'environnement, le déplacement de fichiers que nous pensions être non pertinents pour les versions de production, etc..
Certains d'entre nous préfèrent envoyer des fichiers au serveur manuellement via FTP ou laisser le code inséré dans un dépôt GitHub, tandis que d'autres préfèrent un outil de déploiement pour faciliter le processus. Laravel Forge est un outil qui facilite grandement le déploiement de PHP..
Ne laissez pas le nom de marque Laravel vous induire en erreur. En dehors de Laravel, vous pouvez utiliser le service pour héberger WordPress, Symphony, Statamic ou tout autre projet Web pourvu que ce soit en PHP. Personnellement, j'aime bien Laravel Forge pour sa simplicité et sa facilité d'adaptation..
Dans ce didacticiel, je vais vous expliquer les étapes à suivre pour connecter Laravel Forge à AWS et explorer ses atouts..
Laravel Forge vous permet de créer des serveurs cloud et de gérer les processus de déploiement à l'aide de Git et de certains des fournisseurs de serveurs populaires disponibles. Le processus est expliqué ci-dessous:
Tout d'abord, vous devrez connecter AWS ou tout autre fournisseur de cloud à votre compte Forge. Ensuite, liez votre contrôle de code source tel que GitHub à Forge. Vous allez maintenant pouvoir créer des serveurs. Installez votre référentiel de contrôle de source sur le serveur. Enfin, appuyez sur le bouton de déploiement. Assez facile, à droite?
Les serveurs fournis avec Laravel Forge sont livrés avec la pile suivante:
Une fois le serveur créé, vous pouvez configurer davantage.
Lorsque vous vous inscrivez, vous pouvez choisir entre les différents forfaits proposés. J'ai opté pour le plan de base de 12 $ / mois; Cependant, vous aurez un essai gratuit avec un accès à tout ce qui est sur la liste pendant cinq jours..
Une fois connecté, vous verrez quelque chose comme ceci ci-dessous.
Vous pouvez choisir entre Digital Ocean, AWS, Linode et Vultr pour le fournisseur de services. Vous pouvez également utiliser Forge avec un VPC personnalisé. En ce qui concerne le contrôle de source, Forge prend en charge GitHub, GitLab et Bitbucket. Dans ce tutoriel, je vais aborder les principes de base de la configuration d'AWS pour fonctionner avec Forge et GitHub pour le contrôle de source. Une fois que vous avez terminé, vous pourrez créer et mettre en service un nombre illimité de serveurs..
Si vous utilisez un autre fournisseur de services figurant sur la liste, vous pouvez ignorer cette étape et nous rejoindre ultérieurement, après avoir configuré AWS et Laravel Forge..
Pour configurer Forge et AWS, voici les étapes à suivre..
Connectez-vous à Laravel Forge et choisissez AWS en tant que fournisseur de services. On vous demandera un ID de clé d'accès (clé) et une clé d'accès secrète (secret). Vous devrez créer un utilisateur IAM spécifique avec une stratégie offrant un accès suffisant à Laravel Forge. IAM est le moyen utilisé par Amazon pour mapper les autorisations sur chaque utilisateur afin que vous puissiez révoquer l'accès en cas de problème..
Connectez-vous à la console AWS et créez un nouvel utilisateur IAM..
Donnez à l'utilisateur un nom significatif et cochez la case Accès programmatique.
Définissez l'autorisation appropriée pour l'utilisateur IAM laravel-forge. Créez un nouveau groupe d'utilisateurs car les groupes d'utilisateurs sont idéaux pour la gestion des autorisations. Maintenant, la question naturelle est: "À quelles politiques l'utilisateur de la forge doit-il avoir accès?" Bien que vous puissiez le fournir avec AdministratorAccess, vous ne devriez pas.
Si vous avez besoin de Forge pour créer et provisionner des serveurs en votre nom, vous devrez ajouter deux stratégies:
Confirmez le compte IAM et, à la page suivante, vous trouverez la clé d'accès et le code secret..
Rendez-vous sur la page Laravel Forge et collez-les à cet endroit. C'est tout.
Connectez votre compte GitHub / Bitbucket à Forge si vous ne l’avez pas déjà fait. Forge va ajouter une clé publique à votre compte lorsque vous créez un serveur. Si vous devez ajouter un nouveau fournisseur de service et / ou mettre à jour le contrôle de source, vous disposez de ces options dans votre profil..
Aller à la page Créer un serveur pour ajouter un nouveau serveur.
Choisissez t2.micro avec 1 Go de RAM si vous êtes sur le niveau gratuit AWS. En ce qui concerne les autres paramètres, je vais aller avec les paramètres par défaut. Cela inclut MySQL pour la base de données et PHP version 7.2. Vous pouvez personnaliser le nom de la base de données ultérieurement. Pour rester simple, j'ai décidé de ne pas utiliser d'équilibreur de charge. Si vous vous interrogez sur la recette de post-production, je l'ai couverte vers la fin de ce didacticiel..
La création du serveur peut prendre jusqu'à cinq minutes. Vous recevrez les informations d'identification pour l'accès sudo. Rangez-les dans un endroit sûr afin de pouvoir les utiliser ultérieurement. Pour voir que les choses fonctionnent comme prévu, allez à l'adresse IP du serveur et vous devriez voir la sortie de phpinfo ()
sur votre écran.
L’interface que vous voyez après la création d’un serveur est le tableau de bord de gestion du serveur..
Vous pouvez faire beaucoup de choses ici, telles que:
Cela fait beaucoup de fonctionnalités incluses ici. J'ai couvert les points importants de ce tutoriel. Commençons par la gestion du site. Selon les documents de la Forge:
Les sites représentent chaque "domaine" sur votre serveur. Le site "par défaut" est inclus avec chaque serveur fraîchement mis à disposition; Cependant, vous devez le supprimer et créer un nouveau site avec un nom de domaine valide lorsque vous êtes prêt à lancer votre site de production..
Comme vous pouvez le constater, Forge a déjà configuré un site par défaut pour nous. Vous pouvez créer un nombre illimité de sites et les acheminer vers vos sous-domaines. Pour les besoins de ce tutoriel, je vais m'en tenir au site par défaut. Le répertoire Web est défini sur /Publique
par défaut. Voici comment il devrait être configuré pour Laravel et la plupart des autres applications Web..
Si vous cliquez sur un site spécifique, vous verrez l'interface de gestion de site. Vous pouvez gérer, déployer et configurer des sites individuels à partir d'ici..
Voici à quoi ressemble l'interface initialement.
Vous pouvez installer à partir d'un référentiel Git ou installer WordPress. Pour les besoins de ce tutoriel, j'ai créé un exemple Contactez nous application que vous pouvez insérer dans votre compte. Vous pouvez spécifier le nom du projet et de la branche. Une fois que vous avez terminé, vous devriez avoir les contrôles pour déployer votre application.
Je vais vous donner un tour rapide des options disponibles.
Pour déployer, vous pouvez déployer manuellement en utilisant le Déployer maintenant bouton. Alternativement, vous pouvez activer le Déploiement rapide option, qui déploie automatiquement le projet lorsque vous insérez du code dans la branche principale du référentiel GitHub choisi.
Le script de déploiement par défaut extrait le code du référentiel, installe des dépendances, démarre le serveur et exécute les migrations chaque fois que l'application est déployée. Voici le script de déploiement actuel.
cd /home/forge/redmonark.com git pull origine compositeur laravelapi installer --no-interaction --prefer-dist --optimize-autoloader echo "" | sudo -S service php7.2-fpm recharge si [-f artisan], puis migration php - force fi
Si vous avez besoin de le peaufiner et d'ajouter quelque chose de plus, vous pouvez.
Vous pouvez l'utiliser pour intégrer votre application à un service tiers ou créer un script de déploiement personnalisé. Lorsque l'URL reçoit une demande, le script de déploiement est déclenché.
Si vous devez mettre à jour la branche ou installer une version plus récente du même projet sur un référentiel différent, vous pouvez utiliser ces options. Si vous mettez à jour la branche, vous devrez peut-être également mettre à jour le nom de la branche dans le script de déploiement..
Forge génère automatiquement un fichier d'environnement pour l'application. Certains détails, tels que les informations d'identification de la base de données, sont automatiquement ajoutés à l'environnement. Toutefois, si l'application utilise une API, vous pouvez placer la clé API en toute sécurité dans l'environnement. Même si vous utilisez une application Web PHP générique, vous pouvez accéder aux variables ENV à l'aide du getenv ()
méthode.
Démarrer un ouvrier de file d'attente dans Forge revient à exécuter le file d'attente: travail
Commande artisanale. Forge gère les travailleurs de la file d'attente à l'aide d'un moniteur de processus appelé Superviseur afin que le processus continue de s'exécuter en permanence. Vous pouvez créer plusieurs files d'attente en fonction de leur priorité ou de toute autre classification que vous jugez utile..
Sécuriser SSL pour un site Web était tout sauf simple et gratuit dans le passé. Forge vous permet d'installer un certificat existant ou vous pouvez obtenir un certificat gratuit auprès de LetsEncrypt. C'est rapide et facile Si vous avez besoin de SSL pour les sous-domaines génériques, vous pouvez ajouter les certificats gratuits Cloudflare à Forge.
Retour à la Gestion de serveur interface, nous avons des clés SSH.
Bien que la plupart des options configurables soient disponibles sur le tableau de bord, si vous devez vous connecter au serveur, utilisez plutôt SSH. SSH est le moyen le plus sécurisé de se connecter à un VPS et offre plus de protection que les mots de passe.
Pour accéder au serveur via SSH, vous devrez générer une paire de clés si ce n'est déjà fait. La clé publique sera rendue accessible au serveur et la clé privée résidera dans votre hôte. Vous pouvez ensuite utiliser la configuration pour vous connecter à l'instance du serveur..
Remarque: La clé SSH ajoutée à partir du tableau de bord de gestion du serveur sera spécifique à ce serveur. Si vous devez ajouter automatiquement des clés à tous les serveurs à partir de là, vous pouvez les ajouter à partir de vos paramètres de profil..
Pour générer une paire de clés, exécutez la commande suivante.
ssh-keygen -t rsa
On vous posera quelques questions, telles que le fichier dans lequel vous souhaitez stocker la clé et la phrase secrète pour plus de sécurité. Ensuite, ajoutez la clé SSH à ssh-agent.
ssh-add ~ / .ssh / id_rsa
Copiez la clé publique et ajoutez-la à la liste des clés SSH de Forge.
cat ~ / .ssh / id_rsa.pub # Copie le résultat de cette commande
Vous pouvez utiliser l'interface pour configurer PHP et MySQL. Pour la base de données, les options disponibles incluent:
Assurez-vous de renseigner les données mises à jour dans votre .env fichier.
Vous pouvez configurer les paramètres PHP suivants:
Ici, j'ai énuméré certains des autres paramètres disponibles..
Vous pouvez utiliser le planificateur de Forge pour planifier des tâches récurrentes ou exécuter des tâches périodiques. Si vous devez envoyer régulièrement des courriers électroniques, nettoyer quelque chose ou exécuter un script, vous pouvez utiliser le planificateur de tâches. Une tâche est créée par défaut qui s'exécute mise à jour du compositeur
sur une base nocturne. Vous pouvez essayer de planifier un nouveau avec une fréquence de votre choix.
Un démon est un programme informatique qui s'exécute en arrière-plan. Laravel Forge vous permet de démarrer un démon et utilise Supervisor pour s'assurer que le démon continue de fonctionner. Si le démon se bloque pour une raison quelconque, Supervisor redémarre automatiquement le script..
Laravel Forge prend en charge des outils permettant de surveiller les mesures de performances de votre application en rassemblant des données sur les ressources telles que la mémoire, le temps processeur et les opérations d'E / S. Les outils disponibles sont Blackfire.io et Papertrail. Pour commencer à profiler votre application, il vous suffit de récupérer les informations d'identification appropriées à partir du site Web tiers..
Si vous devez mettre à jour les paramètres du pare-feu, vous n'avez pas besoin d'accéder à la console AWS pour que cela se produise. Vous pouvez créer de nouvelles règles de pare-feu à partir du tableau de bord. Si d'autres serveurs sont configurés à l'aide du même fournisseur et de la même région, vous pouvez configurer un réseau de serveurs afin qu'ils puissent communiquer sans douleur..
Laravel Forge est un outil incroyable qui facilite grandement le déploiement. Il possède une multitude de fonctionnalités et une interface utilisateur conviviale qui vous permet de créer et de provisionner des serveurs et de déployer des applications sans souci. Une fois que vous avez configuré le fournisseur de services, il y a de fortes chances que vous n'ayez pas besoin d'accéder à la console AWS pour gérer à nouveau le serveur..
Dans ce didacticiel, j'ai présenté les bases de la configuration d'AWS avec Laravel Forge et les étapes à suivre pour provisionner un serveur et déployer une application. J'ai également discuté de presque toutes les fonctionnalités disponibles dans l'interface Forge.
Pour ceux d'entre vous qui débutent avec Laravel ou qui souhaitent développer leurs connaissances, leur site ou leur application avec des extensions, nous pouvons étudier de nombreuses choses sur le marché Envato..
Avez-vous une expérience à partager avec le déploiement d'applications PHP utilisant Laravel Forge ou tout autre outil de déploiement populaire? Faites le nous savoir dans les commentaires.