CLOUD HACK: Comment préparer la production

Cet article vous guidera à travers tout ce que vous devez faire pour que votre site web statique soit hébergé et prêt pour la production.

Cela supportera un trafic insensé et ne vous coûtera rien!

Ensemble, nous allons nous débrouiller avec les enregistrements DNS et d'autres éléments de bas niveau, mais c'est plus facile qu'il n'y paraît - et cela en vaut la peine.

Je ne pouvais pas trouver un moyen d’obtenir un nom de domaine gratuit, alors dans un esprit de vraie transparence, je dirais que vous devrez payer pour cela.

introduction

Nous allons demander à Google et à CloudFlare de faire le gros du travail pour nous. Il ne reste donc qu’à construire le site Web et à tout mettre en place.

Dans cet article, nous allons:

  • Configurer un projet Google App Engine
  • Déployer un site web dans le cloud
  • Obtenez notre propre nom de domaine
  • Configurer notre propre nom de domaine avec CloudFlare
  • Modifiez les paramètres DNS pour diriger le domaine vers notre site Web.
  • Configurez la mise en cache et HTTPS sur le domaine pour prendre en charge une échelle massive

Cela semble difficile, surtout si vous n’êtes pas habitué à ces termes, mais nous allons parcourir chaque étape ensemble.

Envisagez de partager cette information sur les réseaux sociaux avec d'autres personnes qui pourraient le trouver utile, ou envoyez le lien à une personne que vous connaissez qui paie pour l'hébergement de site Web statique.

Qu'est-ce que Google App Engine?

Google App Engine est un service de Google qui vous permet de créer et d'héberger des applications Web complexes à très grande échelle. Vous pouvez interagir avec des centaines d'API pour résoudre toutes sortes de problèmes techniques tels que le stockage de données, l'exécution de requêtes, la mise en file d'attente, la fourniture de fonctionnalités d'apprentissage automatique, l'envoi de courriers électroniques… ouais, et la gestion de HTML et de CSS.

Le quota gratuit sur Google App Engine signifie que votre site Web peut recevoir une certaine quantité de trafic avant que vous ne deviez commencer à payer pour cela. mais en fait, nous ne nous en approcherons pas grâce à CloudFlare.

Qu'est-ce que CloudFlare?

CloudFlare est assez difficile à décrire, mais pour nos besoins, vous pouvez le considérer comme une capacité de mise en cache de contenu impressionnante (et gratuite) où les serveurs CloudFlare conserveront une copie de votre site Web et la serviront directement à vos visiteurs. Il convient de noter que CloudFlare stocke de nombreuses copies du contenu dans des endroits clés du monde entier, de sorte que les navigateurs Web des visiteurs n’ont pas besoin de chercher très loin sur Internet pour le récupérer.

Pour les sites Web qui ne changent pas souvent, vous pouvez définir des stratégies de cache très agressives. Votre projet Google App Engine finira par ne plus recevoir beaucoup de demandes. Si vous mettez votre site à jour, vous devrez soit attendre que le cache expire, soit le purger manuellement (je vais vous expliquer comment plus tard).

ÉTAPE 1: Construisez votre site web

La première chose à faire est de construire votre site web. Pour ce faire, en utilisant les outils que vous avez l'habitude d'utiliser, l'objectif est de créer un dossier contenant l'ensemble de votre site Web. Il ne peut contenir aucun contenu dynamique. Les scripts CGI, les pages .aspx, le code Ruby on Rails, etc. sont donc totalement exclus. Les sites Web statiques ne sont généralement que des fichiers HTML, CSS, JavaScript, des images, etc.

Assurez-vous qu'il a une page index.html

Lorsque les visiteurs atteignent votre nom de domaine sans chemin d'accès, la page index.html est affichée. Assurez-vous donc qu'il existe.

Tout mettre dans un dossier www

Nous allons ajouter un dossier contenant notre site Web statique afin que la structure de notre projet ressemble à ceci:

Placez le site entier dans un dossier `www`

Ne vous inquiétez pas pour ce fichier app.yaml plus tard; nous l'ajouterons bientôt.

Vous pouvez penser au dossier www comme étant ce qui sera servi lorsque vos visiteurs iront sur mywebsite.com.

ÉTAPE 2: déployer sur Google App Engine

Maintenant que vous avez votre site Web, il est temps de le déployer dans Google App Engine.

Connectez-vous à la console Google Cloud Platform.

Rendez-vous sur https://console.cloud.google.com et connectez-vous à l'aide de votre compte Google.

Créer un projet

Sélectionnez Créer un projet dans le menu, puis choisissez un nom de projet approprié qui reflète votre nom de domaine. Donc, si votre domaine est matswebsite.com, appelez peut-être ce site Web du projet. Il générera automatiquement un ID de projet pour vous, mais vous pouvez cliquer sur le petit lien Modifier pour le modifier et choisir le vôtre. Nous utiliserons cet identifiant de projet ultérieurement, alors rendez-le agréable et facile à mémoriser. L’ID de projet doit être unique au monde, c’est pourquoi l’utilisation de votre domaine n’est pas une mauvaise idée, par exemple. matswebsitecom.

Cliquez sur CREER.

Création d'un projet sur Google Cloud Platform

Après quelques instants, le projet sera créé et nous pourrons activer Google App Engine.

Accédez au menu (cliquez sur les trois lignes dans le coin supérieur gauche) et choisissez App Engine pour accéder à la console App Engine.

Installer le SDK Google Cloud

Rendez-vous sur https://cloud.google.com/sdk/ et téléchargez le SDK Google Cloud pour votre ordinateur. Le SDK contient des outils de ligne de commande qui nous permettent de déployer votre site Web.

Ajouter un fichier app.yaml

Pour indiquer à Google App Engine comment nous souhaitons déployer notre site, nous devons créer un petit fichier de configuration dans le dossier racine de notre site Web.

Insérez les éléments suivants dans le nouveau fichier:

runtime: go
api_version: go1
gestionnaires:
- url: /
  static_files: www / index.html
  télécharger: www / index.html
- url: /(.*)
  static_files: www / \ 1
  télécharger: www /(.*)

Dans les fichiers YAML, les espaces blancs sont importants. Assurez-vous donc qu'il y a deux espaces avant les fichiers static_file et les lignes de téléchargement.

Pour en savoir plus sur le fichier app.yaml, consultez la documentation. Pour le moment, il suffit de savoir que nous servons le contenu de manière statique à partir du dossier www.

Ajouter un fichier main.go

Pour que notre projet soit un projet Go valide, nous devons ajouter du code Go. Ne vous inquiétez pas, je vais vous donner le minimum absolu de code requis.

Créez un fichier dans votre dossier (à côté du fichier app.yaml) appelé main.go et insérez le code suivant:

application de package
func main () {}
Si vous n’avez jamais entendu parler de Go, je vous recommande vivement d’y jeter un coup d’œil. C’est une langue amusante et extrêmement utile: pourquoi ne pas faire le tour?

Déployer

Dans un terminal shell, utilisez d'abord la commande gcloud (à partir du SDK Google Cloud) pour vous connecter:

authentification gcloud
Si vous êtes coincé ici, consultez le guide de démarrage rapide pour obtenir de l'aide.

Cela ouvrira un navigateur Web et vous demandera de vous connecter à votre compte Google. Une fois terminé, le terminal vous indiquera que la connexion a réussi.

Maintenant, cd dans le dossier de votre site Web de sorte que faire ls ou dir affiche le dossier www dans la liste.

Maintenant, définissez le nom du projet:

gcloud config set project PROJECT_ID

Remplacez PROJECT_ID par l'ID de projet que vous avez défini lors de la création de votre projet dans la console Google Cloud.

Nous allons maintenant commencer le déploiement:

gcloud app deploy

Si le SDK Google Cloud a besoin de composants supplémentaires (pour moi, il avait besoin de app-engine-go), vous serez invité à les installer. Répondez O (pour oui) à chaque question.

Enfin, il vous demandera si vous souhaitez déployer l'application - appuyez sur Y et entrez à nouveau.

Au bout d'un moment, l'application sera déployée et accessible via le domaine appspot.com:

https://PROJECT_ID.appspot.com
N'oubliez pas de remplacer PROJECT_ID par votre ID de projet.

ÉTAPE 3: Configurez votre nom de domaine

Sélectionnez et achetez un domaine

Pour que les visiteurs puissent voir votre site Web, ils doivent consulter un nom de domaine. Bien que vous puissiez utiliser le site appspot.com fourni gratuitement par Google App Engine, il est bien plus agréable d’avoir le vôtre.

Rendez-vous sur namecheap.com ou recherchez une entreprise qui vend des noms de domaine et achetez votre domaine. Vous devrez être en mesure de changer les serveurs de noms, assurez-vous donc que l'entreprise le supporte (Namecheap le fait).

Configuration de CloudFlare

Allez sur CloudFlare.com et créez un compte. Ensuite, sélectionnez Ajouter un site dans la barre de menus en haut. Entrez votre domaine et cliquez sur Lancer l'analyse. Une fois la magie terminée, cliquez sur Continuer la configuration et suivez les étapes restantes, en cliquant sur Continuer où vous pouvez jusqu'à la page Sélectionner un plan CloudFlare.

Choisissez le forfait GRATUIT et cliquez sur Continuer.

Le plan de site Web gratuit a tout ce dont nous avons besoin - CloudFlare est assez généreux.

Il vous sera ensuite demandé de mettre à jour vos serveurs de noms, alors revenez à l'endroit où vous avez acheté votre nom de domaine et entrez les valeurs que CloudFlare vous a données.

Afin de router le trafic via CloudFlare, nous devons mettre à jour les serveurs de noms. CloudFlare vous dit quelles valeurs utiliser.

Dans Namecheap, vous accédez au tableau de bord et cliquez sur GÉRER en regard de votre domaine. Recherchez ensuite NAMESERVERS et choisissez DNS personnalisé. Copiez et collez les serveurs de noms dans les deux boîtes fournies:

Namecheap vous permet de spécifier vos propres serveurs de noms. N'oubliez pas de cliquer sur la petite coche verte pour confirmer vos modifications.

Ceci fait, cliquez sur Continuer dans CloudFlare et attendez. Cela peut prendre un certain temps pour que les changements prennent effet, alors allez chercher une tasse de thé ou une autre boisson appropriée (ou inappropriée).

Finalement, il passe au vert (vous pouvez actualiser autant de fois que vous le souhaitez):

Une fois les serveurs de noms mis à jour, votre site sera en direct dans CloudFlare.

Indiquez à App Engine votre domaine

De retour dans la console Google Cloud, accédez à nouveau à la console App Engine et sélectionnez Paramètres.

Dans l'onglet Domaines personnalisés, sélectionnez Ajouter un domaine personnalisé.

Vous devrez vérifier que vous êtes le propriétaire du domaine avant de pouvoir demander à Google App Engine de lui fournir du contenu. Pour ce faire, sélectionnez Vérifier un nouveau domaine dans la liste, puis entrez-le dans la case prévue à cet effet.

Un clic sur Vérifier déclenchera un nouveau processus permettant de prouver que nous possédons et contrôlons ce nom de domaine. Dans la nouvelle fenêtre, sélectionnez le nom de votre fournisseur (espérons-le, Namecheap, car c’est facile) et notez qu’il vous est demandé d’ajouter un enregistrement DNS TXT:

Pour prouver à Google que nous contrôlons un nom de domaine, nous devons ajouter un code DNS spécial fourni par celui-ci.

Ne vous inquiétez pas, ce n’est pas aussi effrayant qu’il semble. Sélectionnez le texte étrange dans la zone, copiez-le et revenez à CloudFlare, et nous ajouterons la valeur.

Assurez-vous que votre domaine est sélectionné dans CloudFlare, puis choisissez l'onglet DNS.

En haut de la table, il y a un formulaire où nous pouvons ajouter l'enregistrement souhaité par Google:

Dans le champ Nom, entrez un caractère @ et, pour le contenu, collez la valeur fournie par Google. Cliquez sur Ajouter un enregistrement.

Il sera ajouté à la liste des enregistrements DNS.

Retournez maintenant sur la plateforme Google Cloud et cliquez sur Vérifier.

Cela peut prendre un certain temps - ne vous inquiétez donc pas si cela ne fonctionne pas tout de suite. Tant que vous avez collé la valeur correcte dans CloudFlare, celle-ci sera éventuellement mise à jour. Vous attendez en fait que les serveurs DNS se propagent, ce qui semble plus magique que cela n’est pas le cas. Toutefois, si vous ne voulez pas attendre, envisagez d’utiliser les serveurs DNS publics de Google, ils sont très rapides.

Enfin, vous obtiendrez la page de réussite ci-dessus.

De retour dans la console Google Cloud> App Engine> Paramètres> Domaines personnalisés, cliquez sur Actualiser les domaines et notez que votre domaine est désormais une option dans la liste déroulante. Sélectionnez-le et cliquez sur Continuer, puis sur Enregistrer les mappages.

Après un moment, cliquez à nouveau sur Continuer et notez que Google App Engine nous fournit maintenant de nouveaux paramètres DNS. Nous devons nous assurer que notre page DNS CloudFlare a les mêmes valeurs.

Google veut que chacune de ces valeurs soit intégrée à la console CloudFlare: un simple copier-coller ne fait de mal à personne, n'est-ce pas?

De retour dans CloudFlare, appuyez sur le X situé à côté de tous les enregistrements DNS, à l’exception de l’enregistrement TXT ajouté (nous le laisserons ici afin que Google sache que nous contrôlons toujours ce domaine).

