[PYTHON] Startete eine Webanwendung auf AWS mit Django und wechselte Jobs

Hallo Mogken.

Es ist über 3 Monate her, seit ich den Artikel über das Ändern von Jobs geschrieben habe, indem ich das letzte Mal eine Scraping-App mit Python + Django + AWS erstellt habe. Wie der Titel schon sagt, habe ich glücklicherweise erfolgreich den Job gewechselt und den Job in ein Unternehmen gewechselt, das ab Januar eine Cloud-Plattform entwickelt * \ (^ o ^) / *

Daher werde ich dieses Mal kurz die Prozedur beim Erstellen der Python-Webanwendung aufzeichnen, die zu diesem Zeitpunkt in AWS erstellt wurde. Es tut mir leid, aber es ist lange her, daher kann ich nicht garantieren, dass der Inhalt korrekt ist, da mein Gedächtnis etwas vage ist ... Betrachten Sie es als Amateur-Memorandum.

Was ist diesmal zu tun?

Installieren Sie Python3, Django, Nginx und Gunicorn auf der AWS VM (Centos7) und stellen Sie die erstellte Webanwendung bereit. Ich dachte daran, einen Road Balancer und eine automatische Skalierung durchzuführen, aber da ich Jobs wechseln konnte, war ich mit der einfachsten Konfiguration erschöpft ...

Konfigurationsdiagramm (ich brauche es nicht, weil es zu klein ist, aber vorerst) スクリーンショット 2020-02-12 17.54.50.png

AWS-Einstellungen

Die Elemente, die in dieser Konfiguration in AWS festgelegt werden sollten, werden grob wie folgt beschrieben.

  1. Erstellen Sie ein Netzwerk
  2. Erstellen Sie eine VM
  3. DNS-Einstellungen

Das detaillierte Verfahren wird hier nicht beschrieben. Weil das Verfahren, sich nur an Amateure zu erinnern, so beängstigend ist, dass ich mich nicht darauf beziehen kann.

Referenz-URL: https://qiita.com/okoppe8/items/dc1de147a36797442e4c

1. Erstellen eines Netzwerks

In AWS müssen Sie zuerst eine VPC erstellen, um eine VM zu starten.

Der Fluss ist wie folgt

  1. Erstellen Sie eine VPC
  2. Erstellen Sie ein Subnetz
  3. Erstellen Sie ein Internet-Gateway
  4. Erstellen einer Routentabelle
  5. Erstellen Sie eine Sicherheitsgruppe

2. Erstellen einer VM

Erstellen Sie eine VM, um Ihre Anwendung zu erstellen. Sie müssen jedoch nur EC2 erstellen, indem Sie auf die Schaltfläche klicken.

3. DNS-Einstellungen

Legen Sie die Domäne für die Veröffentlichung mit Route53, dem DNS-Dienst von AWS, fest.

Ich habe mich auf diese Seite bezogen.

https://avinton.com/academy/route53-dns-vhost/

Linux Server Einstellungen

Nach dem Erstellen der VM in AWS besteht der nächste Schritt darin, die gestartete VM einzurichten.

Von hier aus werde ich etwas näher erläutern. (Weil ich viele Male versagt und es wiederholt habe, ist mein Gedächtnis klar ...)

Danach sind die Einstellungen von hier grundsätzlich

https://narito.ninja/blog/detail/21/#_3

Ich verweise auf diese Seite. Dieser Blog enthält viele sehr leicht verständliche Artikel rund um Django, daher kann ich ihn nur empfehlen.

Das Verfahren ist wie folgt

  1. Melden Sie sich mit SSH oder Webkonsole bei der gestarteten VM an
  2. Installieren Sie python3
  3. Installation und Konfiguration von Django
  4. Installation und Konfiguration von nginx
  5. Installieren Sie das Gunicorn
  6. Starten Sie den Dienst

1. Melden Sie sich mit SSH oder Webkonsole bei der gestarteten VM an

Gleichzeitig mit der Erstellung von EC2 wird auch ein Authentifizierungsschlüssel für den Zugriff mit ssh erstellt. Laden Sie ihn herunter und verwenden Sie ihn. Wenn Sie nicht verstehen, was Sie sagen, können Sie über den AWS-Konsolenbildschirm auf die VM im Web zugreifen. Versuchen Sie es dort.

Wenn Sie versuchen, den heruntergeladenen Authentifizierungsschlüssel unverändert zu verwenden, werden Sie wütend, wenn die Berechtigung zum Authentifizierungsschlüssel zu offen ist. Daher müssen Sie die Dateiberechtigung mit dem folgenden Befehl festlegen.

