Stellen Sie die Anwendung mit VPC + EC2 + Docker bereit.

Einführung

Basierend auf dem AWS Hands-on-Material vom 08.08.2019 habe ich die Nuxt-App manchmal mit AWS bereitgestellt, daher werde ich sie als Memorandum zusammenfassen. Da ich AWS dieses Mal zum ersten Mal berührt habe, kann es zu Fehlern kommen, aber ich würde mich über Ihren Rat zu diesem Zeitpunkt freuen. Darüber hinaus möchten wir diesmal die Nuxt-App als Beispiel in der AWS-Umgebung bereitstellen.

Zielgruppe

Gesamtstruktur

Es ist so.

Qiita AWS構成図-1.png

Es mag schwierig erscheinen, aber es ist sehr leicht zu verstehen, wenn Sie sich jedes einzelne ansehen. Schauen wir es uns also nach und nach an.

VPC

Was ist VPC?

** VPC ** ist eine Abkürzung für ** Amazon Web Service Virtual Private Cloud **, ein Dienst, der eine private virtuelle Cloud-Umgebung bereitstellt. Darüber hinaus werden ein virtueller Server ** EC2 ** (später erläutert) und eine Datenbank eingerichtet und verwendet.

Erstellen einer VPC

Wählen Sie zunächst "** VPC " unter " Nach Diensten suchen " im oberen AWS-Bildschirm aus. スクリーンショット 2020-11-08 22.32.33.png Klicken Sie auf " VPC-Assistent starten **". スクリーンショット 2020-11-08 22.34.03.png ** * Was ist der VPC-Assistent ** Der ** VPC-Assistent ** ist eine Funktion, die das Erstellen von ** VPC ** - und ** NAT-Instanzen ** erleichtert. ** VPC ** ist unterteilt in ** öffentliches Subnetz **, auf das über das Internet zugegriffen werden kann, und ** privates Subnetz **, auf das nicht direkt über das Internet zugegriffen werden kann. Eine ** NAT-Instanz ** kann einfach eine Nuance sein, die ein privates Subnetz und ein öffentliches Subnetz verbindet. Ich kenne die Details auch nicht. Bitte lesen Sie Offiziell für Details.

Drücken Sie "** Select **". スクリーンショット 2020-11-08 22.49.21.png

Füllen Sie Folgendes aus und drücken Sie "** VPC erstellen **". スクリーンショット 2020-11-08 22.50.40.png ** * Was ist die Verfügbarkeitszone (AZ) ** ** AZ ** ist eine Gruppe von Einrichtungen (Rechenzentren), die physische Server in der ausgewählten Region verwalten. Durch die Verwendung mehrerer ** AZ ** mit ** ELB ** (diesmal nicht erläutert) ist es möglich, weiterhin Dienste bereitzustellen, selbst wenn der Server im Falle eines Ausfalls ausfällt. Kann sein

Drücke OK " スクリーンショット 2020-11-08 22.50.53.png Wenn Folgendes angezeigt wird, ist die Erstellung erfolgreich. スクリーンショット 2020-11-10 13.12.07.png Werfen wir einen Blick auf das Subnetz. Wählen Sie " Subzone " aus dem Menü auf der linken Seite. Überprüfen Sie das zuvor erstellte Subnetz (diesmal "Qiita-Public Subway-1a"). Überprüfen Sie, ob die Verfügbarkeitszone "ap-northeast-1a (apne1-az4)" und IPv4 "10.0.0.0/24" ist. スクリーンショット 2020-11-10 13.17.41.png Drücken Sie " Routentabelle **". Stellen Sie sicher, dass die Standardroute (0.0.0.0/0) auf das ** Internet-Gateway (igw-xxx ...) ** verweist. スクリーンショット 2020-11-10 13.33.48.png ** * Was ist Internet Gateway (IGW) ** Eine Funktion, mit der ** in ** VPC ** erstellte Subnetze ** eine Verbindung zur Außenwelt herstellen können (Verbindung zur globalen IP herstellen).

Routentabelleneinstellungen

[Dieser Artikel](https://qiita.com/chro96/items/21863e0960ba4ac72470#:~:text=%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3 % 83% 88% E5% 86% 85% E3% 81% AB% E3% 81% 82% E3% 82% 8B% E3% 82% A4% E3% 83% B3% E3% 82% B9% E3% 82 % BF% E3% 83% B3% E3% 82% B9,% E9% 80% 81% E3% 82% 89% E3% 81% AA% E3% 81% 84% E3% 81% AE% E3% 81% A7% E3% 80% 81% E9% 80% 9A% E4% BF% A1% E3% 81% A7% E3% 81% 8D% E3% 81% BE% E3% 81% 9B% E3% 82% 93% Nach E3% 80% 82) Was ist ** Routentabelle **?

Es definiert die Regeln, nach denen die Instanzen im Subnetz zur Kommunikation gehen. Mit anderen Worten, die Routentabelle ist eine Tabelle, die beschreibt, wohin die Kommunikation gesendet werden soll, indem das Ziel (IP-Adresse) des Pakets betrachtet wird. Da wir Pakete anhand dieser Tabelle übertragen, senden Ziele, die nicht in der Tabelle aufgeführt sind, keine Pakete und können nicht kommunizieren. Der Punkt ist, dass es definiert, wo die Kommunikation für jedes Subnetz durchgeführt werden kann.

... anscheinend ...

Dieses Mal habe ich die Routentabelle noch nicht festgelegt, daher werde ich sie festlegen.

Wählen Sie "** Routentabelle " aus dem Menü " VPC ". Wählen Sie die ** Routentabelle ** mit der diesmal zu verwendenden ** VPC-ID ** aus und drücken Sie " Route bearbeiten " in " Route **". スクリーンショット 2020-11-10 15.52.25.png

Klicken Sie auf "** Route hinzufügen ". Wählen Sie danach " Ziel " als "0.0.0.0/0" und " Ziel " als " Internet GateWay ** → ** igw-xxx ..... ". .. Drücken Sie danach " Route speichern **". スクリーンショット 2020-11-10 16.07.30.png

Klicken Sie unter "** U-Boot-Zuordnung " auf " Subnetzzuordnung bearbeiten **". スクリーンショット 2020-11-10 16.12.53.png

Wählen Sie das ** Subnetz ** aus, das dieses Mal verwendet werden soll, und drücken Sie "** Speichern **".

スクリーンショット 2020-11-10 16.13.05.png

Ergebnis der VPC-Erstellung

Bisher konnten wir wie folgt gestalten. Qiita AWS構成図-1.png

EC2

Was ist EC2?

** EC2 ** ist eine Abkürzung für ** Amazon Elastic Compute Cloud **, einen Dienst, der einen virtuellen Server erstellt. Da Sie das Betriebssystem und die Spezifikationen nach eigenem Ermessen frei bestimmen können, können Sie redundante Dienste realisieren.

EC2 erstellen

Wählen Sie zunächst "** EC2 " unter " Dienst auswählen **" im oberen AWS-Bildschirm aus. スクリーンショット 2020-11-10 15.01.49.png

Drücken Sie "** Instanz starten **". スクリーンショット 2020-11-10 15.03.42.png

Drücken Sie diesmal "** Select " von " Amazon Linux 2 AMI .... **". スクリーンショット 2020-11-10 15.04.48.png

Drücken Sie diesmal nach Auswahl von "** t2.micro " auf " Nächster Schritt: Festlegen der Instanzdetails **". スクリーンショット 2020-11-10 15.06.28.png

Wählen Sie das zuvor erstellte ** VPC , ** Subnetz ** aus und ändern Sie " Öffentliche IP ** automatisch zuweisen " in " Aktiviert ". Klicken Sie danach auf " Nächster Schritt: Speicher hinzufügen **". スクリーンショット 2020-11-10 15.17.32.png

Drücken Sie einfach "** Nächster Schritt: Tag hinzufügen **". スクリーンショット 2020-11-10 15.20.23.png

Drücken Sie einfach "** Nächster Schritt: Sicherheitsgruppeneinstellungen **". スクリーンショット 2020-11-10 15.21.31.png

Wählen Sie nach dem Drücken von "** Regel hinzufügen " " Benutzerdefiniertes TCP ", " 3000 " und " 0.0.0.0/0 ". Drücken Sie danach " Bestätigung und Erstellung **". スクリーンショット 2020-11-10 15.23.09.png

Drücken Sie einfach "** Start **". スクリーンショット 2020-11-10 15.26.02.png

Wählen Sie "** Neues Schlüsselpaar erstellen ", geben Sie " Schlüsselpaarname " ein (diesmal " Qiita-Beispiel ") und drücken Sie " Schlüsselpaar herunterladen ". Und speichern Sie das Schlüsselpaar, wo immer Sie möchten. Drücken Sie danach " Instanz erstellen **". スクリーンショット 2020-11-10 15.26.32.png Bewahren Sie das ** Schlüsselpaar ** an einem Ihnen bekannten Ort auf, da Sie es später verwenden werden.

Klicken Sie auf "** Instanzanzeige **". スクリーンショット 2020-11-10 15.33.14.png

Wenn es so angezeigt wird, ist die Erstellung abgeschlossen. Sie können den Namen ändern, indem Sie auf den roten Rahmenteil des Bildes drücken. Ändern Sie ihn also vorerst. スクリーンショット 2020-11-10 15.35.14.png

Ergebnis der EC2-Erstellung

Bisher konnten wir wie folgt gestalten. Qiita AWS構成図-1.png

Bereitstellen

Schließlich werden wir die Nuxt-App bereitstellen. [Dieser Artikel](https://qiita.com/TakumaKurosawa/items/e67315583009257cd1ea#ec2%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3 % E3% 82% B9% E3% 81% ABssh% E6% 8E% A5% E7% B6% 9A% E3% 81% 97% E3% 82% 88% E3% 81% 86) war sehr leicht zu verstehen. Ich werde darauf aufbauen.

SSH-Verbindung

Wählen Sie "** Instanz " aus dem Menü " EC2 ". Wählen Sie Ihre ** Instanz ** aus der Liste der ** Instanzen ** aus. Kopieren Sie den Wert von " Public IPv4 Address **" aus dem Menü unten. スクリーンショット 2020-11-10 16.20.39.png

Starten Sie das Terminal und geben Sie den folgenden Befehl ein

#Aws heruntergeladen-tutorial.Wechseln Sie in das Verzeichnis, in dem sich das PEM befindet
$ cd ~/Wo Sie den Paarschlüssel gespeichert haben

#PEM-Datei~/.Gehe zu ssh
$ mv Qiita-example.pem ~/.ssh

#Gewähren Sie Zugriff auf die PEM-Datei
$ chmod 400 ~/.ssh/Qiita-example.pem

#SSH-Verbindung
$ ssh -i "~/.ssh/Qiita-example.pem" ec2-user@[IP-Adresse (Einfügen) früher kopiert]
Are you sure you want to continue connecting (yes/no)?Geben Sie ja ein

Bei Erfolg wird der folgende Bildschirm angezeigt.


       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
8 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-****** ~]$

Damit ist die SSH-Verbindung abgeschlossen. Nachdem Sie Befehle in Ihrer Linux-Instanz ausführen können, installieren Sie die erforderlichen Pakete.

#yum aktualisieren
$ sudo yum update -y

#Installieren Sie Git
$ sudo yum install git -y

#Installieren Sie Docker
$ sudo yum install -y docker

#Starten Sie Docker
$ sudo service docker start
$ sudo systemctl enable docker.service
$ sudo service docker status

#OK, wenn Sie das folgende Ausgabeergebnis erhalten
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running)seit Tag 2019-12-22 03:26:02 UTC; 10s ago
     Docs: https://docs.docker.com
 Main PID: 12952 (dockerd)
   CGroup: /system.slice/docker.service
           └─12952 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd....

#Docker-Befehl aktivieren
$ sudo usermod -a -G docker ec2-user

#Einmal beenden
$ exit

#SSH-Verbindung wieder
#Wechseln Sie zum Superuser
$ sudo -i

#Laden Sie die erforderlichen Dateien herunter
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#Gib Autorität
chmod +x /usr/local/bin/docker-compose

#Kehren Sie zum normalen Benutzer zurück
exit

Nachdem sowohl Git als auch Docker funktionieren, wählen Sie das Projekt, das Sie bereitstellen möchten, aus Ihrem Repository aus. Dieses Mal gehen wir davon aus, dass Sie die Nuxt-App geklont haben.

Verbinden Sie ssh erneut und

git clone [URL Ihres Git-Repositorys]

cd [Projekte, die geklont wurden]

docker-compose up

Die Bereitstellung ist jetzt erfolgreich.

http://[Öffentliche VPC-IPv4-Adresse]:3000

Wenn Sie darauf zugreifen, wird der Bildschirm Ihrer App angezeigt. https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_317034_057c6c11-24a7-42e6-ae7c-ca6490478ff9.png

Danke für deine harte Arbeit.

Referenzmaterial

Recommended Posts

Stellen Sie die Anwendung mit VPC + EC2 + Docker bereit.
Java: Starten Sie WAS mit Docker und stellen Sie Ihre eigene Anwendung bereit
Stellen Sie die Anwendung auf WildFly bereit
Mit Docker erstellte Webanwendung (1)
Stellen Sie die SpringBoot-Anwendung in AWS EC2 bereit
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Heroku: Docker: Bereitstellen
Stellen Sie Line Bot mit Rails5 + Docker + Heroku Note bereit
Bereitstellen von Laravel mit Docker auf EC2 unter AWS ① (EC2-Instanz erstellen)
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Zeigen Sie die ROS-Anwendung auf Docker mit der GUI auf der Hostseite an
Starten Sie MariaDB mit Docker
Explodiere Docker mit WSL2
Verwenden Sie Puphpeteer mit Docker
Bedienen Sie Emby mit Docker
Stellen Sie RAILS auf EC2 bereit
Führen Sie Payara mit Docker aus
Einweg-PHP mit Docker
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Elastic IP Acquisition-Linking).
Anleitung: Stellen Sie Ihre Anwendung mit dem Alibaba Cloud Toolkit-Plugin bereit
Registrieren Sie Ihr eigenes Docker-Image in ECR mithilfe der AWS CLI
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Git Clone-Deployment, Migration).
Die Zeit ist falsch mit der Anwendung, die auf dem Docker-Container gestartet wurde