Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.

Einleitung (Achtung)

In diesem Artikel habe ich darüber geschrieben, wie eine Django-Anwendung im Internet unter Verwendung der flexiblen Umgebung von GAE veröffentlicht wird. Erstens ist die flexible Umgebung von GAE ab dem 10. Juli 2017 (Montag) __ "Beta-Version". Es ist __. Auf der Tutorial-Seite steht außerdem __ "Wir empfehlen, es nicht in einer Produktionsumgebung zu verwenden." __ Bitte lesen Sie diesen Artikel auf dieser Grundlage.

Referenz: Django in flexibler Umgebung von App Engine ausführen

Text

Kürzlich habe ich persönlich eine bestimmte Webanwendung mit Django entwickelt, und wenn ich sie veröffentliche, Azure Web App Ich habe verschiedene PaaS-Dienste wie -web / app-service-web-summary) und Google App Engine ausprobiert. In diesem Artikel möchte ich den Datensatz bis zur Bereitstellung schreiben, wenn ich Google App Engine (im Folgenden als GAE bezeichnet) verwende, wobei ich mich hauptsächlich auf die Punkte konzentriere, denen ich verfallen bin.

Wenn es um Django (Python3) in GAE geht, habe ich den Eindruck, dass nicht viele Informationen verfügbar sind, selbst wenn ich sie google. Ich hoffe, dass sie für Menschen nützlich sind, die ebenfalls süchtig danach sind.

Ursache der Sucht

Rückblickend gibt es zwei Gründe, warum ich süchtig danach war.

  1. Python 3 kann nicht in "Standardumgebung" ausgeführt werden.
  2. Es ist schwierig, das Gesamtbild der Arbeit zu erfassen, und es ist leicht, in den Zustand "Was machst du jetzt?" Zu gelangen.

(Ich bin neu in Django und GAE. Vielleicht gibt es für diejenigen, die daran gewöhnt sind, Inhalte, die "natürlich" sind.)

Dann werde ich die Details unten schreiben.

Python 3 kann nicht in "Standardumgebung" ausgeführt werden.

Erstens verfügt GAE über __ "Standardumgebung" __ und __ "flexible Umgebung" __, die jeweils unterschiedliche Mechanismen, Einschränkungen und Verwendungszwecke haben. Ich war wirklich begeistert, weil ich das nicht wusste.

Wenn Sie der Meinung sind, dass "ich eine Django-Anwendung mit GAE bereitstellen werde!", Werde ich zuerst Google mit "Django Google App Engine" versuchen. (vielleicht)

Dann wird die folgende Seite oben angezeigt.

Ausführen von Django in der App Engine-Standardumgebung

Oh, das offizielle Tutorial war ein Hit. Dies scheint zu funktionieren, wenn Sie die Schritte befolgen!

Bitte warten Sie einen Moment auf Sie (ich bin) dort. Der Titel dieser Seite lautet "Ausführen von Django in App Engine __ Standardumgebung __".

Und dann, wenn Sie sich diese Seite Django Getting Started Guide ansehen (sie ist eine Seite höher als die vorherige Seite). ), In der Spalte des Falls, in dem die Standardumgebung nicht verwendet werden kann __

Benötigt Python 3 Erfordert eine Systembibliothek, die in der Standard-Python-Umgebung von App Engine nicht verwendet werden kann

Es wird beschrieben als.

Mit anderen Worten, wenn Sie eine Anwendung in Python3 schreiben oder mit "einer Systembibliothek entwickeln möchten, die in der Standard-Python-Umgebung von App Engine nicht verwendet werden kann", kann diese Standardumgebung nicht verwendet werden.

Mit anderen Worten, selbst wenn Sie früher gemäß der Seite für "Standardumgebung" fortfahren, werden Sie von den diesbezüglichen Einschränkungen abhängig sein. Ich habe dies nicht bemerkt und mich bemüht, Python 3 auszuführen oder die Bibliothek in einer Standardumgebung zu installieren.

Eine ausführliche Erläuterung der Unterschiede zwischen der Standardumgebung und der flexiblen Umgebung finden Sie auf der folgenden Seite.

Flexible App Engine-Umgebung für Benutzer der App Engine-Standardumgebung (https://cloud.google.com/appengine/docs/flexible/java/flexible-for-standard-users?hl=ja)

Kurz gesagt, die Betriebsmethode als Plattform ist völlig anders. Verwenden Sie sie daher ordnungsgemäß. Es scheint also keine flexible Umgebung zu sein, wenn Sie einfach Python3 verwenden möchten. Es scheint notwendig zu sein, das System zu entwerfen, nachdem dieser Bereich richtig verstanden wurde.

Dieses Mal möchte ich das in Python 3 geschriebene System für GAE bereitstellen, daher werde ich mit der Arbeit auf der folgenden Seite fortfahren.

Django in flexibler Umgebung von App Engine ausführen

Es ist schwierig, das ganze Bild der Arbeit zu erfassen, und es ist leicht, in den Zustand "Was machst du jetzt?" Zu gelangen.

Sobald Sie eine Tutorial-Seite gefunden haben, auf die Sie sich beziehen können, können Sie sich darauf verlassen, dass Sie mit Ihrer Arbeit fortfahren.

Diese Prozedur ist jedoch ziemlich lang, und wenn Sie dies tatsächlich ab 1 tun, werden Sie allmählich in den Zustand "Was machen Sie für was?"

In einem solchen Fall ist es für die psychische Gesundheit als Leitfaden zur Bestätigung Ihres aktuellen Standorts sehr effektiv zu verstehen, welche Art von Verfahren vom Beginn der Arbeit bis zur Bereitstellung durchgeführt wird. Daher werde ich es hier zusammenfassen.

Die Elemente sind wie folgt.

  1. Richten Sie ein Konto für die Verwendung von Google Cloud Platform ein
  2. Erstellen Sie ein Google Cloud Platform-Projekt
  3. Installieren Sie das Google Cloud SDK
  4. Bereiten Sie die Datenbank vor (Cloud SQL)
  5. Klonen Sie das Beispielprojekt und versuchen Sie, es bereitzustellen
  6. Stellen Sie Ihre Anwendung bereit

Schauen wir uns jeden einzelnen genauer an. Das spezifische Arbeitsverfahren ist wie im Dokument beschrieben, daher werde ich es weglassen. Der Zweck hier ist, ein Gesamtbild zu erhalten.

Richten Sie ein Konto für die Verwendung von Google Cloud Platform ein

GAE ist einer der von Google bereitgestellten Cloud-Dienste namens Google Cloud Platform (GCP). So wie AWS über verschiedene Dienste wie EC2, Lambda und S3 verfügt, verfügt GCP auch über verschiedene Dienste wie GAE, Cloud Storage (wird später veröffentlicht) und Big Query. GAE ist einer von ihnen, nicht wahr?

Richten Sie daher zunächst ein Konto ein (Sie können Ihr Google Mail-Konto so verwenden, wie es ist), um GCP zu verwenden. Bitte stellen Sie hier auch die Abrechnung ein.

Erstellen Sie ein Google Cloud Platform-Projekt

In GCP werden verschiedene Dienste in Einheiten, die als "Projekte" bezeichnet werden, zu einem System zusammengefasst. Zuerst erstellen wir ein Projekt. Folgen Sie dem Tutorial, um die GCP-Konsolenseite zu öffnen und ein Projekt zu erstellen.

Die ID des hier erstellten Projekts wird später verwendet, sodass Sie leichter arbeiten können, wenn Sie es irgendwo als Text aufschreiben.

Installieren Sie das Google Cloud SDK

Um jeden GCP-Dienst einschließlich GAE über die Befehlszeile zu betreiben, müssen Sie das Google Cloud SDK installieren.

Es gibt einige Dinge zu tun, wie den Befehl selbst zu installieren, das Konto einzurichten, den Vorgang zu überprüfen usw. Dies ist also auch das Verfahren (separate Seite Ich werde nacheinander fortfahren, während ich mir mac)) ansehe.

Bereiten Sie die Datenbank vor (Cloud SQL)

Weder Django noch Rails können SQLite, das in der Entwicklungsumgebung verwendet wurde, weiterhin in der Produktionsumgebung verwenden. Wenn Sie die Anwendung bereitstellen, müssen Sie einige RDB vorbereiten und die Einstellungen neu schreiben, um eine Verbindung zu ihr herzustellen.

GAE erklärt die Verwendung von Cloud SQL, einem der gleichen GCP-Dienste, als Lernprogramm.

Es gibt viele Dinge zu tun, z. B. das Aktivieren von Cloud SQL auf der GCP-Konsole, das Erstellen einer Instanz, das Erstellen eines Root-Benutzers, das Steuern des Zugriffs und das Erstellen einer Umgebung, in der Sie sich anmelden können. Verlieren Sie sich also auch hier nicht. Bitte seien Sie vorsichtig.

Darüber hinaus scheinen Cloud SQL-Instanzen die 1. und 2. Generation zu haben, aber wenn sie in einer flexiblen Umgebung verwendet werden, scheint immer die 2. Generation verwendet zu werden.

Beschreiben Sie nach Abschluss verschiedener Einstellungen die Einstellungen in der Datei settings.py des Beispielprojekts, das im nächsten Schritt geklont wurde, damit die Anwendung eine Verbindung zur Datenbank herstellen kann.

Klonen Sie das Beispielprojekt und versuchen Sie, es bereitzustellen

Wenn Sie versuchen, Ihre eigene Anwendung plötzlich bereitzustellen, ist es schwierig, die Ursache zu isolieren, wenn ein Fehler auftritt, z. B. die Beziehung zwischen der Bibliotheksversion, dem Inhalt der für GAE erforderlichen Einstellungsdatei und der unzureichenden Vorbereitung für die Bereitstellung in GAE. Ich werde.

Klonen Sie zunächst das Beispielprojekt wie in der Prozedur beschrieben, ändern Sie nur die DB-Verbindungseinstellungen und stellen Sie es einmal in der flexiblen GAE-Umgebung bereit.

Fahren Sie mit dem nächsten Schritt fort, nachdem Sie bestätigt haben, dass die vorbereitete Hello World-Seite problemlos angezeigt wird.

Stellen Sie Ihre eigene Anwendung bereit

Sobald dies erledigt ist, portieren Sie Ihre Anwendung schrittweise auf das gerade bereitgestellte Beispielprojekt, stellen Sie es bereit, überprüfen Sie den Vorgang und stellen Sie sicher, dass Ihre Anwendung problemlos im Internet funktioniert.

Im Allgemeinen verursachen verschiedene Versionen von Django und Python selbst, verschiedene Bibliotheken, verschiedene DBs usw. Fehler, die sich von den lokalen unterscheiden. Es wird daher empfohlen, nach und nach vorzugehen, um die Ursache leichter zu isolieren.

Fügen Sie bei Fehlern wie der nicht gefundenen Bibliothek die Beschreibung der verwendeten Bibliothek zu require.txt mit pip freeze> require.txt hinzu und vergessen Sie, sie bei der Bereitstellung in GAE zu installieren. Lass uns nicht.


Damit können wir endlich den Ablauf der Anwendungsentwicklung → Produktionsfreigabe sehen. Es ist gut zu sehen, dass Ihre Anwendung nicht lokal funktioniert.

Danach möchten Sie das Hinzufügen und Bereitstellen von Funktionen auf dieselbe Weise wiederholen.

Dieses Mal habe ich basierend auf dem Vorlagenprojekt bereitgestellt, aber ich kann die Einstellungen für die GAE-Umgebung, die in "app.yaml" und "settings.py" beschrieben sind, verstehen und an meine Anwendung anpassen. Ich denke es ist auch notwendig zu werden.

Zusammenfassung

Dieses Mal habe ich mich auf GAE konzentriert, aber vor diesem Versuch und Irrtum habe ich den gleichen Versuch und Irrtum in Azure Web App erlebt und konnte daher nicht erfolgreich bereitstellen.

Sobald die Anwendung bereitgestellt werden kann, kann der PaaS-Dienst von dort aus leicht geändert werden. Zuvor müssen Sie jedoch den Mechanismus, die Einschränkungen und die Einstellungsmethode kennen, die nur für PaaS gelten. , "Hallo Welt!" Ich hatte einen kleinen harten Eindruck.

Außerdem ging die diesmal verwendete "GAE flexible Umgebung Django (Python3)" verloren, da es nur wenige Leute gab, die dies taten, und selbst wenn ich googelte, als ein Problem auftrat, konnte ich nicht die richtigen Informationen finden. Es war einer der Hauptfaktoren.

Ich dachte, ich sollte in diesen Artikel einzelne Fehler und Lösungen schreiben, die während der eigentlichen Arbeit aufgetreten sind, aber ich habe den Inhalt nicht richtig aufgeschrieben, oder als ich versuchte, ihn zu lösen, war es mein einfacher Arbeitsfehler. Ich werde es weglassen, weil ich es getan habe. Wenn Sie spezielle Probleme haben, kommentieren Sie bitte. (Ich weiß nicht, ob ich es lösen kann, aber ...)

Recommended Posts

Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.
Verwendung von Django mit Google App Engine / Python
[Python] Führen Sie Flask in Google App Engine aus
Tweet (API 1.1) mit Google App Engine für Python
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
PIL in Python unter Windows8 (für Google App Engine)
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Stellen Sie die Django-Anwendung mit Docker bereit
Stellen Sie die Django-Anwendung auf Heroku bereit
Implementieren Sie die Django-App auf Hy
Verwenden Sie ndb.tasklet mit Google App Engine
Stellen Sie Go-Apps mit GitHub-Aktionen für Google App Engine bereit
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
Bis Sie die Flask-Anwendung vorerst in Google App Engine ausführen
Stellen Sie die Django-App in Heroku bereit [Teil 1]
Haben Sie Empfehlungen für ein Kommentarbuch zur Entwicklung von GoogleAppEngine / Python?
Verwenden Sie externe Module mit Google App Engine
So stellen Sie eine Django-App in nur 5 Minuten für Heroku bereit
Verwenden von Djangos ImageField mit AppEngine / Python
Ich kann nicht mehr mit der Google App Engine bereitstellen
Erstellen einer Entwicklungsumgebung mit Maven in Google App Engine [Java]
Bis Sie ein SpringBoot-Projekt in Gradle mit App Engine Flexible bereitstellen
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Konstruktionsverfahren für die Google App Engine / Python-Entwicklungsumgebung (Ende 2014)
Schritte von der Installation von Python 3 bis zur Erstellung einer Django-App
(Anfänger) Grundlegende Verwendung des Datenspeichers von Google App Engine
Erste Schritte mit Google App Engine für Python und PHP
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Laufzeitversion der Google App Engine / Python-Standardumgebung
Stellen Sie die Masonite-App auf Heroku 2020 bereit
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Erstellen einer Python-Umgebung auf einem Mac
Erstellen einer Python-Umgebung unter Ubuntu
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
# 3 Erstellen Sie eine Python-Umgebung (Django) mit einer EC2-Instanz (ubuntu18.04) von AWS part2
Einstellungen beim Schreiben von Google App Engine / Python-Apps mit Intellij Idea
Erstellen Sie eine neue Anwendung mit Python, Django
Google AppEngine-Entwicklung mit Docker
Python + Django + Scikit-Learn + Mecab (1) mit Heroku
Erstellen und Bereitstellen von Django-Apps (PTVS) mithilfe des Azure Table-Speichers
Java 1 1-Unterstützung von Google App Engine
Python + Django + Scikit-Learn + Mecab (2) mit Heroku
Stellen Sie die Flask-App für Heroku bereit (bitter)
Erstellen Sie eine Python-Umgebung in Centos
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Erstellen Sie eine Webanwendung mit Django
Stellen Sie die Flask-App auf Heroku bereit
Erstellen Sie mit Python + Django + AWS eine Scraping-App und wechseln Sie Jobs
So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit
Stellen Sie die Flask-App auf Heroku bereit
Startete eine Webanwendung auf AWS mit Django und wechselte Jobs
Erstellen Sie eine Python3-Umgebung unter CentOS7
Verwenden der Eigenschaftendatei mit Flexible Environment Java 8 von Google App Engine
[Google App Engine] Ablauf von der Erstellung der Entwicklungsumgebung bis zur Erstellung der Anwendung
Erstellen Sie eine Django-App auf Docker und stellen Sie sie in AWS Fargate bereit
[Detaillierte Version] Erstellen einer komfortablen Python-Umgebung mit Google Compute Engine (Ubuntu 16.04)
Bis die mit Flasche erstellte Webanwendung auf Heroku veröffentlicht (bereitgestellt) wird
Migrieren Sie Django-Anwendungen, die unter Python 2.7 ausgeführt werden, auf Python 3.5