[LINUX] So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit

In diesem Artikel möchte ich Ihnen die Best Practices vorstellen, die ich beim Bereitstellen von Webanwendungen in der Cloud verwende.

** Dieser Blog ist eine Übersetzung aus der englischen Version. Sie können das Original von [hier] überprüfen (https://www.alibabacloud.com/blog/my-best-practices-for-deploying-a-web-application-in-alibaba-cloud_593826). Einige maschinelle Übersetzungen werden verwendet. Wir würden uns freuen, wenn Sie auf Übersetzungsfehler hinweisen könnten. ** ** **

Dieser Artikel ist Medium Blogging Platform Es wird aber auch veröffentlicht.

In diesem Artikel möchte ich die Best Practices vorstellen, die ich beim Bereitstellen von Webanwendungen in der Cloud verwende. Ich arbeite als Freiberufler, aber kürzlich hat mich einer meiner Kunden gebeten, Suite CRM für eine kleine Organisation einzurichten. Ich schreibe so oft Alibaba Cloud-Tutorials, dass ich Kunden empfohlen habe, dieselbe Cloud-Plattform zu verwenden. Für fast 100 Benutzer und mehr als 30 gleichzeitige Benutzer empfehle ich folgende Konfiguration:

1, PHP-2 vCPUs zur Installation von Nginx mit FPM, ECS-Instanz mit 4 GB RAM. 2. ApsaraDB für RDS, Core 1 GB, RAM 1 GB, Speicher 10 GB für RDS-Instanz für MySQL. 3, Direktwerbung zum Versenden von Post.

Die Schritte, die ich unternommen habe, sind sehr einfach und können in fast jeder PHP-basierten Anwendung verwendet werden.

Wenn Sie neu in Alibaba Cloud sind, [Melden Sie sich über diesen Link für Alibaba Cloud an](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) Bitte. Sie können kostenlos neue Benutzer-Credits im Wert von 300 US-Dollar erhalten, mit denen Sie verschiedene Alibaba Cloud-Produkte ausprobieren können.

Erstellen einer ECS-Instanz

Alibaba Cloud dokumentiert fast alle Informationen, die Sie für den Einstieg in die Cloud-Plattform benötigen. Informationen zu den ersten Schritten mit Alibaba Cloud finden Sie unter Erste Tutorials und Tech Share Blog. spm = a2c65.11461447.0.0.3a3757aazuE4B9) kann verwendet werden. Die einfachsten Schritte finden Sie in der Kurzanleitung (https://www.alibabacloud.com/help/en/doc-detail/25422.htm) für bewährte Methoden beim Erstellen einer ECS-Instanz. Ich werde erklären.

Melden Sie sich bei der Alibaba Cloud-Konsole an und rufen Sie die Benutzeroberfläche des Elastic Compute Service auf. Sie können eine Instanz einfach erstellen, indem Sie auf die Schaltfläche Instanz erstellen klicken. Die zu beachtenden Punkte sind wie folgt.

1, Region: Alibaba Cloud verfügt über Rechenzentren auf der ganzen Welt. Wählen Sie daher immer eine Region aus, die sich geografisch in der Nähe Ihrer Anwendungsbenutzer befindet. Wenn sich das Rechenzentrum in der Nähe des Benutzers befindet, wird die Website aufgrund der geringen Netzwerklatenz sehr schnell geladen. In meinem Fall hatte die Organisation ihren Sitz in Mumbai, daher habe ich mich für die Region Mumbai entschieden. 2. Abrechnungsmethode: Wenn Sie Ihre Instanz 24 Stunden am Tag und 365 Tage im Jahr betreiben möchten, sollten Sie immer die monatliche Abrechnung wählen, da der Preis weniger als die Hälfte des Preises für die Abrechnung nach dem Umtausch beträgt. Die monatlichen Abonnementkosten für eine ECS-Instanz mit zwei gemeinsam genutzten vCPUs und 4 GB RAM betragen beispielsweise 23 US-Dollar. Wenn Sie jedoch dieselbe Instanz mit Pay-As-You-Go verwenden, betragen die Kosten pro Stunde 0,103 US-Dollar. .. Die monatlichen Kosten betragen $ 0,103 * 24 \ * 30 = $ 74,16 USD.

3, Instanztyp: Wählen Sie den Instanztyp gemäß Ihren Anforderungen aus. Sie können die Ressourcen später bei Bedarf erhöhen. 4, Image: Sie finden die Anwendung, die Sie auf Ihrer ECS-Instanz installieren möchten, im Marketplace-Image. Wir empfehlen jedoch, sie immer selbst mit einem sauberen offiziellen Image zu installieren. Wenn Ihre Anwendung später auf einen Fehler stößt, wissen Sie, wo Sie suchen müssen. 5, Speicher: Die Systemfestplatte wird gelöscht, wenn die ECS-Instanz freigegeben wird. Verwenden Sie nach Möglichkeit Datenfestplatten, da die Festplatte erhalten bleibt, wenn die Instanz versehentlich gelöscht wird. Die Einstellungen, die ich verwendet habe, sind:

image.png

Sie können die standardmäßig erstellte VPC auswählen. Sie können 4092 Instanzen hinzufügen. Ich verwende für jede ECS-Instanz eine andere Sicherheitsgruppe, damit ich sie einzeln konfigurieren und sicherstellen kann, dass keine nicht verwendeten Ports geöffnet sind.

Eine weitere wichtige Sache ist die Verwendung der schlüsselbasierten Authentifizierung anstelle von Kennwörtern. Wenn Sie bereits ein Schlüsselpaar haben, fügen Sie den öffentlichen Schlüssel zur Alibaba Cloud hinzu. Wenn Sie noch keine haben, können Sie eine mit Alibaba Cloud erstellen. Bewahren Sie den Schlüssel an einem sehr sicheren Ort auf und stellen Sie sicher, dass der Schlüssel selbst mit einer Passphrase verschlüsselt ist.

image.png

Das ist alles, was Sie beim Erstellen einer ECS-Instanz beachten müssen.

ECS-Instanzeinstellungen

Nachdem Sie eine Instanz erstellt und sich am Terminal angemeldet haben, müssen Sie einige Punkte beachten, bevor Sie Ihre Website einrichten.

  1. Anstatt den Root-Account zum Ausführen des Befehls zu verwenden, setzen Sie den sudo-Benutzer auf die erste Verbindung und verwenden Sie immer den sudo-Benutzer, um den Befehl auszuführen. Sie können die schlüsselbasierte Authentifizierung auch für Sudo-Benutzer festlegen und die Root-Anmeldung vollständig deaktivieren.
  2. Aktualisieren Sie immer das Basis-Image. Führen Sie beispielsweise den folgenden Befehl unter Ubuntu Server aus. 3, Alibaba Basis-Image hat keine zusätzlichen Pakete, die nicht benötigt werden. Achten Sie auch darauf, keine Pakete zu installieren, die Sie nicht benötigen.
  3. Wenn während der Installation ein Fehler auftritt, können Sie die Instanz jederzeit zurücksetzen, indem Sie die Systemfestplatte wechseln. Die Instanz muss nicht gelöscht und neu erstellt werden.

Ich habe einen sudo-Benutzer erstellt und darin eine schlüsselbasierte Authentifizierung festgelegt. Ich habe das Basis-Image aktualisiert und ein unbemanntes System-Upgrade eingerichtet. Nach dem Tutorial zur Installation des Nginx-Webservers habe ich den Nginx-Webserver installiert und dann PHP-FPM zur Installation von PHP 7.2 verwendet. PHP 7.2 ist die neueste Version von PHP, die derzeit verfügbar ist. Durch die Verwendung der neuesten Software treten keine Fehler auf, die Verarbeitungsgeschwindigkeit wird schneller und ein stabiler Betrieb wird möglich. Schließlich habe ich das Suite CRM-Archiv von der offiziellen Website heruntergeladen und auf Nginx bereitgestellt.

Verwenden Sie zum Installieren der Anwendung Erste Schritte Tutorial oder [Tutorial des Tech Share-Autors](https: //www.alibabacloud). Bitte beziehen Sie sich auf com / blog? Spm = a2c65.11461447.0.0.3a3757aaPzSq8i).

Festlegen von Sicherheitsgruppenregeln

Es ist sehr wichtig, dass Sie keine nicht verwendeten Ports in Ihrer ECS-Instanz-Sicherheitsgruppe öffnen. Sehen Sie sich die Sicherheitsgruppenregeln an, die ich für meine SuiteCRM-Instanz verwendet habe.

image.png

Sie können sehen, dass mit allen ICMP-Paketen nur die Ports 22, 80, 443 zulässig sind. Port 22 wird für die SSH-Verbindung verwendet. Port 80 ist ein unsicherer HTTP-Port, der in meinem Fall zum HTTPS-Port 443 umgeleitet wird. ICMP-Pakete werden zum Pingen verwendet, um festzustellen, ob der Host aktiv ist. Es ist in Ordnung, das ICMP-Paket zu löschen, aber Sie können die Instanz nicht anpingen.

Erstellen einer RDS-Instanz

Die erste Frage, die Ihnen vor dem Erstellen einer RDS-Instanz in den Sinn kommt, ist, warum Sie sie benötigen. Sie können auch Open Source-Datenbankserver wie MySQL, MariaDB, PostgreSQL und MongoDB auf der ECS-Instanz selbst installieren.

Die Antwort auf diese Frage lautet, dass ApsaraDB für RDS-Instanzen auf Geschwindigkeit und Sicherheit optimiert ist. ist. Standardmäßig können erstellte Instanzen nur für Instanzen auf der Whitelist aufgerufen werden.

Werfen wir einen Blick auf die Punkte, die beim Erstellen einer ECS-Instanz zu beachten sind.

  1. Region: ECS-Instanz wird erstellt Wenn Sie eine Datenbankinstanz erstellen, müssen Sie dieselbe Region auswählen. Stellen Sie außerdem sicher, dass sie sich in derselben VPC befinden. Auf diese Weise können Sie die kostenlose Intranet-Datenübertragung zwischen Hosts im selben Netzwerk nutzen. Ein weiterer Vorteil ist, dass nur die privaten IP-Adressen von ECS-Instanzen in die Whitelist aufgenommen werden müssen. Dies verbessert die Sicherheit der Datenbank erheblich.
  2. Abrechnung: Auch hier sind die Kosten für Ihr monatliches Abonnement niedriger als bei der Pay-As-You-Go-Methode. Bitte wählen Sie nach Ihren Bedürfnissen. 3, Kapazität: Sie können mit einer Low-End-Konfiguration wie 1 Kern, 1 GB Instanz und 5 GB Speicher beginnen. Spätere Anforderungen können die Ressourcen erhöhen. 4, Konto: Erstellen Sie niemals ein Hauptkonto für eine MySQL 5.6-Instanz, es sei denn, Sie müssen. Erstellen Sie für jede Datenbank eine Datenbank und einen Datenbankbenutzer. Nachfolgend sind die RDS-Einstellungen aufgeführt, die ich mit Suite CRM verwendet habe.

image.png

Nachdem die MySQL RDS-Instanz aktiviert wurde, habe ich die ECS-Instanz auf der Registerkarte Instanzsicherheit auf die Whitelist gesetzt. Sobald ich die IP-Adresse auf die Whitelist gesetzt hatte, erhielt ich den Hostnamen und die Portnummer der RDS-Instanz, bei der es sich um den MySQL-Standardport "3306" handelte. Ich habe eine Datenbank mit dem Namen "suitecrm" und einen Datenbankbenutzer mit dem Namen "suitecrm" erstellt und ihnen Lese- und Schreibzugriff gewährt.

Verwendung von HTTPS

Mit der Entwicklung des Internets werden täglich viele Websites hinzugefügt. Seit die Let's Encrypt Certificate Authority SSL-Zertifikate kostenlos anbietet, besteht der Trend darin, SSL auf allen Websites zu verwenden. Es ist sehr wichtig, SSL in Ihrer Webanwendung zu verwenden, um die Sicherheit zu gewährleisten. Wenn die ausgetauschten Daten nicht verschlüsselt sind, können sie im Netzwerk abgehört und vertrauliche Informationen extrahiert werden.

Alibaba Cloud bietet auch [SSL-Zertifikate] an (https://www.alibabacloud.com/en/product/certificates), aber meiner Meinung nach ist es ziemlich teuer. Für teure Modelle gilt jedoch eine zusätzliche Garantie. Das von Alibaba Cloud bereitgestellte SSL-Zertifikat ist für Unternehmensbenutzer geeignet.

Mit der Einführung von SuiteCRM haben wir auch das kostenlose SSL von Let's Encrypt verwendet, um die Sicherheit von SuiteCRM-Webanwendungen zu gewährleisten. Damit Certbot, die Clientanwendung von Let's Encrypt CA, ein Zertifikat generieren kann, muss die Domäne an den Server geleitet werden.

Alibaba Cloud bietet einen Domainnamen mit kostenlosem Whois-Schutz zu einem sehr vernünftigen Preis. In meinem Fall hatte der Kunde bereits einen Domainnamen, der von einer anderen Stelle gekauft wurde. Ich habe eine Subdomain erstellt und diese Domain auf eine ECS-Instanz verwiesen. Ich habe Certbot installiert und konnte problemlos ein Zertifikat erstellen. Denken Sie daran, einen Cron-Job einzurichten, um Ihr Zertifikat automatisch zu erneuern, da das Zertifikat alle drei Monate abläuft.

Einstellungen für Direktwerbung

Das Erstellen eines Webservers für Unternehmen erfordert Fachwissen und Zeit und ist sehr teuer in der Wartung. Daher sollten Sie die Einrichtung eines eigenen Mailservers vermeiden. Eine kleine Fehlkonfiguration kann dazu führen, dass E-Mails direkt in den Spam-Ordner verschoben werden.

Alibaba Cloud Direktmailing-Dienst bietet eine kostengünstige Möglichkeit, E-Mails von Ihrer Anwendung über SMTP zu senden. Die ersten 200 Mails sind täglich kostenlos. In meinem Fall reichen 200 Mails pro Tag aus, und Mails, die den freien Rahmen überschreiten, sind auch sehr billig. Ich habe versucht, Direct Mail eine neue Mail-Subdomain hinzuzufügen. Als ich die Domain hinzufügte, wurde ich aufgefordert, das DNS zu aktualisieren. Ich habe versucht, wie angewiesen, aber es hat lange gedauert, den DNS zu überprüfen. Anschließend habe ich die Absenderadresse hinzugefügt, um den SMTP-Server für meine Anwendung verfügbar zu machen.

Webbasierte Installation

Endlich ist alles fertig. Auf CRM gehostete Suite CRM-Anwendung. Der Datenbankserver wird auf ApsaraDB für RDS gehostet. Es war einfach, eine webbasierte Installation durchzuführen, um die Software zu installieren.

Im Folgenden sind die Einstellungen aufgeführt, die dem Datenbankserver während der webbasierten SuiteCRM-Installation zur Verfügung gestellt wurden.

image.png

Ebenso habe ich alle erforderlichen Informationen eingegeben und die Details des SMTP-Servers angegeben.

image.png

Schließlich wurde meine Anwendung in der Alibaba Cloud bereitgestellt. Verwenden Sie außerdem ApsaraDB für Memcache, um den SuiteCRM-Sitzungscache zu speichern, und dann [WAF](https: // www. Ich schlug Kunden vor, alibabacloud.com/en/product/waf) zu verwenden, um ihre Anwendungen vor eindringenden Bedrohungen zu schützen. Der Kunde lehnte es jedoch aufgrund der erhöhten monatlichen Abrechnung ab, diese Vorschläge umzusetzen. Der Kunde war jedoch sehr erfreut über die Leistung der Anwendung auf der Alibaba-Cloud-Plattform.

Ich schreibe häufig technische Blogs auf der Alibaba Cloud Tech Share-Plattform. Besuchen Sie den folgenden Link für das von mir geschriebene Tutorial Bitte finden Sie es. Außerdem werde ich eine detaillierte Anleitung zu den Schritten und Befehlen schreiben, die ich zur Installation von Suite CRM unter Ubuntu 16.04 auf der Alibaba Cloud Tech Share-Plattform befolge.

Recommended Posts

So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
So stellen Sie eine Streamlit-Anwendung für GCP (GAE) bereit
So stellen Sie eine Go-Anwendung auf einer ECS-Instanz bereit
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
So registrieren Sie ein Paket in PyPI (Stand September 2017)
So stellen Sie den Django-Kompressor unter Windows bereit
So testen Sie auf einer von Django authentifizierten Seite
Bis die mit Flasche erstellte Webanwendung auf Heroku veröffentlicht (bereitgestellt) wird
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
So tarnen Sie eine ZIP-Datei als PNG-Datei
Schritte zum Entwickeln einer Webanwendung in Python
Wie man mit 2017 Windows ein anständiges Leben führt
Anfänger haben versucht, eine Cloud-native Webanwendung mit Datastore / GAE zu erstellen
So führen Sie eine Django-Anwendung auf einem Docker-Container aus (Entwicklungs- und Produktionsumgebung)
So installieren Sie Fast.ai auf einer Alibaba Cloud-GPU und führen es auf einem Jupyter-Notebook aus
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
So richten Sie ein VPN-Gateway ein, um eine Verbindung zwischen Alibaba Cloud und AWS herzustellen
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.
So erstellen Sie eine Django (Python) -Umgebung auf Docker
So zeigen Sie DataFrame als Tabelle in Markdown an
So installieren Sie Git unter Linux wie EC2
So führen Sie Django unter IIS auf einem Windows-Server aus
[Tipps] Verwendung des iPhone als Webkamera unter Linux
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Stellen Sie eine mit Streamlit erstellte Web-App für Heroku bereit
[Codemuster] Bereitstellen einer Beispielaustausch-App für OpenShift in der IBM Cloud mithilfe von Red Hat Universal Base Image (UBI)
Herstellen einer Verbindung zu Cloud SQL PostgreSQL auf der Google Cloud Platform aus einer lokalen Umgebung mit Java
Verwendung von GitHub auf einem Server für mehrere Personen ohne Kennwort
Ein Hinweis zur einfachen Vorbereitung einer Linux-Übungsumgebung
So führen Sie ein geschultes Transformatormodell lokal auf CloudTPU aus
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
ACME mit Alibaba Cloud verschlüsseln: Konzepte für SSL-Zertifikate
Wie erstelle ich ein Multiplayer-Online-Actionspiel mit Slack?
So drucken Sie Zeichen als Tabelle mit der Druckfunktion von Python
So stellen Sie Pybot, das einfachste Python-Lehrbuch, auf Heroku bereit
So mounten Sie ein Windows 10-Verzeichnis unter Ubuntu-Server 20.04 auf VMware Workstation 15.
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Verwendung von cuML SVC als Gridsearch-CV-Klassifikator
[Einführung in AWS] Memorandum zum Erstellen eines Webservers auf AWS
So verwenden Sie eine andere Datei als .fabricrc als Konfigurationsdatei
So importieren Sie NoteBook als Modul in Jupyter (IPython)
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
So stellen Sie Java-Apps unter VPS bereit (Apache / Tomcat-Installation / Verknüpfung)
Wie man ein Terminal hackt
Führen Sie den Ausgabecode auf dem lokalen Webserver in Python als "A, gibt vor, B zu sein" aus
Wie man Python 3.x und 2.x auf einem Mac koexistiert (ich habe auch opencv als Bonus hinzugefügt)
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Ein Hinweis zum Überprüfen der Verbindung zum Lizenzserver-Port
Erstellen Sie mit Python und Redis eine Rangliste für Spiele in der Alibaba-Cloud
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Wie einfach ist es, ein Medikament auf dem Markt zu synthetisieren?
So passen Sie U-Boot mit einer benutzerdefinierten Karte für OSD335X an (Hinweis)
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
So erstellen Sie eine .dylib-Bibliothek aus einer .a-Bibliothek mit OSX (El Capitan)