chmod 400 "Name der heruntergeladenen Authentifizierungsschlüsseldatei"

Danach können Sie mit dem folgenden Befehl auf ssh zugreifen.

ssh -i ***. Pem ec2-user @ EC2 öffentlicher DNS-Name oder öffentliche IP

2. Installieren Sie python3

Referenz-URL: https://qiita.com/s_runoa/items/156f3fa67c82e9cd9f42

Installieren Sie von hier aus die erforderlichen Pakete. Zuallererst Python. Ich benutze Pyenv, aber ich weiß immer noch nicht genau, was Pyenv ist ...

#yum Paket Update yum update -y

#Installieren Sie die erforderlichen Pakete sudo yum install git gcc zlib-devel libffi-devel bzip2-devel readline-devel openssl-devel sqlite-devel

Installieren Sie #pyenv git clone https://github.com/yyuu/pyenv.git ~/.pyenv

Zu # .bash_profile hinzugefügt export PYENV_ROOT="HOME/.pyenv" export PATH="PYENV_ROOT/bin:PATH" eval "(pyenv init -)"

** Starten Sie den Server jetzt neu **

Pyhton-Installation

pyenv install --list
CFLAGS="-fPIC" pyenv install 3.7.2

Python-Einstellungen

pyenv versions
pyenv global 3.7.2
pyenv rehash

#Installationsbestätigung python --version

3. Installieren Sie django

Installieren Sie nach der Installation von Python Django. Mein erstes Framework ist übrigens Django, daher habe ich ein ganz besonderes Gefühl für Django.

django Installation

pip install Django

Damit ist die Installation von Django abgeschlossen, aber ich denke, es ist eine gute Idee, hier Maßnahmen zu ergreifen, da Sie später wütend werden, wenn die Version von sqllite alt ist.

Manchmal kann man nicht wütend werden. Wenn man also verärgert ist, kann man es überspringen und tun, nachdem man wirklich wütend ist.

** Upgrade von Sqllite **

Referenz-URL: https://qiita.com/rururu_kenken/items/8202b30b50e3bfa75821

Holen Sie sich die # tar-Datei wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz

Entpacke #tar tar xvfz sqlite-autoconf-3280000.tar.gz

#Bauen und installieren cd sqlite-autoconf-3280000 $ ./configure --prefix=/usr/local $ make $ sudo make install $ sudo find /usr/ -name sqlite3

$ sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
$ sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

Übergeben Sie den Pfad zur gemeinsam genutzten Bibliothek

$ export LD_LIBRARY_PATH="/usr/local/lib"

** Einstellungsdatei bearbeiten **

Nehmen Sie hier die Mindesteinstellungen vor, um Django normal zu starten.

Erstellen eines # django-Projekts django-admin startproject "Projektname"

#django App erstellen python manage.py startapp "app name"

Konfigurationsdatei bearbeiten Die Django-Konfigurationsdatei wird in einem Ordner mit demselben Namen wie der Projektname erstellt.

vi / "Projektname" / "Projektname" /setting.py

#Bearbeiten Sie die Elemente in settings.py unten Am Ende von #installed_app hinzugefügt "App-Name" .apps. "App-Name (Großbuchstaben des ersten Buchstabens)" Konfig Beispiel) 'myapp.apps.MyappConfig'

Debug ausblenden und Host angeben

DEBUG = False

ALLOWED_HOSTS = ["Domainnamen festlegen"]

Sprach- und Zeitzoneneinstellungen

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

#Static Dateispeichereinstellungen STATIC_URL = '/ static /' # Dies ist von Anfang an. STATIC_ROOT = '/usr/share/nginx/html/static' MEDIA_URL = '/media/' MEDIA_ROOT = '/usr/share/nginx/html/media'

#Speichern und beenden Sie die Bearbeitung settings.py

Schliesslich diesen Befehl drücken, um fertig zu werden

sudo python manage.py collectstatic

4. Installation und Konfiguration von nginx

Verwenden Sie Nginx für den Webserver. Als ich das zum ersten Mal sah, wusste ich nicht, wie ich es lesen sollte.

Nginx-Installation

Installieren Sie #nginx sudo amazon-linux-extras install nginx1.12

Nginx-Einstellungen

#Einstellungsdatei bearbeiten sudo vim /etc/nginx/conf.d/project.conf