Maintenant, pour chaque élément de la page Google, créez un enregistrement dans CloudFlare. C’est la chose la plus difficile à faire, lisez donc ces conseils en premier:

  • Le menu déroulant TXT vous permet de spécifier le type (vous aurez besoin de A, AAAA et CNAME).
  • Dans Google App Engine, le champ Alias ​​est le nom dans Cloudflare. S'il n'y a pas d'alias, utilisez à nouveau le caractère @. (Vous pouvez également laisser ce champ vide et CloudFlare saura ce que vous voulez dire - ou vous demandera de le régler sur @)
  • Laisser le TTL comme TTL automatique
  • CloudFlare sait ce qu’il fait et il est difficile de se tromper. Copiez-collez chaque valeur et faites confiance à CloudFlare pour vous prévenir si vous vous trompez.
  • Faites attention aux espaces blancs supplémentaires lors du copier-coller, cela pourrait provoquer une erreur de validation, mais il est difficile de voir.

Cela finira par ressembler à ceci:

De retour dans Google App Engine, cliquez sur Terminé.

Donner à Internet le temps de se rattraper

Pour que votre domaine fonctionne, Internet a besoin de s'adapter à ces changements. Ils disent que cela peut prendre 24 heures, mais si vous utilisez les serveurs DNS de Google, c'est généralement assez immédiat.

En attendant, vous pouvez activer la mise en cache agressive et HTTPS sur CloudFlare.

ÉTAPE 4: Mise en cache d'installation et HTTPS

L'astuce pour garder l'hébergement statique gratuit, quel que soit le trafic généré, consiste à activer la mise en cache dans CloudFlare.

Cliquez sur l'onglet Règles de page, puis sur Créer une règle de page.

Dans la zone de correspondance d'URL, entrez votre domaine sous la forme: * .mon siteweb.com / * - ce qui indique que la règle doit s'appliquer quel que soit le sous-domaine et le chemin d'accès.

Dans le paramètre, choisissez Edge Cache TTL et définissez la valeur sur un mois. Cliquez sur Enregistrer et déployer.

Si vous définissez la durée de vie du cache Edge sur un mois, (en théorie), notre site Web Google App Engine ne sera affiché qu'une fois par mois. Le reste du temps, le CDN Edge de CloudFlare le servira. Évidemment, c'est agressif - vous pouvez jouer avec les paramètres pour trouver les bonnes valeurs pour vous.

Pour rendre notre site accessible via HTTPS, nous allons ajouter une autre règle de page:

Cette fois, indiquez la valeur de correspondance d’URL suivante: http: //*.mywebsite.com/*

En utilisant une règle de page dans CloudFlare, nous pouvons lui indiquer de toujours utiliser HTTPS pour notre site Web.

Choisissez Toujours utiliser HTTPS dans la liste et cliquez sur Enregistrer et déployer.

Vous pouvez éventuellement ajouter une URL de transfert pour vous assurer que tout le trafic est acheminé vers le site www.monsite.com ou le site mywebsite.com.

Ce sont les règles de page finales pour honorablecode.com

Purgez la cache quand vous le souhaitez

Chaque fois que vous apportez des modifications à votre site Web, insérez-vous dans la console CloudFlare, accédez à l'onglet Caching et choisissez Purger tout dans le menu déroulant:

Les nouvelles demandes de votre site Web vont maintenant aller à Google App Engine et la dernière version sera servie (et mise en cache par CloudFlare pour les demandes futures).

Votre site web est en direct!

Une fois que les serveurs DNS sont rattrapés, votre site Web statique gratuit et sécurisé sera en ligne.

Conclusion

En utilisant simplement les options GRATUITES de Google App Engine et CloudFlare et un peu de magie DNS, nous sommes en mesure d'héberger gratuitement notre site Web statique prêt pour la production.

Nous étions capable de:

  • Configurer un projet Google App Engine
  • Déployer un site web dans le cloud
  • Obtenez notre propre nom de domaine
  • Configurer notre propre nom de domaine avec CloudFlare
  • Modifiez les paramètres DNS pour diriger le domaine vers notre site Web.
  • Configurez la mise en cache et HTTPS sur le domaine pour prendre en charge une échelle massive

Bon travail.

Acheter mon livre

En théorie, je viens de vous faire économiser beaucoup d’argent, alors pourquoi ne pas dire merci en achetant mon livre. :)

Si vous aimez faire des choses comme dans cet article, alors vous allez adorer ce que vous pouvez faire avec Go. Dans mon livre intitulé Go Programming Blueprints, nous construisons de la vraie chose. Flex vos muscles dev.

Obtenez votre copie de https://www.packtpub.com/application-development/go-programming-blueprints-second-edition

Également, twittez-moi @matryer si vous êtes bloqué et je verrai si je peux vous aider.