Wie der Titel schon sagt, hat Heroku ein Bild von Ruby oder Rails. Sie können aber sowohl Python als auch Ruby verwenden! Daher möchte ich einen Weg veröffentlichen, wie Django, das Python-Framework, funktioniert.
Es ist ein sogenanntes Full-Stack-Webframework von Python, das alles enthält, was Sie zum Erstellen einer Web-App benötigen. Zum Beispiel in Java
Es ist notwendig, verschiedene Kombinationen mit zu machen (Ist es heutzutage möglich, mein Bestes mit Java EE allein zu geben?), Aber Django kann grundsätzlich nur mit Django entwickelt werden.
Natürlich erfolgt die Codierung in Python, daher wird dies für diejenigen empfohlen, die Python verwenden können oder Python von nun an studieren möchten. Morgen wird kounoike einen Artikel über Flask schreiben, ein weiteres Framework von Python. Vielleicht möchten Sie auch darauf verweisen.
Dies ist der Punkt, von dem ich hauptsächlich abhängig war. Hier werden wir unter der Annahme sprechen, dass Heroku eine Produktionsumgebung und eine Umgebung für den tatsächlichen Betrieb ist.
Die Standardversion von Python auf Heroku ist 2.x. Ich möchte das 3.x System verwenden! In diesem Fall müssen Sie Heroku dies mitteilen.
Django verfügt über einen Debug-Modus, der beim Erstellen der Umgebung standardmäßig aktiviert ist. Wenn Sie dies beispielsweise auf Ein setzen, wird der detaillierte Inhalt angezeigt, wenn ein Fehler auftritt. Das Folgende ist ein Beispiel für einen 404-Fehler. Die URL, die derzeit als URL erkannt wird, wird angezeigt. Es ist jedoch problematisch, dass sie auf der zu bedienenden Seite angezeigt wird.
Django verwendet SQLite während der Entwicklung als Datenbank, sofern Sie die Einstellungen nicht ändern. Postgres ist jedoch grundsätzlich auf Heroku verfügbar. Daher müssen auch die DB-Einstellungen geändert werden.
Als Full-Stack-Framework hat Django selbst eine Funktion als App-Server. Es ist jedoch nur für die Entwicklung vorgesehen, und es wird empfohlen, für den tatsächlichen Betrieb einen klar abgestimmten und dedizierten App-Server zu verwenden.
Der App-Server ist im Grunde ein Server zum Ausführen von Anwendungen, daher kann ich statische Dateien nicht gut verarbeiten. Ich denke, dass App-Server anderer Sprachen auch Apache oder Nginx haben, um statische Dateien zu verarbeiten. Dieser Punkt muss ebenfalls berücksichtigt werden.
Ich bewege mich so! Wenn Sie Fragen wie "Sie sollten dies tun!" Haben, zögern Sie bitte nicht, uns zu kontaktieren.
Das ist einfach. Bereiten Sie einfach eine Datei mit dem Namen runtime.txt im aktuellen Ordner des Projekts vor und geben Sie dort die Python-Version wie folgt an.
runtime.txt
python-3.4.1
Bitte beachten Sie, dass die verfügbaren Versionen behoben sind. Auf der folgenden Seite können Sie die zu verwendende Version auswählen. Specifying a Python Runtime
Die Einstellungen für den Debug-Modus sind in settings.py
angegeben. Es ist jedoch schwierig, es zu ändern, wenn Sie auf Heroku drücken, und es zurückzusetzen, wenn Sie sich lokal entwickeln.
In meinem Fall versuche ich, wie unten gezeigt, nur dann in den Debug-Modus zu wechseln, wenn der Hostname (Computername) local enthält.
Dies liegt daran, dass meine Entwicklungsumgebung einen Namen wie "hogehoge.local" hat. Ändern Sie daher den lokalen Teil entsprechend dem von Ihnen verwendeten Hostnamen (geben Sie umgekehrt den Computernamen auf der Heroku-Seite an). Gibt es irgendwelche)
settings.py
if 'local' in hostname:
DEBUG = True
TEMPLATE_DEBUG = True
else:
DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ['*']
Dies wird auch in settings.py
angegeben, aber ich möchte es nicht entsprechend der Umgebung umschreiben.
Daher werde ich die folgende Beschreibung machen.
settings.py
if 'local' in hostname:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
else:
import dj_database_url
DATABASES = {
'default': dj_database_url.config()
}
Ein Punkt hier ist
python
import dj_database_url
DATABASES = {
'default': dj_database_url.config()
}
Teil von. Bei Verwendung der API mit dem Namen dj_database_url (die mit pip installiert werden kann) müssen das Verbindungsziel, der Benutzername, das Kennwort usw. nicht im Code beschrieben werden. Das war ein Schock.
Das Webanwendungsframework von Python verfügt über einen Standard namens WSGI. Jeder Server, der diesem Standard entspricht, kann verwendet werden. Im Heroku-Dokument gibt es eine Erklärung mit Gunicorn, also werde ich darauf reiten.
Deploying Python Applications with Gunicorn
Um dies zu verwenden, installieren Sie Gunicorn mit Pip und fügen Sie die Beschreibung von Gunicorn am Ende von INSTALLED_APPS in settings.py hinzu.
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.sites',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
'Projektname',
'gunicorn', ##← Diese Zeile hinzufügen
)
Und zum Zeitpunkt der Entwicklung
$ python manage.py runserver 0.0.0.0:8080
Was in Form von gestartet wurde, wird mit gunicorn anstelle von "manage.py" nach der später beschriebenen Methode (beschrieben in Procfile) gestartet.
Es fiel mir schwer, Informationen darüber zu finden. Zusammenfassend verwenden wir etwas, das als weißes Rauschen bezeichnet wird.
Ändern Sie nach der Installation von whitenoise mit pip settings.py
wie im obigen Link beschrieben.
Bereiten Sie dann eine Datei mit dem Namen wisgi.py in demselben Ordner vor, in dem sich settings.py
befindet, und schreiben Sie die folgenden Inhalte, die auch im dortigen Link beschrieben sind.
wsgi.py
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
Schreiben Sie dann Folgendes in das Procfile, damit es mit den Einstellungen einschließlich Gunicorn gestartet werden kann.
Procfile
web: gunicorn --env DJANGO_SETTINGS_MODULE=Projektname.settings Projektname.wsgi --log-file -
Drücken Sie mit dieser Einstellung in das Repository von Heroku und es sollte beginnen!
Ich habe die Anwendung, die mit den oben genannten Einstellungen bereitgestellt wurde, neulich freigegeben, und am ersten Tag der Veröffentlichung gab es ungefähr 20.000 PV, aber es hat im Bereich der kostenlosen Stufe gut funktioniert. Nein, Heroku ist wirklich unglaublich.
Unten finden Sie einen Link zu einem Blog, der den Prozess der tatsächlichen Erstellung der Anwendung beschreibt. Ich hoffe, Sie können auch darauf verweisen.
Ich habe versucht, einen Webdienst zur Lösung sexueller Probleme zu erstellen
>> Dienste, die tatsächlich ausgeführt werden Love Points
Der von heroku & Django erstellte Quellcode des tatsächlich betriebenen Dienstes (anders als ↑) wurde auf github hochgeladen.
Ich hoffe es wird hilfreich für die Komposition usw. sein (Es ist eine schmutzige Quelle ...)
https://github.com/nakazye/ProgrammerProfile/
Morgen, den 8. Dezember, dreht sich im Heroku-Adventskalender 2014 die Flasche von kounoike! Ich freue mich, dass das Python-Material fortgesetzt wird.
Und ich wünschte, immer mehr Menschen würden Anwendungen mit Python erstellen, inspiriert von dem Artikel.
kounoike, ich freue mich auf den Artikel von morgen! !!
Recommended Posts