#Die folgenden Einstellungselemente server { listen 80; Servername "öffentliche IP-Adresse des Servers";

    location /static {
        alias /usr/share/nginx/html/static;
    }

    location /media {
        alias /usr/share/nginx/html/media;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

#Speichern und schließen

Dateiprüfung einstellen

sudo nginx -t

Starten Sie #nginx sudo systemctl reload nginx

#Einstellung, um nginx gleichzeitig mit dem Start des Servers zu starten sudo systemctl enable nginx

5. Installieren Sie das Gunicorn

Zum Schluss installieren Sie Gunicorn als wsgi. Ich weiß nicht, was wsgi und gunicorn von ihren Namen sind ...

sudo pip3.7 install gunicorn

Das ist es. Wie einfach.

Servicestart

Starten Sie schließlich den Dienst

Wechseln Sie in den Projektordner, in dem sich die Datei # manage.py befindet cd /project

Starten Sie #gunicorn sudo gunicorn --bind 127.0.0.1:8000 project.wsgi:application

Zu diesem Zeitpunkt können Sie über den Domainnamen auf das Django-Projekt zugreifen.

Zum Schluss nehmen Sie die Einstellungen vor, wenn Sie Gunicorn stoppen möchten

Überprüfen Sie die Prozessnummer von #gunicorn lsof -i:8000

Beenden Sie den angezeigten Prozess

kill -9 "angezeigte Prozessnummer"

Danke für Ihre Unterstützung.

Ich war sehr glücklich, als die Seite nach dem Kampf gegen verschiedene Fehler endlich gestartet wurde. Ich fühlte mich ein wenig erwachsen.

Recommended Posts

Startete eine Webanwendung auf AWS mit Django und wechselte Jobs
Erstellen Sie eine Webanwendung mit Django
Ich habe eine WEB-Bewerbung bei Django gemacht
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Erstellen Sie mit Python + Django + AWS eine Scraping-App und wechseln Sie Jobs
Erstellen Sie eine Webanwendung mit Django
Rückblick auf die Erstellung eines Webdienstes mit Django 2
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
Stellen Sie die Django-Anwendung mit Docker bereit
Ein Memo mit Python2.7 und Python3 in CentOS
[Python] Eine schnelle Webanwendung mit Bottle!
Hinweise zum Aktivieren von PostgreSQL mit Django
Führen Sie eine Python-Webanwendung mit Docker aus
Bis die mit Flasche erstellte Webanwendung auf Heroku veröffentlicht (bereitgestellt) wird
# 1 Bis zur Bereitstellung der Webanwendung von Django (Erstellen einer Instanz mit EC2 unter AWS)
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Versuchen Sie Tensorflow mit einer GPU-Instanz unter AWS
Starten Sie einen Webserver mit Python und Flask
So führen Sie eine Django-Anwendung auf einem Docker-Container aus (Entwicklungs- und Produktionsumgebung)
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
Entwickeln Sie eine Web-API, die in DB gespeicherte Daten mit Django und SQLite zurückgibt
Eine Geschichte, die mit Speicherfehler und keinem Speicherplatz auf dem Gerät in AWS EC2 verbunden ist
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Experiment auf der Admin-Seite)
Webanwendung erstellt mit Python3.4 + Django (Teil.1 Umgebungskonstruktion)
Erstellt eine Web-App, die IT-Ereignisinformationen mit Vue und Flask abbildet
Einmaliges Anmelden bei der Django-Anwendung mit AWS SSO
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Starten Sie Django auf einem Docker-Container mit Docker-Compose Up
Erstellen Sie eine Web-App, die Zahlen mit einem neuronalen Netzwerk erkennt
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
[Einführung in AWS] Memorandum zum Erstellen eines Webservers auf AWS
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
Entwicklung von Webanwendungen mit Flask
Erstellen Sie eine Homepage mit Django
Webanwendung mit Python + Flask ② ③
Echtzeit-Web mit Django-Kanälen
Webanwendung mit Python + Flask ④
"2/2" Ich mache eine einfache Webanwendung für den Roboterbetrieb. "Raspberry Pi 3B + und Django Channels"
"1/2" Ich mache eine einfache Webanwendung für den Roboterbetrieb. "Raspberry Pi 3B + und Django Channels"
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie eine temporäre Datei mit Django als Zip und geben Sie sie zurück
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
# 3 Erstellen Sie eine Python-Umgebung (Django) mit einer EC2-Instanz (ubuntu18.04) von AWS part2
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit