Fermer

novembre 1, 2018

Mes meilleures pratiques pour déployer une application Web sur Alibaba Cloud –


Cet article a été publié à l'origine sur Alibaba Cloud . Merci de soutenir les partenaires qui rendent SitePoint possible.

Dans cet article, je souhaite partager les meilleures pratiques que j'utilise lors du déploiement d'une application Web sur Alibaba Cloud. Je travaille comme pigiste et un de mes clients m'a récemment demandé de configurer SuiteCRM pour sa petite entreprise. Étant donné que j'écris fréquemment des tutoriels pour Alibaba Cloud j'ai recommandé au client d'utiliser la même plate-forme cloud. Voici la configuration recommandée par près de 100 utilisateurs et au moins 30 utilisateurs simultanés.

  1. Instance ECS de 2 vCPU et 4 Go de RAM pour installer Nginx avec PHP-FPM.
  2. ApsaraDB pour RDS pour MySQL avec 1 Go de mémoire, 1 Go de RAM et 10 Go de stockage.
  3. Publipostage direct pour l'envoi d'e-mails

Les étapes que j'ai suivies sont très simples et peuvent être adoptées pour la plupart des applications basées sur PHP.

Si vous êtes nouveau dans Alibaba Cloud, vous pouvez utiliser ce lien pour vous inscrire à Alibaba Cloud. Vous obtiendrez gratuitement un nouveau crédit d'utilisateur de 300 USD, que vous pourrez utiliser pour essayer différents produits Alibaba Cloud.

Création d'une instance ECS

Alibaba Cloud a documenté presque tout ce dont vous aurez besoin pour démarrer avec la plate-forme cloud. . Vous pouvez utiliser le Tutoriels d'initiation ou le Tech Share Blog pour apprendre à utiliser Alibaba Cloud. Vous trouverez les étapes les plus évidentes dans le Guide de démarrage rapide et laissez-moi vous expliquer les meilleures pratiques à suivre lors de la création d'une instance ECS.

Connectez-vous à votre console Alibaba Cloud et accédez à . ] Interface du service de calcul élastique . Vous pouvez facilement créer l'instance en cliquant sur le bouton Create Instance . Il faut garder à l'esprit les points suivants:

  1. Région : Depuis qu'Alibaba Cloud dispose de centres de données dans le monde entier, choisissez toujours la région qui est géographiquement la plus proche des utilisateurs de l'application. À mesure que le centre de données se rapproche de l'utilisateur, le site Web se chargera très rapidement en raison de la faible latence du réseau. Dans mon cas, j'ai choisi la région de Mumbai, car l'organisation était basée à Mumbai même.
  2. Méthode de facturation : Si vous prévoyez de faire fonctionner l'instance en permanence, 24 heures sur 24, 7 jours sur 7, vous devez toujours choisir l'abonnement mensuel. comme il va réduire le prix à moins de la moitié par rapport à Pay-As-You-Go. Par exemple, le coût d'abonnement mensuel d'une instance ECS de type partagé composée de 2 vCPU et de 4 Go de RAM est de 23 USD, mais la même instance dans Pay-As-You-Go coûte 0,103 USD par heure. Le coût mensuel devient 0,103 $ * 24 * 30 = 74,16 USD.
  3. Type d'instance : Choisissez le type d'instance en fonction de vos besoins. Les ressources peuvent être augmentées plus tard sur demande.
  4. Image : Vous pouvez trouver l'application que vous souhaitez installer sur votre instance ECS sur une image Marketplace, mais il est toujours recommandé de l'installer vous-même dans une image officielle vierge. . Plus tard, si votre application rencontre une erreur, vous saurez où chercher.
  5. Stockage : Les disques système sont supprimés lorsque l'instance ECS est libérée. Utilisez le disque de données lorsque cela est possible, car votre disque sera conservé même après la suppression accidentelle de l'instance.

Voici la configuration que j'ai utilisée.

Vous pouvez choisir le VPC créé par défaut. Vous pouvez y ajouter jusqu'à 4092 instances. J'utilise un groupe de sécurité différent pour chaque instance ECS afin de pouvoir configurer individuellement et m'assurer qu'aucun port inutilisé n'est ouvert.

Une autre chose importante est d'utiliser une authentification par clé plutôt que par mot de passe. Si vous avez déjà une paire de clés, vous pouvez ajouter la clé publique à Alibaba Cloud. Sinon, vous pouvez utiliser Alibaba Cloud pour en créer un. Assurez-vous que la clé est stockée dans un endroit très sécurisé et que la clé elle-même est cryptée par une phrase secrète.

C'est tout ce dont vous devez tenir compte lors de la création de l'instance ECS.

l'instance ECS

Une fois que vous avez créé votre instance et que vous vous êtes connecté au terminal, il est conseillé de prendre en compte quelques éléments que vous devriez envisager avant de configurer votre site Web.

  1. Plutôt que d'utiliser le compte root pour exécuter les commandes, configurez-le. un utilisateur sudo lors de la première connexion et utilisez toujours l’utilisateur sudo pour exécuter les commandes. Vous pouvez également définir une authentification à base de clé pour l'utilisateur sudo et désactiver entièrement la connexion root.
  2. Toujours garder votre image de base à jour
  3. Les images de base Alibaba ne contiennent aucun package supplémentaire non requis. N'installez aucun paquet non requis.
  4. En cas de problème lors de l'installation, vous pouvez toujours réinitialiser l'instance en modifiant le disque système. Vous n'avez pas besoin de supprimer l'instance et de la recréer.

J'ai créé l'utilisateur sudo et configuré l'authentification basée sur la clé. J'ai mis à jour l'image de base et mis en place des mises à niveau système sans surveillance. J'ai suivi un didacticiel pour installer le serveur Web Nginx, qui est un serveur Web léger de classe production. De plus, j'ai installé PHP 7.2 avec PHP-FPM. PHP 7.2 est la dernière version disponible de PHP pour le moment. L'utilisation de la dernière version du logiciel garantira que le système est exempt de tous les bugs, nous obtiendrons également un traitement plus rapide et plus de stabilité. Enfin, j'ai téléchargé l'archive SuiteCRM sur son site officiel et déployé les fichiers sur Nginx.

Vous pouvez utiliser les tutoriels de démarrage ou écrits par les auteurs de Tech Share à installer. les applications.

Configuration des règles de groupe de sécurité

Il est très important de ne laisser aucun port inutilisé ouvert dans le groupe de sécurité de l'instance ECS. Examinez les règles de groupe de sécurité que j'ai utilisées pour l'instance SuiteCRM.

Vous pouvez voir que j'ai autorisé uniquement les ports 22, 80 et 443 avec tous les paquets ICMP. Le port 22 est utilisé pour la connexion SSH. Le port 80 est le port HTTP non sécurisé qui, dans mon cas, ne fait que rediriger le port 443 sur HTTPS. Les paquets ICMP sont utilisés pour envoyer une requête ping à l'hôte afin de vérifier s'il est actif ou non. Si vous souhaitez également supprimer les paquets ICMP, vous ne pourrez tout simplement pas envoyer une requête ping à votre instance.

Création de l'instance RDS

La première question à poser avant de créer l'instance RDS est pourquoi exactement nous en avons besoin. Nous pourrions installer n'importe quel serveur de base de données open source tel que MySQL, MariaDB, PostgreSQL ou MongoDB sur l'instance ECS elle-même.

La ​​réponse à la question est que ApsaraDB pour RDS est optimisé pour la vitesse et la sécurité. Par défaut, l'instance que nous créons n'est accessible qu'aux instances de la liste blanche uniquement.

Voyons ce qu'il faut garder à l'esprit lors de la création de l'instance ECS.

  1. Région: Choisissez toujours la même chose. région pour l'instance de base de données et l'instance ECS. Assurez-vous également qu'ils sont tous deux dans le même VPC. Cela vous permettra de tirer parti du transfert de données intranet gratuit entre les hôtes du même réseau. Un autre avantage est que vous ne devez ajouter à la liste blanche que l'adresse IP privée de l'instance ECS. Cela augmente considérablement la sécurité de la base de données.
  2. Billing: Encore une fois, le coût de l'abonnement mensuel est inférieur à celui de la méthode de paiement par répartition. Choisissez en fonction de vos besoins.
  3. Capacité: Vous pouvez commencer avec une configuration bas de gamme telle que 1 Cœur, 1 Go et 5 Go de stockage. Plus tard, vous pourrez augmenter les ressources.
  4. Comptes: Ne créez jamais le compte principal pour l'instance MySQL 5.6 à moins que cela ne soit nécessaire. Vous pouvez créer une base de données et un utilisateur de base de données pour chaque base de données.

Voici la configuration RDS que j'ai utilisée pour SuiteCRM.

Une fois l'instance MySQL RDS activée, j'ai mis en liste blanche l'instance ECS à partir de Security onglet de l'instance. Dès que j'ai ajouté l'adresse IP à la liste blanche, j'ai obtenu le nom d'hôte de l'instance RDS ainsi que le numéro de port, qui était le port par défaut de MySQL "3306". J'ai créé une base de données nommée "suitecrm" et un utilisateur de base de données nommé "suitecrm" et lui ai fourni un accès en lecture / écriture.

Utilisation de HTTPS

Internet étant de plus en plus grand, de plus en plus de sites Web sont ajoutés quotidiennement. Lorsque l'autorité de certification de Let's Encrypt a commencé à fournir des certificats SSL gratuitement, l'utilisation de SSL sur tous les sites Web est devenue une tendance. Pour des raisons de sécurité, il est très important d’utiliser SSL sur une application Web. Si les données échangées ne sont pas cryptées, une personne qui espionne sur le réseau peut extraire les informations confidentielles

Alibaba Cloud fournit également des certificats de SSL mais à mon avis, cela coûte assez cher. Cependant, avec des choses coûteuses viennent des garanties supplémentaires. Les certificats SSL fournis par Alibaba Cloud conviennent aux utilisateurs en entreprise.

Lors du déploiement de SuiteCRM, j’utilisais également le SSL gratuit de Let's Encrypt pour sécuriser l’application Web SuiteCRM. Pour générer les certificats de Certbot, une application cliente de Let's Encrypt CA, le domaine doit être dirigé vers le serveur.

Alibaba Cloud fournit les noms de domaine à un prix très raisonnable et avec une protection whois gratuite. Dans mon cas, mon client avait déjà acheté le nom de domaine ailleurs. J'ai créé un sous-domaine et pointé le domaine vers l'instance ECS. J'ai installé Certbot et pourrais facilement générer les certificats. N'oubliez jamais de configurer un travail cron pour renouveler les certificats automatiquement, car les certificats expirent tous les trois mois.

Configuration du publipostage

La configuration d'un serveur de messagerie par vous-même doit être évitée, de manière à créer un serveur Web de niveau entreprise. nécessite une expertise, du temps et le coût de maintenance devient très élevé. Une légère erreur de configuration entraîne l'email directement dans le dossier spam.

Le service de publipostage d'Alibaba Cloud offre un moyen moins coûteux d'envoyer des emails à partir de l'application via SMTP. C'est gratuit pour les 200 premiers emails chaque jour. Dans mon cas, 200 e-mails par jour suffisent, et les e-mails dépassant le quota gratuit sont également très bon marché. J'ai ajouté un nouveau sous-domaine de messagerie dans le publipostage. Lors de l'ajout du domaine, on m'a demandé de mettre à jour le DNS. J'ai suivi les instructions et la vérification par le DNS a pris un certain temps, car la propagation prend du temps. Une fois cela fait, j'ai ajouté l'adresse de l'expéditeur et le serveur SMTP était prêt à être utilisé avec l'application.

Installation basée sur le Web

Enfin, tout était prêt. L'application SuiteCRM est hébergée sur ECS et le serveur de base de données sur ApsaraDB pour RDS. Je pourrais facilement passer par l'installation Web pour installer le logiciel.

Voici la configuration que j'ai fournie pour le serveur de base de données lors de l'installation Web de SuiteCRM.

De la même manière, j'ai renseigné toutes les informations requises et les détails du serveur SMTP fournis.

Enfin, mon application a été déployée avec succès sur Alibaba Cloud. De plus, j'ai suggéré que le client utilise ApsaraDB pour Memcache pour stocker le cache de session de SuiteCRM et pour utiliser WAF pour sécuriser l'application contre les menaces entrantes. Cependant, le client ne voulait pas appliquer les suggestions car il augmenterait sa facture mensuelle. Cependant, le client était très heureux de voir les performances de l'application sur la plate-forme d'Alibaba Cloud.

J'écris fréquemment des blogs techniques sur la plate-forme Alibaba Cloud Tech Share. Allez au lien suivant pour trouver les tutoriels écrits par moi. J'écrirai également le guide détaillé des étapes à suivre et des commandes à exécuter, suivies par moi pour installer SuiteCRM sur Ubuntu 16.04 sur la plate-forme Alibaba Cloud Tech Share.




Source link