Ich habe versucht, Heroku ein wenig in [vorheriger Artikel] zu verwenden (http://qiita.com/soogie/items/4f0833b9c59cf299fdc6). Drei Monate später hat meine Erfahrung mit R zugenommen, aber dieses Mal spreche ich über die Verwendung von Python anstelle von R.
Es gibt viele Pakete für R, viele Bücher wurden letztes Jahr veröffentlicht, und in letzter Zeit gibt es eine Lücke, in der alle R-Leute, die ich über Tokyo R getroffen habe, die ganze Zeit teilnehmen, also ist es sehr praktisch, aber im Grunde Da awk mit Blick auf die statistische Verarbeitung erstellt wurde, wurde awk für die Datenvorverarbeitung verwendet. Die Verwendung von awk in der Windows 7-Umgebung (32 Bit) des Unternehmens ist jedoch problematisch. Tatsächlich begann ich im Sommer 2015 mit dem Sammeln von Informationen und nahm an verschiedenen Studiensitzungen zu Python (und Julia) teil.
Es scheint, dass ich viel teilgenommen habe, als ich sie nebeneinander gestellt habe, aber ich habe mehrmals nur im Top StartPython Club teilgenommen, und die anderen haben nur einmal teilgenommen.
Ich war ein Anfänger von Python und erhielt eine Beratung von einem Kollegen bei der Arbeit, der sagte: "Ich möchte eine Webanwendung mit Django erstellen."
Es ist eine Geschichte, in der ich mein Bestes gegeben habe.
Ich hatte es besonders in 3-5 schwer, deshalb möchte ich mich auf diesen Bereich konzentrieren.
--Cloud9-Konto: Wenn Sie noch kein Konto haben, melden Sie sich von [hier] an (https://c9.io/signup). --heroku-Konto: Wenn Sie noch kein Konto haben, melden Sie sich über [hier] an (https://signup.heroku.com/login).
Nur das. Der Grund für Cloud 9 ist übrigens, dass die integrierte Entwicklungsumgebung in der Cloud, die dieselbe Umgebung vorbereiten kann, am bequemsten für die Beantwortung verschiedener Fragen von Kollegen war, die sich für Python interessierten.
Da ich zu Hause Mac und bei der Arbeit Windows 7 bin, möchte ich mich auch nicht von den Unterschieden in Betriebssystem, Zeichencode und Zeilenvorschubcode beeinflussen lassen.
Melden Sie sich bei Cloud9 an und klicken Sie im Dashboard-Bildschirm auf Neuen Arbeitsbereich erstellen.
Geben Sie den Projektnamen ein (vorläufig abc), wählen Sie die Django-Vorlage aus der Vorlagenliste unten aus und klicken Sie auf die Schaltfläche Arbeitsbereich erstellen.
Der Arbeitsbereich wurde mit der Django-Vorlage erstellt. Die anfängliche Ordnerstruktur ist wie folgt.
c9_abc
ist der Django-Projektordner.
Die Cloud 9-Vorlage konfiguriert Python 2.7 und den entsprechenden Django. Ich möchte in Python3 entwickeln, also ändern wir die Einstellungen so, dass es in Python3 funktioniert.
Öffnen Sie den Projekteinstellungsbildschirm mit Cloud 9 - Präferenzen aus dem Arbeitsbereich-Menü.
Ändern Sie Python 2 in Python 3 im Abschnitt Sprachunterstützung.
Selbst wenn die Voreinstellung Python3 ist, bleibt Python2.7 erhalten, wenn Sie in der Befehlszeile "python --version" festlegen.
$ python --version
Python 2.7.6
Ich habe vor, viele Male später auf "python manage.py migrate" usw. zu klicken. Stellen Sie daher sicher, dass "/ usr / bin / python" auf Python3 zeigt.
$ sudo mv /usr/bin/python /usr/bin/python2
$ sudo ln -s /usr/bin/python3 /usr/bin/python
$ python —version
python 3.4.3
Ich habe auf diesen Artikel für die Methode verwiesen. [^ 1] Cloud 9 ist auch praktisch, da Sie dies ohne zu zögern tun können.
Lassen Sie uns nun das abc-Projekt ausführen. Klicken Sie in der Menüleiste auf Projekt ausführen.
Das geht nicht
Es scheint zu sagen "Ich habe keinen Django". Vielleicht ist Django wegen Python3 nicht enthalten. Installieren Sie also Django. Da es Python3 ist, verwenden wir pip3.
$ sudo pip3 install django
Als ich erneut auf Projekt ausführen geklickt habe, hat es diesmal einwandfrei funktioniert.
Wenn Sie nur auf Cloud9 entwickeln, können Sie es so lassen, wie es ist. Um es später für Heroku bereitzustellen, ersetzen Sie es durch die Vorlage des von Heroku erstellten Django-Projekts. Ich habe auf diesen Artikel [^ 2] für das Verfahren hier verwiesen.
Löschen Sie zunächst das Django-Projekt, das beim Erstellen des Arbeitsbereichs automatisch konfiguriert wurde. Nicht nur der Projektordner, sondern auch manage.py usw. werden gelöscht.
Als nächstes bringen Sie die Django-Vorlage für Heroku von GitHub.
$ django-admin.py startproject --template=https://github.com/heroku/heroku-django-template/archive/master.zip --name=Procfile c9_abc
Der letzte c9_abc hat denselben Namen wie der zuvor gelöschte Django-Projektordner.
Wenn man sich die Ordnerstruktur ansieht, ist das etwas seltsam. Die Hierarchie ist um eins verschoben.
Bewegen Sie sich jeweils um eine Ebene nach oben, sodass sich manage.py auf der obersten Ebene befindet. Der Ordner abc \ c9_abc \ c9_abc, der auf der untersten Ebene verbleibt, ist leer. Löschen Sie ihn daher.
In dem Artikel, auf den ich verwiesen habe, habe ich settings.py und wsgi.py so bearbeitet, dass sie unter Cloud9 funktionieren. Bei der Bereitstellung auf Heroku musste ich sie jedoch wieder zurücksetzen, was problematisch ist. Daher habe ich die erforderlichen Bibliotheken installiert.
$ sudo pip3 install dj-database-url
$ sudo pip3 install Whitenoise
$ sudo pip3 install Gunicorn
Überprüfen Sie den Vorgang mit Projekt ausführen.
Ich werde diesmal den Inhalt der App weglassen.
Schließlich bin ich neu in Python, daher muss ich vor Django die Grammatik von Python und die Verwendung von Bibliotheken überprüfen, um fortzufahren.
Informationen zur Verwendung der Python-Bibliothek finden Sie unter Ausgewähltes Rezept der Python-Bibliothek (Technical Review) 96% E3% 83% A9% E3% 83% AA% E5% 8E% B3% E9% 81% B8% E3% 83% AC% E3% 82% B7% E3% 83% 94-% E6% B1% A0 % E5% 86% 85-% E5% AD% 9D% E5% 95% 93 / dp / 4774177075 / ref = sr_1_1? Dh = UTF8 & qid = 1457793060 & sr = 8-1 & Schlüsselwörter = Python +% E3% 83% A9% E3% 82% Vielen Dank für A4% E3% 83% 96% E3% 83% A9% E3% 83% AA).
In Bezug auf Django war ich den folgenden Seiten besonders dankbar.
Ich habe es geschafft, etwas zu machen, das funktionierte, und ich habe es meinen Arbeitskollegen gezeigt und korrigiert, und es wurde vorerst fertiggestellt. Im Gegensatz zur lokalen Entwicklung können Sie mit Cloud9 die App nur durch Senden der URL anzeigen oder denselben Arbeitsbereich freigeben, wenn Sie einen Kollegen mit einem Cloud9-Konto haben.
Abgesehen davon hat sich mein Verständnis von Django erheblich verbessert, indem ich meinen Kollegen die App erklärt habe, die ich dieses Mal erstellt habe.
Nun, dies ist eine fertige App, aber es gibt noch etwas zu tun, bevor Sie sie auf Heroku bereitstellen. Standardmäßig verwendet django SQLite3. Selbst wenn Sie es so wie es ist auf Heroku bereitstellen, wird es vorerst funktionieren, aber es gibt eine solche Beschreibung in der Hilfe von Heroku.
Kurz gesagt, es scheint, dass "es vorerst funktioniert, aber aufgrund des Mechanismus in bis zu 24 Stunden verschwinden wird". Übrigens habe ich versucht zu sehen, wie lange es verschwinden würde, aber es ist auch nach ungefähr einer Woche nicht verschwunden. Ich weiß nicht, ob es passiert ist oder weil ich jeden Tag überprüfe "Ist es weg?", Aber ich möchte nicht so aufgeregt im Produktionsbetrieb sein, also habe ich mich gehorsam für PostgreSQL entschieden. Hier habe ich auf diesen Artikel [^ 3] und diesen Artikel [^ 4] verwiesen.
Da PostgreSQL ursprünglich im Cloud9-Arbeitsbereich installiert ist, muss es nicht erneut installiert werden. Wenn Sie sich jedoch den Status ansehen, ist es nicht verfügbar. Starten Sie daher den Dienst.
$ psql --version
psql (PostgreSQL) 9.3.11
$ sudo service postgresql status
9.3/main (port 5432): down
$ sudo service postgresql start
* Starting PostgreSQL 9.3 database server
...done.
Installieren Sie die psycopg2-Bibliothek für die Verwendung von PostgreSQL aus Python.
$ sudo pip3 install psycopg2
Melden Sie sich dann bei PostgreSQL an. Bitte beachten Sie, dass es zwei Sudos gibt.
$ sudo sudo -u postgres psql
Erstellen Sie einen Login-Benutzer (in diesem Fall myuser) in der PostgreSQL-Konsole.
postgres=# CREATE ROLE myuser LOGIN;
CREATE ROLE
postgres=# \password myuser
Enter new password:
Enter it again:
Erstellen Sie eine Datenbank (in diesem Fall abc) zur Verwendung in der App. In Cloud9 wurde ich wütend über "Neue Codierung (UTF8) ist nicht kompatibel mit der Codierung der Vorlagendatenbank (SQL_ASCII)", ohne die letzte "TEMPLATE template0" hinzuzufügen, aber ich war eine Weile besorgt, weil ich nicht wusste, was ich tun sollte.
postgres=# CREATE DATABASE abc OWNER myuser ENCODING 'UTF8' TEMPLATE template0;
CREATE DATABASE
postgres=# \q
Jetzt ist die PostgreSQL-Seite fertig. Bearbeiten Sie dann settings.py im Ordner django project (c9_abc).
#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
#}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'abc',
# The following settings are not used with sqlite3:
'USER': ’myuser',
'PASSWORD': 'your_password_here',
'HOST': '127.0.0.1',
'PORT': 5432,
}
}
Der letzte Schritt machte ein wenig süchtig. In den Artikeln, auf die ich verwiesen habe, sind beide mit "python manage.py syncdb" als OK geschrieben, aber in der Versionshinweis von django 1.9 heißt es "Der Befehl syncdb wird entfernt". Diese Funktion kann nicht mehr verwendet werden. Ich werde. Als ich es nachgeschlagen habe, wurde es in Offizielles Dokument von django1.8 beschrieben, und "syncdb" ist "migrieren". Es scheint, dass der Alias einen Schritt zum Erstellen eines Superusers enthält. Das bedeutet
$ python manage.py migrate
$ python manage.py createsuperuser
Das ist ok.
Die Migration sollte nun abgeschlossen sein. Lassen Sie uns für alle Fälle überprüfen, ob die App ordnungsgemäß funktioniert.
Da es sich um eine Vorlage handelt, die ursprünglich von heroku bereitgestellt wurde, werden Dateien (runtime.txt und require.txt), die heroku die Python-Version und die zu installierenden Bibliotheken mitteilen, im Stammordner erstellt. Heroku ist jedoch standardmäßig auch Python 2.7. Ändern Sie daher runtime.txt.
[runtime.txt]
python-3.4.3
Aktualisieren Sie dann auch die Datei resources.txt.
$ pip3 freeze > requirements.txt
Wenn jedoch nichts unternommen wird, werden alle Bibliotheken in der Python3-Umgebung von Cloud9 eingeschlossen. Überprüfen Sie daher den Inhalt und löschen Sie unnötige Bibliothekszeilen. Wenn die Umgebung zuerst mit venv usw. ausgeschaltet wird, müssen keine unnötigen Bibliothekszeilen gelöscht werden. Möglicherweise gibt es Bibliotheksabhängigkeiten. Wenn Sie dies ordnungsgemäß ausführen möchten, schalten Sie zuerst die Umgebung aus.
Installieren Sie dann das Heroku-Toolkit.
$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
Melden Sie sich nach Abschluss der Installation sofort bei heroku an.
$ heroku login
Diejenigen, die in der Anwendungsentwicklung kein Git-Repository erstellt haben, werden es erstellen.
$ git init
$ git add -A
$ git commit -m 'initial commit'
Erstellen Sie ein App-Repository auf Heroku. Im folgenden Beispiel lautet der App-Name "myherokuapp". Selbst wenn Sie dies nicht hinzufügen, weist Heroku es automatisch zu, es ist jedoch ein langer Name mit etwa 20 Zeichen.
$ heroku create myherokuapp
Dann ist es Zeit für die Bereitstellung.
$ git push heroku master
Counting objects: 130, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (121/121), done.
Writing objects: 100% (130/130), 1.91 MiB | 726.00 KiB/s, done.
Total 130 (delta 52), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.4.3
remote: $ pip install -r requirements.txt
remote: Collecting Django==1.9.4 (from -r requirements.txt (line 1))
remote: Downloading Django-1.9.4-py2.py3-none-any.whl (6.6MB)
(Weggelassen) remote: https://myherokuapp.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.... done. To https://git.heroku.com/myherokuapp.git * [new branch] master -> master
Nach einer Weile wird die Bereitstellung wie oben abgeschlossen. Wenn Sie eine Fehlermeldung erhalten, überprüfen Sie das Protokoll und die Fehlermeldung und nehmen Sie die erforderlichen Korrekturen vor.
Lasst uns eine Pause machen. Initialisieren Sie die Datenbank und erstellen Sie einen Superuser auf Heroku.
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
Öffnen wir die URL der App, die während der Bereitstellung angezeigt wurde (https: // myherokuapp.herokuapp.com / `im obigen Beispiel).
Hat es ohne Probleme funktioniert? Schalten Sie dann den Debug-Modus von Django aus. Bearbeiten Sie settings.py in Cloud9.
# DEBUG=True
DEBUG=False
Reflektieren Sie diesen Fix in Heroku.
$ git add .
$ git commit -m 'Debug mode off'
$ git push heroku master
Beachten Sie, dass Sie diese drei Zeilen weiterhin verwenden werden (obwohl Sie den Commit-Kommentar entsprechend ändern können), wenn Sie sie in Zukunft ändern.
Das ist es. Wenn Sie Missverständnisse oder Fehler haben, zögern Sie bitte nicht, uns dies per Bearbeitungsanfrage mitzuteilen. Vielen Dank.
Dieser Artikel wurde von @ hirokiky's PileMd geschrieben.
Recommended Posts