[PYTHON] [AWS] Ich habe versucht, EC2, RDS, Django zu verwenden. Umweltbau ab 1

Einführung

Ich habe zum ersten Mal das hintere Ende berührt, was ziemlich nervig war. Ich dachte, ich könnte es sofort erstellen, nachdem ich diesen Artikel das nächste Mal gesehen habe, also habe ich ihn für mich selbst oder für diejenigen erstellt, die ähnlich verwirrt sind **.

Da ich ein Anfänger bin, kann es einige Fehler oder seltsame Ideen geben. In diesem Fall würde ich mich freuen, wenn Sie mich im Kommentarbereich informieren könnten.

$             <-Befehle auf Ihrem PC-Terminal
[ec2-user] $  <-Befehle, während Sie bei EC2 angemeldet sind
MySQL >       <-Befehle, während Sie bei MySQL angemeldet sind
#             <-Mein Kommentar
>>>           <-Ausführungsergebnis(Ausgabewert)

Voraussetzungen

--AWS-Konto erstellt

[1] AWS-Einstellungen

[1.1] VPC erstellen

VPC ist ein Dienst, der eine private Cloud-Umgebung für Benutzer bereitstellt. Beispielsweise verwenden viele AWS VPC, wenn Sie EC2 intern kommunizieren, mit RDS kommunizieren und interne und externe Netzwerke verbinden möchten.

** Erstellungsverfahren **

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

Damit ist die VPC-Erstellung abgeschlossen.

[1.1.2] Subnetz erstellen

Ein Subnetz ist eine Gruppe von Netzwerken, die zuerst den von der VPC erstellten CIDR-Block teilen. Sie können so viele Subnetze erstellen, wie Sie möchten, solange Sie das VPC-Limit nicht überschreiten. Es gibt hauptsächlich ** öffentliche Subnetze ** und ** private Subnetze **.

Ich denke, es ist zunächst schwierig, sich ein Bild zu machen, also ... Ich habe eine ** VPC ** namens ** Home ** in einem riesigen ** Erd ** Internetraum ** erstellt. Das Bild ist, dass wir Räume mit unterschiedlichen Rollen (** Subnetz **) wie ** Bad ** und ** Schlafzimmer ** erstellt haben. Es tut mir leid, wenn ich falsch denke (; ´Д `)

Erstellen Sie öffentliche und private Subnetze. ** EC2 ** für öffentliche Subnetze Fügen Sie ** RDS ** in das private Subnetz ein. Erstellen Sie zwei ** private Subnetze **, da RDS ** unterschiedliche Verfügbarkeitszonen ** haben muss.

** Erstellungsverfahren **

--Erstellen eines Subnetzes

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

Damit sind die Subnetzeinstellungen abgeschlossen.

[1.1.3] Routentabellenerstellung

Die Routentabelle 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.

** Erstellungsverfahren **

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

Als nächstes wird das Internet-Gateway erstellt.

[1.1.4] Internet-Gateway erstellen

Ein Gateway für die Verbindung zum Internet innerhalb der VPC. Auf diese Weise kann das System in VPC die globale IP verwenden.

Zum Beispiel ist es die Rolle der ** Eingangssicherheit ** (Schlüssel), ** Personen ** (Internet) in ** Zuhause ** (VPC-Bereich) zu bringen.

** Erstellungsverfahren **

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

Damit sind die Internet-Gateway-Einstellungen abgeschlossen.

[1.1.5] Externe Route zur Routentabelle hinzugefügt

** Erstellungsverfahren **

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

Damit sind die Einstellungen für die Routentabelle abgeschlossen.

[1.1.6] Verknüpfen Sie eine Routentabelle mit einem Subnetz

Bearbeiten Sie die Zuordnung der Routentabelle.

** Erstellungsverfahren **

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

[1.2] EC2-Instanz erstellen

** Erstellungsverfahren **

スクリーンショット 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

Lassen Sie uns prüfen, ob EC2 gestartet werden kann Geben Sie den folgenden Befehl ein

$ cd

$ cd (test-key.WEG zu pem)
#Wenn Sie die Bedeutung nicht verstehen$CD-Downloads ist in Ordnung

$ chmod 400 test-key.pem

$ ssh -i test-key.pem [email protected]
#Die öffentliche IPv4-Adresse von EC2 wird in xxx eingegeben

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

#Wenn die obigen EC2-Zeichen angezeigt werden, ist der Startvorgang abgeschlossen.

[ec2-user] $ exit
#Ende

Sie haben jetzt EC2 gestartet.

[1.3] RDS erstellen

** Erstellungsverfahren **

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

[1.3.2] Sicherheitsgruppe bearbeiten

Das Lernen über Sicherheitsgruppen ist immer noch gering, und Sicherheit kann eine lockere Einstellung sein. Versuchen Sie es in ** nur Testumgebung ** zu verwenden.

Haben Sie als Bild das Gefühl, dass zu Hause 65535 (Portnummer) Eingänge usw. vorhanden sind und nur die von der Sicherheitsgruppe zugelassenen Eingänge entsperrt sind?

Bearbeiten Sie die Sicherheitsgruppe webtest-sg

** Erstellungsverfahren **

(Ich habe vergessen, sg zu niedrigeren Rängen zu vereinen (; ´Д `))

スクリーンショット 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

Lassen Sie uns prüfen, ob RDS gestartet werden kann Geben Sie den folgenden Befehl ein

$ cd

$ cd (test-key.WEG zu pem)

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

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

[ec2-user] $ mysql -h DB-Endpunkt-u DB-Master-Benutzername-p
#Sie werden nach einem Passwort gefragt, geben Sie es also ein(Zeichen werden nicht angezeigt, sondern eingegeben)(Kopieren und Einfügen ist möglich)

>>> Welcome to the MariaDB monitor.
#Wird angezeigt, können Sie über RDS eine Verbindung zu MySQL herstellen.

#Zeigen Sie die Liste in der Datenbank an(Kann Kleinbuchstaben anzeigen Datenbank sein;)
MySQL > SHOW databases;

#Erstellen Sie eine Datenbank mit dem Namen "dbtest".
MySQL > CREATE DATABASE dbtest;

#Ende
MySQL > exit

Damit sind die RDS-Einstellungen abgeschlossen.

[2] Bau der Django-Umgebung

[2.1] Vorbereitung für die Installation von Python3

#yum aktualisieren
[ec2-user] $ sudo yum update -y

#Installiere Git mit Yum
[ec2-user] $ sudo yum install git -y

#Dann klonen Sie pyenv aus dem Github-Repository
[ec2-user] $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

#Ermöglicht die Eingabe von Befehlen über den Pfad
[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

#######Sie können alle auf einmal kopieren und einfügen
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
#################

#Überprüfen Sie, ob Pyenv enthalten ist
[ec2-user] $ pyenv -v
>>> pyenv 1.2.20-7-gdd62b0d1

[2.1.2] Python 3 installieren

Überprüfen Sie die aktuelle Python-Version Die Python 2-Serie wurde am 1. Januar 2020 eingestellt Weitere Informationen zur Python 2-Serie finden Sie in diesem Artikel

#Überprüfen Sie die Python-Version
[ec2-user] $ python --version
>>> Python 2.7.18

#Migrieren Sie zu Python 3

#Installation der erforderlichen Abhängigkeiten
[ec2-user] $ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y
>>>(Abkürzung)Hat vervollständigt!

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

#Überprüfen Sie die Version von Python, die derzeit zum Download zur Verfügung steht
[ec2-user] $ pyenv install -l
>>>(Abkürzung) 
    3.8.5 
    3.8.6
   (Abkürzung)


#Im Moment(R2,9/26)Neueste Version in 3.8.Installieren Sie 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...
#Es wird einige Zeit in Anspruch nehmen
    Installed Python-3.8.6 to /home/ec2-user/.pyenv/versions/3.8.6


#Wechseln Sie von Python Version 2 zu 3
[ec2-user] $ pyenv global 3.8.6
[ec2-user] $ pyenv rehash

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

#Pakete, die später benötigt werden
[ec2-user] $ pip install --upgrade pip
[ec2-user] $ sudo yum install python-devel mysql-devel -y
[ec2-user] $ pip install mysqlclient

#Damit ist die Migration zu Python3 abgeschlossen

[2.2] Bau der Django-Umgebung

pip ist ursprünglich in EC2 enthalten (Linux2)

#Überprüfen Sie die Pip-Version
[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)

#Installieren Sie Django
[ec2-user] $ pip install django

#Wenn Sie den folgenden Fehler erhalten, einfaches Anführungszeichen entsprechend dem Inhalt ('xxxx') Bitte kopieren und installieren Sie Django erneut
>>> WARNING: You are using pip version 20.2.1; however, version 20.2.3 is available.
You should consider upgrading via the 'xxxx' command.

#Django Versionsprüfung
[ec2-user] $ python -m django --version

#Erstellen Sie ein Projekt mit dem Namen "test"
[ec2-user] $ django-admin startproject testDjango

Wenn Sie es überprüfen, sollte es generiert werden
[ec2-user] $ ls

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

--Top mysite: Sie können es mit einem beliebigen Namen im Stammverzeichnis erstellen. Kann gewechselt werden. --manage.py ・ ・ ・ Befehlszeilenprogramm zum Ausführen verschiedener Operationen des Django-Projekts. --mysite ・ ・ ・ Paket für dieses Projekt. --mysite / init.py ・ ・ ・ Eine leere Datei, bei der es sich bei diesem Verzeichnis um Python handelt. --mysite / settings.py ・ ・ ・ Projekteinstellungsdatei. --mysite / urls.py ・ ・ ・ URL deklarieren. --mysite / asgi.py ・ ・ ・ Einstiegspunkt des ASGI-kompatiblen WEB-Servers, der das Projekt bereitstellt. --mysite / wsgi.py G ・ ・ WSGI-kompatibler WEB-Server-Einstiegspunkt für die Bedienung von Projekten.

[2.3] Laden Sie FileZilla herunter

Sie können den Code von testDjango auch direkt in SSH mit vim bearbeiten, aber dieses Mal werde ich versuchen, FailZila zu verwenden Für super Anfänger! Verwendung von FileZilla

Win version FileZila download FileZila Download für Mac

Installieren und öffnen Sie, drücken Sie die Servertaste oben links und der folgende Bildschirm wird angezeigt

** Einrichtungsschritte **

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

Nach Abschluss der Einstellung wird der obige Bildschirm angezeigt ** Links ist die lokale Site (auf meinem PC) ** ** Rechts ist Remote-Standort (in EC2) ** Hier können Sie Dateien übertragen und neu schreiben. Dupliziere den TestDjango, den ich vorerst gemacht habe, auf die lokale Site

Nachdem Sie mit der rechten Maustaste auf die Datei geklickt haben, die Sie bearbeiten möchten, können Sie sie durch Anzeigen und Bearbeiten bearbeiten. Erlaube die Bearbeitung mit PyCharm im nächsten [2.4]

[2.4] PyCharm herunterladen

Die stärkste integrierte Python-Entwicklungsumgebung PyCharm

So verknüpfen Sie PyCharm

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

[2.5] Django-Einstellungen

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

settings.py


...
(Abkürzung)
...

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

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbtest',
        'USER': 'DB-Hauptbenutzer',
        'PASSWORD': 'DB-Hauptbenutzerkennwort',
        'HOST': 'DB-Endpunkt',
        'PORT': '3306',
    }
}

...
(Abkürzung)
...

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

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

Mit FileZilla hochladen

[ec2-user] $ cd
[ec2-user] $ cd testDjango
[ec2-user] $ python manage.py migrate
#Wenn hier ein Fehler auftritt, werden die möglichen Ursachen unten beschrieben.

[ec2-user] $ python manage.py dbshell

** Fehlerursache **

** Andere ** Bei der Installation von pipenv tritt kein Modul mit dem Namen'_ctypes 'auf CentOS7.2 + MySQL5.6 + Python3 --- pip install mysqlclient gibt mysql_config nicht gefunden

Wenn Sie der Meinung sind, dass dies nicht möglich ist, können Sie die Instanz von Grund auf neu erstellen. Drücken Sie bei ausgewählter EC2-Instanz die Aktion und starten Sie eine ähnliche Eine Instanz mit denselben Einstellungen wird erstellt.

Damit sind die Einstellungen für EC2, RDS und Django abgeschlossen.

abschließend

Diesmal war ich zu schlecht darin, Namen zu nennen. (´︵`) Zum Beispiel, wenn der Blogname xblog ist xblog-vpc xblog-public-subnet xblog-ec2 xblog-rtb xblog-ec2-sg xblog-db-sg Ich denke, dass es einfacher zu verstehen ist, wenn Sie es tun.

Ich hoffe dieser Artikel hilft jemandem.

Nächstes Mal werde ich versuchen, die API dafür zu implementieren.

Referenzseite

Das Folgende und die Seiten, auf die ich in der Mitte dieses Artikels sehr viel verwiesen habe, werden vorgestellt. Vielen Dank.

[1] Python3-Umgebung auf EC2-Server erstellen [2] WEB-Anwendungsentwicklung mit Django-Entwicklung 1- [3] Django, Syncdb in AWS EC2 + RDS-Umgebung [4] Verbindung zu Amazon RDS von Django auf EC2 [5] Bis die Django-Anwendung (+ MySQL) auf AWS EC2 (+ RDS (+ S3)) veröffentlicht wird [6] (Django-Memo) MySQL in Datenbank setzen [7] Datenbank mit MySQL erstellen [8] Was tun, wenn beim Starten des Entwicklungsservers in Django 2.2 ein SQLite3-Fehler auftritt? [9] Praktische Einführung für Vim-Anfänger [10] [Was ist die AWS-Routentabelle? Lassen Sie uns kurz anhand von VPC und Subnetz erklären](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 & 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% E3% 80% 82)

Recommended Posts

[AWS] Ich habe versucht, EC2, RDS, Django zu verwenden. Umweltbau ab 1
Ich habe versucht, AWS Chalice zu verwenden
Ruby-Umgebungskonstruktion mit aws EC2
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, Headless Chrome von Selenium zu verwenden
Django Umweltbau
Django Umweltbau
Ich habe es mit Django versucht
Ich habe ein WebAPI gemacht! Erstellen einer Umgebung aus Django Rest Framework 1 mit EC2
Ich habe versucht, die Detect Labels-API von AWS Rekognition zu verwenden
Von 0 bis Django Entwicklungsumgebung Konstruktion bis Grundbetrieb
Ich habe versucht, eine Umgebung zu erstellen, um regelmäßig mit Selenium mit AWS Fargate zu überprüfen
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Bau der Django-Projektumgebung
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe AWS CDK ausprobiert!
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe AWS Iot ausprobiert
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe versucht, TensorFlow in der AWS Lambda-Umgebung auszuführen: Vorbereitung
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich habe versucht, PySpark von Jupyter 4.x auf EMR zu verwenden
Ich habe versucht, Daten aus einer Datei mit Node.js zu lesen.
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Django Entwicklungsumgebung Bau Memo
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, Amazon Glacier zu verwenden
Docker + Django + Umgebungskonstruktion reagieren
Ich habe versucht, Git Inspector zu verwenden
Ich habe versucht, Magenta / TensorFlow zu verwenden
Django Projekt Entwicklungsumgebung Bau
Ich habe versucht, die Erstellung einer praktischen Umgebung mithilfe der SoftLayer-API der IBM Cloud zu automatisieren
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen