Déployez l'application avec VPC + EC2 + Docker.

introduction

Sur la base du matériel AWS Hands-on tenu le 08/08/2019, j'ai parfois déployé l'application Nuxt à l'aide d'AWS, je vais donc la résumer sous forme de mémorandum. Depuis que j'ai touché AWS pour la première fois cette fois, il peut y avoir des erreurs, mais j'apprécierais vos conseils à ce moment-là. De plus, cette fois, nous visons à déployer l'application Nuxt dans l'environnement AWS à titre d'exemple.

Public cible

Structure générale

C'est comme ça.

Qiita AWS構成図-1.png

Cela peut sembler difficile, mais c'est très facile à comprendre si vous regardez chacun d'eux, alors jetons un coup d'œil petit à petit.

VPC

Qu'est-ce que VPC

** VPC ** est une abréviation de ** Amazon Web Service Virtual Private Cloud **, qui est un service qui fournit un environnement de cloud virtuel privé. En plus de cela, un serveur virtuel ** EC2 ** (expliqué plus loin) et une base de données sont configurés et utilisés.

Créer un VPC

Tout d'abord, sélectionnez "** VPC " dans " Rechercher des services " sur l'écran supérieur d'AWS. スクリーンショット 2020-11-08 22.32.33.png Cliquez sur " Démarrer l'assistant VPC **". スクリーンショット 2020-11-08 22.34.03.png ** * Qu'est-ce que l'assistant VPC ** ** L'assistant VPC ** est une fonctionnalité qui facilite la création de ** instances VPC ** et ** NAT **. ** VPC ** est divisé en ** sous-réseau public **, accessible depuis Internet, et en ** sous-réseau privé **, qui n'est pas directement accessible depuis Internet. Une ** instance NAT ** peut être simplement une nuance qui relie un sous-réseau privé et un sous-réseau public. Je ne connais pas non plus les détails. Pour plus d'informations, veuillez lire Officiel.

Appuyez sur "** Sélectionner **". スクリーンショット 2020-11-08 22.49.21.png

Remplissez ce qui suit et appuyez sur "** Créer un VPC **". スクリーンショット 2020-11-08 22.50.40.png ** * Qu'est-ce que la zone de disponibilité (AZ) ** ** AZ ** est un groupe d'installations (centres de données) qui gèrent des serveurs physiques dans la région sélectionnée. En utilisant plusieurs ** AZ ** avec ** ELB ** (non expliqué cette fois), il est possible de continuer à fournir des services même si le serveur tombe en panne en cas de panne. Peut être

Appuyer sur OK " スクリーンショット 2020-11-08 22.50.53.png Si ce qui suit s'affiche, la création est réussie. スクリーンショット 2020-11-10 13.12.07.png Jetons un coup d'œil au sous-réseau. Sélectionnez « Sous-zone » dans le menu de gauche. Vérifiez le sous-réseau que vous avez créé précédemment (cette fois, "Qiita-Public Subway-1a"). Vérifiez si la zone de disponibilité est "ap-nord-est-1a (apne1-az4)" et IPv4 est "10.0.0.0/24". スクリーンショット 2020-11-10 13.17.41.png Appuyez sur " Tableau d'itinéraire **". Assurez-vous que la route par défaut (0.0.0.0/0) pointe vers ** Internet Gateway (igw-xxx ...) **. スクリーンショット 2020-11-10 13.33.48.png ** * Qu'est-ce que Internet Gateway (IGW) ** Une fonction qui permet aux ** sous-réseaux ** créés dans ** VPC ** de se connecter au monde extérieur (se connecter à l'adresse IP globale).

Paramètres de la table de routage

[Cet article](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% Selon E3% 80% 82) Qu'est-ce que la ** table de routage **?

Il définit les règles de communication des instances du sous-réseau. En d'autres termes, la table de routage est une table qui décrit où envoyer la communication en regardant la destination (adresse IP) du paquet. Puisque nous transportons des paquets en regardant ce tableau, les destinations non répertoriées dans le tableau n'envoient pas de paquets et ne peuvent pas communiquer. Le fait est qu'il définit où la communication peut être effectuée pour chaque sous-réseau.

... Apparemment ...

Cette fois, je n'ai pas encore défini la table de routage, je vais donc la définir.

Sélectionnez "** Table de routage " dans le menu " VPC ". Sélectionnez la ** table de routage ** avec le ** VPC ID ** à utiliser cette fois et appuyez sur " Modifier l'itinéraire " dans " Route **". スクリーンショット 2020-11-10 15.52.25.png

Cliquez sur "** Ajouter un itinéraire ". Ensuite, sélectionnez " Destination " comme "0.0.0.0/0" et " Cible " comme " Internet GateWay ** → ** igw-xxx ..... ". .. Après cela, appuyez sur " Enregistrer l'itinéraire **". スクリーンショット 2020-11-10 16.07.30.png

Cliquez sur "** Modifier l'association de sous-réseau " dans " Association sous-marine **". スクリーンショット 2020-11-10 16.12.53.png

Sélectionnez le ** sous-réseau ** à utiliser cette fois et appuyez sur "** enregistrer **".

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

Résultat de la création du VPC

Jusqu'à présent, nous avons pu concevoir comme suit. Qiita AWS構成図-1.png

EC2

Qu'est-ce que EC2

** EC2 ** est une abréviation de ** Amazon Elastic Compute Cloud **, qui est un service qui crée un serveur virtuel. Puisque vous pouvez décider librement du système d'exploitation et des spécifications à votre propre discrétion, vous pouvez réaliser des services redondants.

Créer EC2

Tout d'abord, sélectionnez «** EC2 » dans « Sélectionner le service **» sur l'écran supérieur d'AWS. スクリーンショット 2020-11-10 15.01.49.png

Appuyez sur "** Lancer l'instance **". スクリーンショット 2020-11-10 15.03.42.png

Cette fois, appuyez sur "** Select " de " Amazon Linux 2 AMI .... **". スクリーンショット 2020-11-10 15.04.48.png

Cette fois, après avoir sélectionné «** t2.micro », appuyez sur « Étape suivante: Définition des détails de l'instance **». スクリーンショット 2020-11-10 15.06.28.png

Sélectionnez le ** VPC , ** sous-réseau ** créé précédemment et remplacez « Auto-assign public IP » par « Enabled ». Ensuite, cliquez sur " Étape suivante: Ajouter du stockage **". スクリーンショット 2020-11-10 15.17.32.png

Appuyez simplement sur "** Étape suivante: ajouter un tag **". スクリーンショット 2020-11-10 15.20.23.png

Appuyez simplement sur "** Étape suivante: Paramètres du groupe de sécurité **". スクリーンショット 2020-11-10 15.21.31.png

Après avoir appuyé sur «** Ajouter une règle », sélectionnez respectivement « TCP personnalisé », « 3000 » et « 0.0.0.0/0 ». Après cela, appuyez sur " Confirmation et création **". スクリーンショット 2020-11-10 15.23.09.png

Appuyez simplement sur "** Démarrer **". スクリーンショット 2020-11-10 15.26.02.png

Sélectionnez «** Créer une nouvelle paire de clés », entrez « Nom de la paire de clés » (cette fois « Qiita-exemple ») et appuyez sur « Télécharger la paire de clés ». Et enregistrez la paire de clés où vous le souhaitez. Après cela, appuyez sur " Créer une instance **". スクリーンショット 2020-11-10 15.26.32.png Veillez à enregistrer la ** paire de clés ** dans un endroit que vous connaissez, car vous l'utiliserez plus tard.

Cliquez sur "** Affichage de l'instance **". スクリーンショット 2020-11-10 15.33.14.png

S'il est affiché comme ceci, la création est terminée. Vous pouvez changer le nom en appuyant sur la partie du cadre rouge de l'image, changeons-le pour le moment. スクリーンショット 2020-11-10 15.35.14.png

Résultat de création EC2

Jusqu'à présent, nous avons pu concevoir comme suit. Qiita AWS構成図-1.png

Déployer

Enfin, nous déploierons l'application Nuxt. [Cet article](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) était très facile à comprendre. , J'irai sur cette base.

connexion ssh

Sélectionnez "** Instance " dans le menu " EC2 **". Sélectionnez votre ** instance ** dans la liste des ** instances . Copiez la valeur de " Adresse IPv4 publique **" dans le menu ci-dessous. スクリーンショット 2020-11-10 16.20.39.png

Démarrez le terminal et entrez la commande suivante

#AWS téléchargé-tutorial.Déplacer vers le répertoire où se trouve le pem
$ cd ~/Où vous avez enregistré la clé de paire

#fichier pem~/.Passer à ssh
$ mv Qiita-example.pem ~/.ssh

#Accorder l'accès au fichier pem
$ chmod 400 ~/.ssh/Qiita-example.pem

#connexion ssh
$ ssh -i "~/.ssh/Qiita-example.pem" ec2-user@[Adresse IP (coller) copiée précédemment]
Are you sure you want to continue connecting (yes/no)?Entrez oui

En cas de succès, l'écran suivant s'affiche.


       __|  __|_  )
       _|  (     /   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-****** ~]$

Ceci termine la connexion SSH. Maintenant que vous pouvez exécuter des commandes dans votre instance Linux, installez les packages requis.

#mettre à jour yum
$ sudo yum update -y

#Installez Git
$ sudo yum install git -y

#Installer Docker
$ sudo yum install -y docker

#Démarrer Docker
$ sudo service docker start
$ sudo systemctl enable docker.service
$ sudo service docker status

#OK si vous obtenez le résultat de sortie suivant
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running)depuis le jour 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....

#Activer la commande docker
$ sudo usermod -a -G docker ec2-user

#Quitter une fois
$ exit

#Connexion SSH à nouveau
#Passer au super utilisateur
$ sudo -i

#Téléchargez les fichiers requis
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#Donner de l'autorité
chmod +x /usr/local/bin/docker-compose

#Revenir à l'utilisateur normal
exit

Maintenant que Git et Docker fonctionnent, sélectionnez le projet que vous souhaitez déployer à partir de votre référentiel. Cette fois, nous supposerons que vous avez cloné l'application Nuxt.

Connectez à nouveau ssh et

git clone [URL de votre dépôt Git]

cd [Projets qui ont été clonés]

docker-compose up

Le déploiement est maintenant réussi.

http://[Adresse IPv4 publique du VPC]:3000

Lorsque vous accédez, vous verrez l'écran de votre application. https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_317034_057c6c11-24a7-42e6-ae7c-ca6490478ff9.png

Je vous remercie pour votre travail acharné.

Matériel de référence

Recommended Posts

Déployez l'application avec VPC + EC2 + Docker.
Java: démarrez WAS avec Docker et déployez votre propre application
Déployer l'application sur WildFly
Application Web construite avec docker (1)
Déployer l'application SpringBoot sur AWS EC2
Déployer sur heroku avec Docker (Rails 6, MySQL)
heroku: docker: déployer
Déployer le bot Line avec rails5 + Docker + Heroku Note
Déployer laravel à l'aide de docker sur EC2 sur AWS ① (Créer une instance EC2)
[Note] Créez un environnement Python3 avec Docker dans EC2
Affichez l'application ROS sur Docker avec l'interface graphique du côté hôte
Lancez MariaDB avec Docker
Exploser Docker avec WSL2
Utiliser Puphpeteer avec Docker
Exploitez Emby avec Docker
Déployer RAILS sur EC2
Exécutez Payara avec Docker
PHP jetable avec Docker
Déployez laravel à l'aide de docker sur EC2 sur AWS ② (Elastic IP acquisition-binding)
Guide: déployez votre application à l'aide du plugin Alibaba Cloud Toolkit
Enregistrez votre propre image Docker dans ECR à l'aide de l'AWS CLI
Déployer laravel à l'aide de docker sur EC2 sur AWS ④ (git clone-deploy, migration)
L'heure ne va pas avec l'application lancée sur le conteneur Docker