[LINUX] Comment déployer une application Web sur Alibaba Cloud en tant que pigiste

Tout au long de cet article, j'aimerais partager les meilleures pratiques que j'utilise lors du déploiement d'applications Web dans le cloud.

** Ce blog est une traduction de la version anglaise. Vous pouvez vérifier l'original depuis ici. Certaines traductions automatiques sont utilisées. Nous vous serions reconnaissants de bien vouloir signaler toute erreur de traduction. ** **

Cet article s'intitule Medium Blogging Platform Mais il est également publié.

Dans cet article, je souhaite partager les meilleures pratiques que j'utilise lors du déploiement d'applications Web dans le cloud. Je travaille en freelance, mais récemment un de mes clients m'a demandé de mettre en place Suite CRM pour une petite organisation. J'écris si souvent des tutoriels sur Alibaba Cloud que j'ai conseillé aux clients d'utiliser la même plate-forme cloud. Pour près de 100 utilisateurs et plus de 30 utilisateurs simultanés, la configuration que je recommande est:

1, vCPU PHP-2 pour installer Nginx avec FPM, instance ECS avec 4 Go de RAM. 2. ApsaraDB pour RDS, noyau 1 Go, RAM 1 Go, stockage 10 Go pour l'instance RDS pour MySQL. 3, publipostage pour l'envoi de courrier.

Les étapes que j'ai suivies sont très simples et peuvent être utilisées dans presque toutes les applications PHP.

Si vous êtes nouveau sur Alibaba Cloud, [Inscrivez-vous à Alibaba Cloud à partir de ce lien](https://account.alibabacloud.com/register/intl_register.htm?spm=a2c65.11461447.0.0.3a3757aaxK9yJs&biz_params=%7B%22intl % 22:% 22% 7B% 5C% 22referralCode% 5C% 22:% 5C% 22fmj2og% 5C% 22% 7D% 22% 7D) S'il vous plaît. Vous pouvez obtenir gratuitement de nouveaux crédits utilisateur d'une valeur de 300 USD, que vous pouvez utiliser pour essayer différents produits Alibaba Cloud.

Créer une instance ECS

Alibaba Cloud documente presque toutes les informations dont vous avez besoin pour démarrer avec la plate-forme cloud. Pour plus d'informations sur la façon de démarrer avec Alibaba Cloud, consultez Didacticiels de mise en route et [Tech Share Blog](https://www.alibabacloud.com/blog? spm = a2c65.11461447.0.0.3a3757aazuE4B9) peut être utilisé. Les étapes les plus simples se trouvent dans le Guide de démarrage rapide (https://www.alibabacloud.com/help/en/doc-detail/25422.htm) pour les meilleures pratiques à utiliser lors de la création d'une instance ECS. Je vais expliquer.

Connectez-vous à la console Alibaba Cloud et accédez à l'interface Elastic Compute Service. Vous pouvez facilement créer une instance en cliquant sur le bouton Créer une instance. Les points à noter sont les suivants.

1, région: Alibaba Cloud possède des centres de données partout dans le monde, alors choisissez toujours une région géographiquement proche des utilisateurs de vos applications. Lorsque le centre de données est proche de l'utilisateur, le site Web se charge très rapidement en raison de la faible latence du réseau. Dans mon cas, l'organisation était basée à Mumbai, j'ai donc choisi la région de Mumbai. 2. Méthode de facturation: si vous souhaitez faire fonctionner votre instance 24 heures sur 24, 365 jours par an, vous devez toujours choisir la facturation mensuelle, car le prix sera inférieur à la moitié de celui de la facturation à l'utilisation. Par exemple, un abonnement mensuel pour une instance ECS avec deux processeurs virtuels et 4 Go de RAM partagés est de 23 USD, mais l'utilisation de la même instance avec Pay-As-You-Go coûte 0,103 USD par heure. .. Le coût mensuel sera de 0,103 USD * 24 \ * 30 = 74,16 USD.

3, type d'instance: sélectionnez le type d'instance en fonction de vos besoins. Vous pouvez augmenter les ressources plus tard si nécessaire. 4, Image: Vous pouvez trouver l'application que vous souhaitez installer sur votre instance ECS dans l'image Marketplace, mais nous vous recommandons de toujours l'installer vous-même avec une image officielle propre. Plus tard, si votre application rencontre une erreur, vous saurez où chercher. 5, stockage: le disque système sera supprimé lorsque l'instance ECS sera libérée. Utilisez des disques de données chaque fois que possible, car le disque sera conservé si l'instance est supprimée accidentellement. Les paramètres que j'ai utilisés sont:

image.png

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

Une autre chose importante est d'utiliser l'authentification par clé au lieu d'utiliser des mots de passe. Si vous avez déjà une paire de clés, ajoutez la clé publique à Alibaba Cloud. Si vous n'en avez pas, vous pouvez en créer un à l'aide d'Alibaba Cloud. Conservez la clé dans un endroit très sécurisé et assurez-vous que la clé elle-même est cryptée avec une phrase de passe.

image.png

C'est tout pour les points à noter lors de la création d'une instance ECS.

Paramètres d'instance ECS

Après avoir créé une instance et vous être connecté au terminal, il y a quelques éléments à prendre en compte avant de configurer votre site Web.

  1. Au lieu d'utiliser le compte root pour exécuter la commande, définissez l'utilisateur sudo sur la première connexion et utilisez toujours l'utilisateur sudo pour exécuter la commande. Vous pouvez également configurer l'authentification par clé pour les utilisateurs sudo et désactiver complètement la connexion root.
  2. Mettez toujours à jour l'image de base. Par exemple, exécutez la commande suivante sur Ubuntu Server. 3, l'image de base d'Alibaba n'a pas de packages supplémentaires qui ne sont pas nécessaires. Veillez également à ne pas installer de packages dont vous n'avez pas besoin.
  3. Si quelque chose ne va pas pendant l'installation, vous pouvez toujours réinitialiser l'instance en changeant le disque système. Il n'est pas nécessaire de supprimer et de recréer l'instance.

J'ai créé un utilisateur sudo et y ai défini une authentification basée sur une clé. J'ai mis à jour l'image de base et mis en place une mise à niveau du système sans pilote. Suite au tutoriel d'installation du serveur Web Nginx, j'ai installé le serveur Web Nginx, puis j'ai utilisé PHP-FPM pour installer PHP 7.2. PHP 7.2 est la dernière version de PHP actuellement disponible. En utilisant le dernier logiciel, il n'y a pas de bogues, la vitesse de traitement devient plus rapide et un fonctionnement stable devient possible. Enfin, j'ai téléchargé l'archive Suite CRM à partir du site officiel et l'ai déployée sur Nginx.

Pour installer l'application, veuillez utiliser Tutoriel de mise en route ou [Tutoriel de l'auteur Tech Share](https: //www.alibabacloud. Veuillez vous référer à com / blog? Spm = a2c65.11461447.0.0.3a3757aaPzSq8i).

Définition des règles du groupe de sécurité

Il est très important pour les groupes de sécurité d'instance ECS de ne pas ouvrir les ports inutilisés. Jetez un œil aux règles de groupe de sécurité que j'ai utilisées pour mon instance SuiteCRM.

image.png

Vous pouvez voir que seuls les ports 22, 80, 443 sont autorisés avec tous les paquets ICMP. Le port 22 est utilisé pour la connexion SSH. Le port 80 est un port HTTP non sécurisé, dans mon cas redirigeant vers le port HTTPS 443. Les paquets ICMP sont utilisés pour envoyer un ping pour voir si l'hôte est actif. Vous pouvez supprimer le paquet ICMP, mais vous ne pourrez pas envoyer de requête ping à l'instance.

Créer une instance RDS

La première question qui vient à l'esprit avant de créer une instance RDS est de savoir pourquoi vous en avez besoin. Vous pouvez également installer des serveurs de base de données open source tels que MySQL, MariaDB, PostgreSQL et MongoDB sur l'instance ECS elle-même.

La réponse à cette question est que ApsaraDB pour les instances RDS est optimisé pour la vitesse et la sécurité. est. Par défaut, les instances créées ne sont accessibles qu'aux instances en liste blanche.

Jetons un coup d'œil aux points à noter lors de la création d'une instance ECS.

  1. Région: l'instance ECS sera créée Lors de la création d'une instance de base de données, veillez à sélectionner la même région. Assurez-vous également qu'ils se trouvent dans le même VPC. Cela vous permet de profiter du transfert gratuit de données intranet entre les hôtes du même réseau. Un autre avantage est que seules les adresses IP privées des instances ECS doivent être ajoutées à la liste blanche. Cela améliore considérablement la sécurité de la base de données.
  2. Facturation: Encore une fois, le coût de votre abonnement mensuel est inférieur à celui de la méthode Pay-As-You-Go. Veuillez choisir en fonction de vos besoins. 3, capacité: vous pouvez commencer avec une configuration bas de gamme telle qu'un cœur, une instance de 1 Go et un stockage de 5 Go. Les exigences ultérieures peuvent augmenter les ressources. 4, compte: ne créez jamais de compte principal pour une instance MySQL 5.6 sauf si vous en avez besoin. Créez une base de données et un utilisateur de base de données pour chaque base de données. Vous trouverez ci-dessous les paramètres RDS que j'ai utilisés avec Suite CRM.

image.png

Une fois l'instance MySQL RDS activée, j'ai ajouté l'instance ECS à la liste blanche à partir de l'onglet Sécurité de l'instance. Dès que j'ai ajouté l'adresse IP à la liste blanche, j'ai obtenu le nom d'hôte et le numéro de port de l'instance RDS, 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 leur ai donné un accès en lecture et en écriture.

Utilisation de HTTPS

Avec le développement d'Internet, de nombreux sites Web sont ajoutés chaque jour. Depuis que l'Autorité de certification Let's Encrypt a commencé à offrir des certificats SSL gratuitement, la tendance a été d'utiliser SSL sur tous les sites Web. Il est très important d'utiliser SSL dans votre application Web pour assurer la sécurité. Si les données échangées ne sont pas cryptées, elles peuvent être écoutées sur le réseau et des informations sensibles peuvent être extraites.

Alibaba Cloud propose également des Certificats SSL, mais à mon avis, c'est assez cher. Cependant, les plus chers sont accompagnés d'une garantie supplémentaire. Le certificat SSL fourni par Alibaba Cloud convient aux utilisateurs en entreprise.

Avec l'introduction de SuiteCRM, nous avons également utilisé le SSL gratuit de Let's Encrypt pour assurer la sécurité des applications Web de SuiteCRM. Pour que Certbot, l'application cliente de Let's Encrypt CA, génère un certificat, le domaine doit être dirigé vers le serveur.

Alibaba Cloud propose un nom de domaine avec une protection whois gratuite à un prix très raisonnable. Dans mon cas, le client avait déjà un nom de domaine acheté ailleurs. J'ai créé un sous-domaine et indiqué ce domaine vers une instance ECS. J'ai installé Certbot et j'ai pu facilement générer un certificat. N'oubliez pas de configurer une tâche cron pour renouveler automatiquement votre certificat, car le certificat expire tous les trois mois.

Paramètres de publipostage

La création d'un serveur Web de niveau entreprise nécessite de l'expertise et du temps, et sa maintenance est très coûteuse. Vous devez donc éviter de configurer votre propre serveur de messagerie. Une petite erreur de configuration peut amener le courrier à aller directement dans le dossier spam.

Alibaba Cloud Service de courrier direct offre un moyen peu coûteux d'envoyer des e-mails à partir de votre application en utilisant SMTP. Les 200 premiers mails sont gratuits tous les jours. Dans mon cas, 200 mails par jour suffisent, et les mails qui dépassent le cadre libre sont également très bon marché. J'ai essayé d'ajouter un nouveau sous-domaine de messagerie à Direct Mail. Lorsque j'ai ajouté le domaine, on m'a demandé de mettre à jour le DNS. J'ai essayé comme indiqué, mais cela a pris du temps pour vérifier le DNS. Une fois terminé, j'ai ajouté l'adresse de l'expéditeur pour rendre le serveur SMTP disponible pour mon application.

Installation basée sur le Web

Enfin, tout est prêt. Application Suite CRM hébergée sur ECS. Le serveur de base de données est hébergé sur ApsaraDB pour RDS. Il était facile de faire une installation Web pour installer le logiciel.

Voici les paramètres fournis au serveur de base de données lors de l'installation Web de SuiteCRM.

image.png

De même, j'ai rempli toutes les informations requises et fourni les détails du serveur SMTP.

image.png

Finalement, mon application a été déployée sur Alibaba Cloud. De plus, utilisez ApsaraDB for Memcache pour enregistrer le cache de session SuiteCRM et [WAF](https: // www. J'ai suggéré aux clients d'utiliser alibabacloud.com/en/product/waf) pour protéger leurs applications contre les menaces envahissantes. Cependant, le client a refusé de mettre en œuvre ces propositions en raison de l'augmentation de la facturation mensuelle. Cependant, le client était très heureux de voir les performances de l'application sur la plate-forme cloud Alibaba.

J'écris fréquemment des blogs techniques sur la plateforme Alibaba Cloud Tech Share. Veuillez visiter le [lien] suivant (https://www.google.co.in/search?spm=a2c65.11461447.0.0.3a3757aat1Kh6f&q=site:alibabacloud.com/blog%20Liptan) pour lire le tutoriel que j'ai écrit. Veuillez le trouver. En outre, j'écrirai un guide détaillé des étapes et des commandes que je suis pour installer Suite CRM sur Ubuntu 16.04 sur la plate-forme Alibaba Cloud Tech Share.

Recommended Posts

Comment déployer une application Web sur Alibaba Cloud en tant que pigiste
Comment déployer une application Django dans le cloud Alibaba
Comment déployer une application Streamlit sur GCP (GAE)
Comment déployer une application Go sur une instance ECS
Comment déployer une application Web créée avec Flask sur Heroku
Comment enregistrer un package dans PyPI (à partir de septembre 2017)
Comment déployer django-compresseur sous Windows
Comment tester sur une page authentifiée par Django
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
Comment créer une application à partir du cloud à l'aide du framework Web Django
Comment déguiser un fichier ZIP en fichier PNG
Étapes pour développer une application Web en Python
Comment vivre une vie décente avec Windows 2017
Les débutants ont essayé de créer une application Web native pour le cloud à l'aide de Datastore / GAE
Comment exécuter une application Django sur un conteneur Docker (environnement de développement et de production)
Comment installer Fast.ai sur le GPU Alibaba Cloud et l'exécuter sur un ordinateur portable Jupyter
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
(Python) Essayez de développer une application Web en utilisant Django
Comment configurer une passerelle VPN pour établir une connexion entre Alibaba Cloud et AWS
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Déployer l'application Django sur Google App Engine (Python3)
Comment créer un environnement Django (python) sur Docker
Comment afficher DataFrame sous forme de tableau dans Markdown
Comment installer git sur Linux tel que EC2
Comment exécuter Django sur IIS sur un serveur Windows
[Astuces] Comment utiliser l'iPhone comme caméra Web sous Linux
Comment créer un environnement Python sur Amazon Linux 2
Déployer une application Web créée avec Streamlit sur Heroku
[Modèle de code] Comment déployer un exemple d'application d'échange sur OpenShift sur IBM Cloud à l'aide de Red Hat Universal Base Image (UBI)
Comment se connecter à Cloud SQL PostgreSQL sur Google Cloud Platform à partir d'un environnement local avec Java
Comment utiliser GitHub sur un serveur multi-personnes sans mot de passe
Une note sur la façon de préparer facilement un environnement de pratique Linux
Comment exécuter un modèle de transformateur entraîné localement sur CloudTPU
Comment créer un nouvel environnement virtuel Python sur Ubuntu
Comment convertir un tableau en dictionnaire avec Python [Application]
Crypter ACME avec Alibaba Cloud: concepts liés aux certificats SSL
Comment créer un jeu d'action multijoueur en ligne avec Slack
Comment imprimer des caractères sous forme de tableau avec la fonction d'impression de Python
Comment déployer Pybot, le manuel Python le plus simple, sur Heroku
Comment monter un répertoire Windows 10 sur Ubuntu-Server 20.04 sur VMware Workstation 15.
(Échec) Déployer une application Web créée avec Flask avec heroku
Remarques sur la façon de charger un environnement virtuel avec PyCharm
Comment utiliser cuML SVC comme classificateur CV Gridsearch
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Comment utiliser un fichier autre que .fabricrc comme fichier de configuration
Comment importer NoteBook en tant que module dans Jupyter (IPython)
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Pour déployer des applications Java sur VPS (installation / liaison Apache / Tomcat)
Comment pirater un terminal
Exécutez le code de sortie sur le serveur Web local en tant que "A, faisant semblant d'être B" en python
Comment faire coexister Python 3.x et 2.x sur Mac (j'ai également inclus opencv en bonus)
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Remarque sur la façon de vérifier la connexion au port du serveur de licences
Créez un classement de jeu sur le cloud Alibaba en utilisant Python et Redis
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Est-il facile de synthétiser un médicament sur le marché?
Comment personnaliser U-Boot avec une carte personnalisée pour OSD335X (Remarque)
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Comment créer une bibliothèque .dylib à partir d'une bibliothèque .a avec OSX (El Capitan)