[PYTHON] [AWS] J'ai essayé d'utiliser EC2, RDS, Django. Construction de l'environnement à partir de 1

introduction

C'était la première fois que je touchais l'arrière, ce qui était assez ennuyeux. La prochaine fois que je l'ai créé, j'ai pensé que je pourrais le créer immédiatement après avoir vu cet article, alors je l'ai créé pour moi-même ou pour ceux qui sont également confus **.

Puisque je suis débutant, il peut y avoir des erreurs ou des idées étranges. Dans ce cas, je vous serais reconnaissant si vous pouviez me le faire savoir dans la section commentaires.

$             <-Commandes sur votre terminal PC
[ec2-user] $  <-Commandes lorsque vous êtes connecté à EC2
MySQL >       <-Commandes lorsque vous êtes connecté à MySQL
#             <-Mon commentaire
>>>           <-Résultat d'exécution(Valeur de sortie)

Conditions préalables

--Compte AWS créé

[1] Préférences AWS

[1.1] Créer un VPC

VPC est un service qui fournit un environnement de cloud privé dédié aux utilisateurs. Par exemple, de nombreux AWS utilisent VPC lorsque vous souhaitez communiquer EC2 en interne, communiquer avec RDS et connecter des réseaux internes et externes.

** Procédure de création **

スクリーンショット 2020-09-27 12.56.03.png スクリーンショット 2020-09-27 12.59.42.png

Ceci termine la création du VPC.

[1.1.2] Créer un sous-réseau

Un sous-réseau est un groupe de réseaux qui divise d'abord le bloc CIDR créé par le VPC. Vous pouvez créer autant de sous-réseaux que vous le souhaitez, tant que vous ne dépassez pas la limite du VPC. Il existe principalement des ** sous-réseaux publics ** et des ** sous-réseaux privés **.

Je pense qu'il est difficile d'obtenir une image au début, alors ... J'ai créé un ** VPC ** appelé ** Home ** dans un vaste espace Internet ** Earth ** . L'image est que nous avons créé des pièces avec différents rôles ( sous-réseau **) tels que ** bain ** et ** chambre **. Je suis désolé si je pense mal (; ´Д `)

Créez des sous-réseaux publics et privés. ** EC2 ** pour les sous-réseaux publics Mettez ** RDS ** dans le sous-réseau privé. Créez deux ** sous-réseaux privés ** car RDS doit ** avoir différentes zones de disponibilité **.

** Procédure de création **

--Création d'un sous-réseau

スクリーンショット 2020-09-27 13.34.18.png スクリーンショット 2020-09-27 13.38.25.png スクリーンショット 2020-09-27 17.40.58.png

Ceci termine les paramètres de sous-réseau.

[1.1.3] Création d'une table de routage

La table de routage 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.

** Procédure de création **

スクリーンショット 2020-09-27 13.50.30.png

Vient ensuite la création de la passerelle Internet.

[1.1.4] Créer une passerelle Internet

Une passerelle pour se connecter à Internet depuis le VPC. En utilisant cela, le système dans VPC peut utiliser l'adresse IP globale.

Par exemple, c'est le rôle de ** sécurité d'entrée ** (clé) qui place ** personnes ** (Internet) dans ** domicile ** (zone VPC).

** Procédure de création **

スクリーンショット 2020-09-27 13.53.08.png スクリーンショット 2020-09-27 13.53.24.png スクリーンショット 2020-09-27 13.57.54.png

Ceci termine les paramètres de la passerelle Internet.

[1.1.5] Ajout d'une route externe à la table de routage

** Procédure de création **

スクリーンショット 2020-09-27 14.03.49.png スクリーンショット 2020-09-27 14.06.17.png

Ceci termine les paramètres de la table de routage.

[1.1.6] Associer une table de routage à un sous-réseau

Modifiez l'association de la table de routage.

** Procédure de création **

スクリーンショット 2020-09-27 14.11.14.png スクリーンショット 2020-09-27 14.12.54.png

[1.2] Créer une instance EC2

** Procédure de création **

スクリーンショット 2020-09-27 14.27.24.png スクリーンショット 2020-09-27 14.30.28.png スクリーンショット 2020-09-27 14.31.00.png スクリーンショット 2020-09-27 14.36.09.png スクリーンショット 2020-09-27 14.37.30.png スクリーンショット 2020-09-27 14.38.53.png スクリーンショット 2020-09-27 14.41.25.png スクリーンショット 2020-09-27 14.42.22.png

Vérifions si EC2 peut être démarré Tapez la commande suivante

$ cd

$ cd (test-key.CHEMIN vers pem)
#Si tu ne comprends pas le sens$Les téléchargements cd sont OK

$ chmod 400 test-key.pem

$ ssh -i test-key.pem [email protected]
#L'adresse IPv4 publique EC2 est entrée dans xxx

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

#Si les caractères EC2 ci-dessus sont affichés, le démarrage est terminé.

[ec2-user] $ exit
#Fin

Vous venez de démarrer EC2.

[1.3] Création de RDS

** Procédure de création **

スクリーンショット 2020-09-27 17.16.52.png

[1.3.2] Modifier le groupe de sécurité

La quantité d'apprentissage sur les groupes de sécurité est encore faible et la sécurité peut être un paramètre lâche. Essayez de l'utiliser uniquement dans ** l'environnement de test **.

En tant qu'image, pensez-vous qu'il y a 65535 entrées (numéro de port) à la maison, etc. et que seules les entrées autorisées par le groupe de sécurité sont déverrouillées?

Modifier le groupe de sécurité webtest-sg

** Procédure de création **

(J'ai oublié d'unifier sg aux rangs inférieurs (; ´Д `))

スクリーンショット 2020-09-27 20.35.45.png スクリーンショット 2020-09-27 20.37.22.png スクリーンショット 2020-09-27 20.24.41.png スクリーンショット 2020-09-27 20.23.15.png

Vérifions si RDS peut être démarré Tapez la commande suivante

$ cd

$ cd (test-key.CHEMIN vers pem)

$ ssh -i test-key.pem [email protected]

[ec2-user] $ sudo yum install mysql -y

[ec2-user] $ mysql -h Point de terminaison DB-u Nom d'utilisateur du maître DB-p
#Il vous sera demandé un mot de passe, alors entrez-le(Les caractères ne sont pas affichés mais saisis)(Le copier-coller est possible)

>>> Welcome to the MariaDB monitor.
#Est affiché, vous pouvez vous connecter à MySQL sur RDS.

#Afficher la liste dans la base de données(Peut être une base de données d'exposition en minuscules;)
MySQL > SHOW databases;

#Créez une base de données nommée "dbtest"
MySQL > CREATE DATABASE dbtest;

#Fin
MySQL > exit

Ceci termine les paramètres RDS.

[2] Construction de l'environnement Django

[2.1] Préparation à l'installation de Python3

#mettre à jour yum
[ec2-user] $ sudo yum update -y

#Installez git avec yum
[ec2-user] $ sudo yum install git -y

#Puis clonez pyenv à partir du référentiel github
[ec2-user] $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

#Permet de saisir des commandes via le chemin
[ec2-user] $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
[ec2-user] $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
[ec2-user] $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
[ec2-user] $ source ~/.bash_profile

#######Vous pouvez tout copier et coller en même temps
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
#################

#Vérifiez si pyenv est inclus
[ec2-user] $ pyenv -v
>>> pyenv 1.2.20-7-gdd62b0d1

[2.1.2] Installation de Python 3

Vérifiez la version actuelle de Python La série Python 2 a mis fin au service le 1er janvier 2020 Pour plus d'informations sur la série Python 2, consultez cet article

#Vérifier la version de Python
[ec2-user] $ python --version
>>> Python 2.7.18

#Migrer vers Python 3

#Installation des dépendances requises
[ec2-user] $ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y
>>>(Abréviation)A completé!

[ec2-user] $ sudo yum install libffi-devel -y

#Vérifiez la version de Python actuellement disponible au téléchargement
[ec2-user] $ pyenv install -l
>>>(Abréviation) 
    3.8.5 
    3.8.6
   (Abréviation)


#En ce moment(R2,9/26)Dernière version en 3.8.Installer 6
[ec2-user] $ pyenv install 3.8.6
>>> Downloading Python-3.8.6.tar.xz...
    -> https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz
    Installing Python-3.8.6...
#Cela prendra du temps
    Installed Python-3.8.6 to /home/ec2-user/.pyenv/versions/3.8.6


#Passer de la version 2 de Python à la 3
[ec2-user] $ pyenv global 3.8.6
[ec2-user] $ pyenv rehash

[ec2-user] $ python --version
>>> Python 3.8.6

#Packages qui seront nécessaires plus tard
[ec2-user] $ pip install --upgrade pip
[ec2-user] $ sudo yum install python-devel mysql-devel -y
[ec2-user] $ pip install mysqlclient

#Ceci termine la migration vers Python3

[2.2] Construction de l'environnement Django

pip est à l'origine inclus dans EC2 (Linux2)

#Vérifier la version de pip
[ec2-user] $ pip -V
>>> pip 20.2.1 from /home/ec2-user/.pyenv/versions/3.8.6/lib/python3.8/site-packages/pip (python 3.8)

#Installez Django
[ec2-user] $ pip install django

#Si vous obtenez l'erreur suivante, citation unique selon le contenu ('xxxx') Veuillez copier et réinstaller Django
>>> WARNING: You are using pip version 20.2.1; however, version 20.2.3 is available.
You should consider upgrading via the 'xxxx' command.

#Vérification de la version de Django
[ec2-user] $ python -m django --version

#Créez un projet nommé "test"
[ec2-user] $ django-admin startproject testDjango

Si vous le cochez, il devrait être généré
[ec2-user] $ ls

>>> mysite/
        manage.py
        mysite/
            __init__.py
            settings.py
            urls.py
            asgi.py
            wsgi.py

--Top mysite: Vous pouvez le créer avec n'importe quel nom dans le répertoire racine. Peut être changé. --manage.py ・ ・ ・ Utilitaire de ligne de commande pour effectuer diverses opérations du projet Django. --mysite ・ ・ ・ Package pour ce projet. --mysite / init.py ・ ・ ・ Un fichier vide indiquant que ce répertoire est python. --mysite / settings.py ・ ・ ・ Fichier de paramètres du projet. --mysite / urls.py ・ ・ ・ Déclarer l'URL. --mysite / asgi.py ・ ・ ・ Point d'entrée du serveur WEB compatible ASGI qui fournit le projet. --mysite / wsgi.py ・ ・ ・ Point d'entrée du serveur WEB compatible WSGI pour servir le projet.

[2.3] Télécharger FileZilla

Vous pouvez également éditer en utilisant vim directement en SSH pour éditer le code de testDjango, mais cette fois j'essaierai d'utiliser FailZila Pour les super débutants! Comment utiliser FileZilla

Téléchargement de la version Win de FileZila Téléchargement FileZila pour Mac

Installez et ouvrez, appuyez sur le bouton du serveur en haut à gauche et l'écran suivant apparaîtra

** Étapes de configuration **

スクリーンショット 2020-09-26 13.10.24.png スクリーンショット 2020-09-26 13.23.08.png

Une fois le réglage terminé, l'écran ci-dessus apparaîtra ** À gauche, le site local (sur mon PC) ** ** À droite, site distant (dans EC2) ** Ici, vous pouvez transférer et réécrire des fichiers. Dupliquer le testDjango que j'ai fait pour le moment sur le site local

Après avoir cliqué avec le bouton droit sur le fichier que vous souhaitez modifier, vous pouvez le modifier en l'affichant et en le modifiant. Autoriser l'édition avec PyCharm dans la prochaine [2.4]

[2.4] Télécharger PyCharm

L'environnement de développement intégré Python le plus puissant PyCharm

Comment associer PyCharm

スクリーンショット 2020-09-26 13.35.35.png

[2.5] Paramètres Django

[ec2-user] $ cd
[ec2-user] $ cd testDjango
[ec2-user] $ python manage.py startapp polls

settings.py


...
(Abréviation)
...

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbtest',
        'USER': 'Utilisateur maître DB',
        'PASSWORD': 'Mot de passe de l'utilisateur principal de la base de données',
        'HOST': 'Point de terminaison DB',
        'PORT': '3306',
    }
}

...
(Abréviation)
...

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Tokyo'

Télécharger avec FileZilla

[ec2-user] $ cd
[ec2-user] $ cd testDjango
[ec2-user] $ python manage.py migrate
#Si une erreur se produit ici, les causes possibles sont décrites ci-dessous.

[ec2-user] $ python manage.py dbshell

** Cause d'erreur **

** Autre ** Aucun module nommé'_ctypes 'ne se produit lors de l'installation de pipenv CentOS7.2 + MySQL5.6 + Python3 --- pip install mysqlclient donne mysql_config introuvable

Si vous pensez que c'est impossible, vous pouvez recréer l'instance à partir de zéro. Avec l'instance EC2 sélectionnée, appuyez sur l'action et lancez-en une similaire Une instance avec les mêmes paramètres sera créée.

Ceci complète les paramètres EC2, RDS et Django.

en conclusion

J'étais trop mauvais pour nommer cette fois. (´︵`) Par exemple, si le nom du blog est xblog xblog-vpc xblog-public-subnet xblog-ec2 xblog-rtb xblog-ec2-sg xblog-db-sg Je pense que c'est plus facile à comprendre.

J'espère que cet article aide quelqu'un.

La prochaine fois, j'essaierai d'implémenter l'API pour cela.

Site de référence

Ce qui suit et les sites auxquels j'ai beaucoup fait référence au milieu de cet article sont présentés. Merci beaucoup.

[1] Créer un environnement Python3 sur le serveur EC2 [2] Développement d'applications WEB à l'aide de django-development 1- [3] Django, syncdb dans l'environnement AWS EC2 + RDS [4] Connectez-vous à Amazon RDS depuis Django sur EC2 [5] Jusqu'à ce que l'application Django (+ MySQL) soit publiée sur AWS EC2 (+ RDS (+ S3)) [6] (Django memo) Définir MySQL dans la base de données [7] Créer une base de données avec MySQL [8] Que faire si une erreur SQLite3 se produit lors du démarrage du serveur de développement dans Django 2.2 [9] Introduction pratique pour les débutants de Vim [10] [Qu'est-ce que la table de routage AWS? Expliquons brièvement en fonction du VPC et du sous-réseau](https://qiita.com/chro96/items/21863e0960ba4ac72470#:~:text=%E6%9C%AC%E9%A1%8C%E3%81%AEAWS % E3% 81% AE% E3% 83% AB% E3% 83% BC% E3% 83% 88% E3% 83% 86% E3% 83% BC% E3% 83% 96% E3% 83% AB% E3 % 81% A8% E3% 81% AF% EF% BC% 9F & texte =% 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% E3% 80% 82)

Recommended Posts

[AWS] J'ai essayé d'utiliser EC2, RDS, Django. Construction de l'environnement à partir de 1
J'ai essayé d'utiliser AWS Chalice
Construction de l'environnement Ruby avec AWS EC2
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé d'utiliser Headless Chrome de Selenium
Construction de l'environnement Django
construction d'environnement django
J'ai essayé Django
J'ai fait une webAPI! Construire un environnement à partir de Django Rest Framework 1 avec EC2
J'ai essayé d'utiliser l'API Detect Labels d'AWS Rekognition
De 0 à la construction de l'environnement de développement Django à l'exploitation de base
J'ai essayé de créer un environnement à vérifier régulièrement en utilisant Selenium avec AWS Fargate
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
Construction de l'environnement du projet Django
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé AWS CDK!
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé AWS Iot
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé d'exécuter TensorFlow dans l'environnement AWS Lambda: Préparation
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
J'ai essayé d'utiliser PySpark de Jupyter 4.x sur EMR
J'ai essayé de lire les données d'un fichier en utilisant Node.js.
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Mémo de construction de l'environnement de développement Django
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser Amazon Glacier
Construction de l'environnement Docker + Django + React
J'ai essayé d'utiliser git inspector
J'ai essayé d'utiliser magenta / TensorFlow
construction de l'environnement de développement de projet django
J'ai essayé d'automatiser la construction d'un environnement pratique à l'aide de l'API SoftLayer d'IBM Cloud
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc