X

Présentation de Envoyer.io | MattStauffer.com


Envoyer est un nouveau produit de Taylor Otwell de Laravel. Découvrez ses vidéos d’introduction sur Laracasts et son interview sur Laravel News.

Un peu d’histoire

Lorsque Taylor Otwell a publié Laravel Forge pour la première fois, le travail qu’il a fallu pour lancer et gérer plusieurs VPS cloud et y déployer des sites était une des principales raisons pour lesquelles l’hébergement mutualisé avait une telle implantation. Forge a pris le processus de création d’un serveur VPS cloud, de gestion de son environnement et de déploiement (et de déploiement automatique de Git-hook) de sites et l’a rendu accessible et abordable.

Mais les besoins de déploiement plus complexes (par exemple, la gestion de scripts de déploiement compliqués ou les déploiements sans temps d’arrêt) n’étaient pas satisfaits par Forge. Que vous soyez ou non un utilisateur de Forge, vous devez compter sur un système de déploiement comme Capistrano ou Chef ou Ansible pour bénéficier de ce niveau de puissance et de flexibilité, et la courbe d’apprentissage de ces systèmes peut être prohibitive.

Présentation d’Envoyer

Aujourd’hui, Envoyer est lancé pour répondre à ces besoins. Envoyer est un déployeur sans temps d’arrêt pour les projets PHP et Laravelce qui signifie qu’il s’agit d’un outil que vous connectez à votre serveur pour exécuter vos déploiements, et qui utilise une série d’outils pour garantir que tout le travail de préparation dont chaque déploiement a besoin pour s’exécuter, par exemple, composer install–se produit en arrière-plan alors que la version précédente du site est toujours en ligne.

Comment fonctionne le déploiement sans temps d’arrêt ?

Si vous avez déjà travaillé avec Capistrano, vous êtes déjà familier avec cela. Notez qu’il s’agit d’une réponse technique; si vous ne vous souciez pas de son fonctionnement, passez simplement à Votre premier projet avec Envoyer.

Un déploiement sur un système traditionnel (par exemple Forge) signifie qu’il n’y a qu’un seul dossier où vit votre contenu. Disons que vous avez deux fichiers, index.php et le app dossier. Vous les placeriez normalement dans la racine Web :

/webroot/index.php
/webroot/app

Ainsi, votre système de déploiement serait cd dans ce répertoire, déroulez votre dernier code (git pull), puis exécutez votre script de déploiement, qui inclut probablement composer install. Cela signifie que votre site est probablement non fonctionnel pendant au moins quelques secondes.

Un système de déploiement sans temps d’arrêt maintient un système de releases dossiers, chacun représentant un seul commit dans votre git histoire. Chaque fois que le système de déploiement est déclenché pour une construction, il crée un nouveau dossier dans releases et clone le dépôt juste à ce commit dans ce dossier. Ensuite, il exécute votre script de déploiement complet ici. Alors seulement, une fois qu’il a une version entièrement fonctionnelle du site prête à l’emploi, ça change le * courant dossier pour être un lien symbolique vers le dernier dossier sous releases*. C’est ça! Le public dossier à tout moment n’est qu’un lien symbolique vers l’un des nombreux dossiers disponibles dans releases.

Et Envoyer gère tout cela pour vous. Vous vous retrouvez avec ceci :

/webroot/current
/webroot/releases
/webroot/releases/20150316074832
/webroot/releases/20150315041251

Notez que tous les dossiers qui doivent persister d’une version à l’autre, par exemple, le storage dossier dans les applications Laravel – doit exister au niveau de la racine Web et doit être lié symboliquement à chaque version. Si vous utilisez Laravel, cela est déjà géré pour vous.

Votre premier projet avec Envoyer

OK, alors commençons avec votre premier projet Envoyer. Rendez-vous sur Envoyer.io. S’inscrire. Choisissez “Je veux gérer mes propres projets”.

Voici votre tableau de bord :

Ajoutez votre premier projet

Votre première étape consiste à ajouter votre projet. Cliquez sur le gros Ajouter un projet bouton en haut à droite.

Vous serez invité à choisir de quel type de projet il s’agit, qui est votre fournisseur Git et de quel projet particulier il s’agit.

Afficher le tableau de bord de votre projet

Une fois que vous démarrez votre premier projet, vous pouvez cliquer sur le tableau de bord du projet.

Ajoutez votre premier serveur

Clique le Les serveurs onglet sur ce tableau de bord et ajoutez un nouveau serveur.

Afin d’ajouter un nouveau serveur, vous devez connaître son adresse IP, sous quel utilisateur Unix/SSH vous allez vous connecter et quel est le chemin de votre projet (probablement quelque chose comme /home/username/website.com ou /var/www/website.com).

Une fois que vous avez ajouté le serveur, Envoyer vous donnera une clé SSH à ajouter à ce serveur afin que Forge puisse s’authentifier.

Copiez cette clé et ajoutez-la à ~/.ssh/authorized_keys sur votre serveur, ou si vous utilisez Forge, ajoutez-le au Clés SSH onglet pour ce serveur.

Maintenant, revenez à Envoyer et vérifiez l’état de votre connexion en cliquant sur l’icône d’actualisation à côté de votre serveur dans le Statut de connexion colonne.

Si tout fonctionne, l’icône deviendra verte et affichera le mot “Succès”.

Préfixer current/ au répertoire servi/public de votre serveur pour ce site

Maintenant, quelle que soit votre racine Web pour votre site Web (dans votre configuration Nginx/Apache), vous devez ajouter current/ à elle. Si vous êtes un utilisateur de Forge & Laravel, vous avez l’habitude de définir le répertoire Web dans Forge sur public. Maintenant, ce sera current/public.

Déclencher un déploiement

Revenez au tableau de bord de votre projet et cliquez sur le rouge Déployer bouton pour déclencher un nouveau déploiement. Allez à la deployments et regardez la fenêtre contextuelle de déploiement.

Cliquez sur le bouton fléché du déploiement et vous pourrez voir chacune des étapes de votre script de déploiement (à ce stade, c’est le script de déploiement par défaut pour le type de projet que vous avez sélectionné) :

Notez que vous pouvez également explorer et afficher la sortie spécifique du terminal une fois que l’une des étapes du script de déploiement est terminée :

Et.. Voila!

C’est tout pour votre premier projet ! Vous avez maintenant un projet en cours d’exécution sur Envoyer. Une remarque : si vous souhaitez qu’il déploie automatiquement votre code chaque fois que vous ajoutez un nouveau commit à votre branche Git, accédez à Paramètres du projet / Contrôle de la source et cochez la case intitulée “Déployer lorsque le code est poussé”:

Personnaliser vos crochets de déploiement

Envoyer a 4 étapes dans son processus de déploiement, et vous pouvez exécuter des scripts personnalisés avant ou après chacune de ces étapes. Les étapes sont Cloner une nouvelle version, Installer les dépendances de Composer, Activer la nouvelle versionet Purger les anciennes versions.

Vous pouvez cliquer sur le bouton d’engrenage à côté de l’une des étapes, et vous verrez cet écran :

Cela vous permettra d’ajouter des crochets avant ou après cette étape. Clique le Ajouter un crochet bouton de chaque côté.

Comme vous pouvez le voir, chaque crochet peut personnaliser son nom, l’utilisateur sous lequel il s’exécute et le corps du crochet, qui a accès au {{release}} variable qui représente le chemin du dossier pour le dossier de la dernière version – par exemple /home/my-user/website.com/releases/20150316083301.

Notez que vous pouvez également cliquer et faire glisser n’importe lequel des crochets dans chaque section pour les réorganiser :

Annulations

Alors, que se passe-t-il si vous lancez un nouveau déploiement et que vous réalisez qu’il a tout cassé ? Normalement, vous devez vous connecter en ssh à votre serveur, git logtrouvez un point de commit, copiez le hachage, git checkout THAT_HASH, composer installpuis arrêtez-vous peut-être pour voir si votre cœur battait toujours.

Avec Envoyer, votre version précédente est toujours un dossier entièrement fonctionnel dans le releases annuaire. Accédez simplement au tableau de bord de votre projet, recherchez le dernier déploiement fonctionnel et cliquez sur le bouton “Redéployer” du cloud. Il faudra le releases dossier pour ce déploiement et un lien symbolique le current répertoire vers celui-ci. C’est ça.

Santé

Vous avez peut-être remarqué la Santé post-déploiement section du tableau de bord du projet Envoyer. Il y a une icône pour New York, Londres et Singapour, les trois régions à partir desquelles Envoyer vérifie la santé de votre site. Jusqu’à ce que vous configuriez une URL de bilan de santé, ces icônes ne seront que des points d’interrogation.

Chaque projet peut avoir un URL de vérification de l’état, que Envoyer appellera après chaque déploiement. Vous pouvez modifier cela dans les paramètres du projet.

Après chaque déploiement, Envoyer examine la réponse HTTP de cette URL et s’assure qu’elle est 200 (le code d’état HTTP pour “OK”), et si c’est le cas, il suppose que votre site est sain. Vous pouvez en faire la page d’accueil de votre site, ou une URL de test spéciale que vous gérez de la manière qui indique le mieux la santé de votre site, selon ce qui vous convient le mieux.

Si tout va bien, vous obtenez tous les chèques verts :

Et si quelque chose se casse, vous obtiendrez des x rouges (et vous voudrez probablement lire le Annulations partie ci-dessus) :

Déploiement sur plusieurs serveurs

Si vous souhaitez déployer sur plusieurs serveurs, ajoutez simplement un deuxième serveur à votre projet et il sera automatiquement intégré au processus de déploiement.

Étapes du déploiement

Notez cependant que lorsque le processus de déploiement s’exécute, il attend la fin de chaque étape sur chaque serveur avant que les autres ne continuent, en veillant à ce que tous vos serveurs restent parfaitement synchronisés.

Synchronisation de la configuration de l’environnement

Si vous avez des fichiers de configuration locaux que vous souhaitez synchroniser sur vos déploiements et serveurs (.env si vous utilisez phpdotenv ou Laravel 5, .env.php si vous utilisez Laravel 4), cliquez sur le Gérer l’environnement bouton dans le tableau de bord de votre projet.

Notez que ce fichier de configuration est haché avec un mot de passe qui n’est jamais stocké par Envoyer, alors assurez-vous de ne pas perdre votre “Environment Key” (c’est-à-dire ce mot de passe).

Une fois que vous avez entré votre mot de passe, vous êtes présenté avec une zone de texte qui est essentiellement un éditeur de code. Collez ce que vous voulez dans ce fichier et il sera enregistré – si vous avez choisi Laravel 5 ou Autre comme type de projet, ce fichier sera .envet si vous choisissez Laravel 4 le dossier sera .env.php.

Choisissez maintenant les serveurs sur lesquels vous souhaitez l’enregistrer et enregistrez.

Envoyer gérera l’enregistrement de ce fichier dans votre racine Web et le créera par un lien symbolique dans chaque répertoire de publication.

Avis

Si vous visitez l’onglet des notifications pour votre projet, vous pouvez configurer Envoyer pour vous informer de tout événement majeur. À l’heure actuelle, Envoyer peut vous notifier dans un salon de discussion Hipchat ou Slack.

Pulsations cardiaques

L’une des plus grandes difficultés que j’ai rencontrées dans la gestion de la santé des serveurs est de s’assurer que leurs tâches cron sont toujours en cours d’exécution. Les Heartbeats d’Envoyer vous permettent de définir le attente qu’une certaine URL fera l’objet d’un ping à une certaine fréquence, ce qui signifie que votre tâche cron peut envoyer un ping à cette URL à la fin de chaque exécution. Si Envoyer manque un ping, il vous en informera.

Pour ajouter un Heartbeat, accédez à l’onglet Heartbeats de votre projet. Cliquez sur le bouton ** Ajouter un battement de cœur*.

Vous pouvez lui attribuer une étiquette, puis définir la fréquence à laquelle vous vous attendez à ce qu’il s’exécute.

Une fois que vous l’avez ajouté, il commencera en tant que Sain. Jusqu’à ce que la période de temps que vous avez choisie se soit écoulée, il restera en bonne santé. Donc, si vous avez choisi “10 minutes”, il restera sain pendant 10 minutes après sa création.

Ping un battement de coeur

Chaque Heartbeat a une URL unique, que vous pouvez obtenir à partir de sa liste dans l’onglet Heartbeats. Ce sera quelque chose comme ça : https://beats.envoyer.io/heartbeat/203849102395790125

Un fichier cron normal peut simplement faire cela pour envoyer un ping au Heartbeat :

php yourfile.php && curl https://beats.envoyer.io/heartbeat/203849102395790125

Si vous utilisez Laravel, les dernières versions de Laravel ont ajouté un thenPing() au planificateur qui vous permet d’envoyer un ping à n’importe quelle URL après l’exécution de la tâche cron. C’est parfait pour Heartbeats :

Et voici la notification que vous recevrez si votre Heartbeat est manqué :

Collaborateurs

Envoyer permet à un nombre illimité de personnes d’accéder à vos serveurs. Si un membre de votre équipe souhaite collaborer mais ne crée pas son propre compte Envoyer, demandez-lui simplement de s’inscrire et de choisir “Je ne fais que collaborer avec d’autres”.

Envoyer a un onglet Collaborateurs sur chaque projet qui vous permet de donner à d’autres personnes l’accès à votre projet en les invitant par e-mail.

Notez que les collaborateurs ont accès à tout dans le projet sauf “Supprimer le projet.”

FAQ

  • Envoyer remplace-t-il Forge ?
    Non. Envoyer ne gère pas vos serveurs. Il peut être utilisé avec n’importe quel VPS, quel que soit le service qui le gère. Cependant, c’est un excellent compagnon pour Forge.
  • Comment Envoyer s’authentifie-t-il auprès de mon serveur ? Une fois que vous avez ajouté un nouveau serveur, Envoyer vous donnera une clé SSH à ajouter à ce serveur afin que Forge puisse s’authentifier.
  • Puis-je utiliser Envoyer avec un projet non-Laravel ? Absolument, même si certaines des fonctionnalités automatiques d’Envoyer ne fonctionneront pas pour vous, par exemple, la liaison automatique du storage annuaire. Mais tout cela est personnalisable.
  • Si j’utilise Forge, dois-je connecter le site à mon référentiel Git dans Forge ? Non. Lancez simplement le site et laissez-le déconnecté de tout référentiel. Envoyer s’occupera de tout cela.
  • Que se passe-t-il en cas d’erreur lors de l’une des étapes de mon processus de déploiement ? Envoyer le remarquera et vous en informera. Cela annulera également le déploiement.