Python Web Server für Ihre Raspberry Pi
9 Schritt:Schritt 1: Installieren Raspbian Schritt 2: Installieren Flask Schritt 3: Ihre erste Python-Webseite Schritt 4: Fertig! (Eine Art von) Schritt 5: Wiederkehrende HTML-Dateien Schritt 6: Machen es LIVE! Schritt 7: Wie Sie einen Dynamic DNS Schritt 8: Fernzugriff auf Ihre Pi Schritt 9: Möglichkeiten
Sie wissen, einige grundlegende Python oder Sie einige lernen wollen und Sie eine Website, einen Web-Server, einen Web-Crawler etc. machen wollen - Aber wo soll man anfangen? Dienste wie Heliohost oder Vlexofree sind für freie Python Website-Hosting, aber sie sind nicht immer zuverlässig, haben eine Position Warteschlange oder zu viel Einschränkung für Ihr Projekt. So haben Sie eine Raspberry Pi und Instructables.com und Sie finden meine Anleitung, die beschreibt, was Sie suchen. Ich werde Ihnen zeigen, wie man die Einrichtung und Verwendung eines einfachen Web-Server-Framework namens Flask zusammen mit einer Grundidee, über das, was Sie mit Ihrem neuen Python-basierten Web-Server zu tun.
Schritt 1: Installieren Raspbian
-
Raspbian ist eine Distribution von Debian, eine Linux-Betriebssystem. Raspbian ist die häufigste Betriebssystem für Ihren Raspberry Pi.
1) Zum Herunterladen Raspbian, gehen Sie zu http://www.raspberrypi.org/downloads/ und downloaden Raspbian entweder über torrent oder direkten Download.
2) Entpacken Sie die Zip-Datei (Rechtsklick & Click-Extrakt für Fenster; Rechts klicken und klicken Sie auf Öffnen mit> Archiv-Dienstprogramm für Mac).
3) Stecken Sie Ihre SD-Karte für Ihren Raspberry Pi in den Computer ein.
4) Kopieren Sie die Raspbian Dateien auf die SD-Karte. Ich habe versucht, sie mit Montage Win32DiskImager aber ich hatte damit keinen Erfolg.
5) Ihre Raspberry Pi durch Anschluss an eine Stromquelle, Befestigung der Ethernet-Kabel (Internet Kabel), an einen Fernseher (AV oder HDMI anschließen Stellen; auch ein Audiokabel, wenn Sie mit AV), Anbringen einer Maus, und Anbringen einer Tastatur.
6) durch den Einrichtungsprozess gehen
7) Geben Sie "startx" und drücken Sie Enter, wenn Sie die Desktop-Modus (Verwenden Sie keine Desktop-Modus, wenn Sie laufen Ihre Website, da sie mehr Leistung und verfügbaren Ressourcen zu verwenden) starten möchten
8) Wenn Sie im Desktop-Betrieb sind, können Sie prüfen, ob Ihr Internet funktioniert, indem Sie Ihren Browser. Wenn Sie im Terminal-Modus sind immer noch, dann können Sie Ihr Internet durch Eingabe von 'ping google.com "und Enter drücken testen.
Dieses Tutorial ist leichter in Desktop-Modus durchgeführt. Um Terminal-Befehle in Desktop-Modus Öffnen Sie dazu das Terminal über das Symbol der Explorer-Leiste ist, die wie ein leerer Bildschirm sieht.
Schritt 2: Installieren Flask
-
Pip ist ein gemeinsames Paket-Installer. Diese werden wir nutzen, um Flask zu bekommen. Sie benötigen einen Internet-Anschluss.
In dem Terminal, geben Sie den folgenden:
sudo apt-get install python-pip
Drücken Sie die Eingabetaste und geben Sie den folgenden:
sudo pip Flask installieren
Denken Sie daran, dies ist Groß- und Kleinschreibung!
Damit erhalten Sie eine WSGI konforme Web-Framework, einen Web-Server und eine Template-Engine (Jina2 Vorlagen).
Schritt 3: Ihre erste Python-Webseite
-
Erstens, stellen Sie einen neuen Ordner in / home / pi und nennen es, was Sie wollen. In diesem Tutorial werde ich es als "Website". Dann machen Sie eine Datei namens hello.py. Sie können eine hello.txt machen und ändern Sie die .txt zu .py. Öffnen Sie diese Datei Python mit einem der Texteditoren, die mit Raspbian kommt.
Wenn Sie gehen in den Kolben Webseite, als von 3/31/15, sehen Sie zunächst den folgenden Beispielcode:
von Kolben import Flask
app = Flask (__ name__)
@ App.route ("/") def hallo ():
return "Hallo Welt!"
wenn __name__ == "__main__":
app.run (host = '0.0.0.0')
Lassen Sie uns also durch das, was das bedeutet, zu gehen.
von Kolben import Flask
Die erste Zeile importiert die Flask Bibliothek. Dies ermöglicht Python auf die Befehle des Flask-Bibliothek verwenden.
app = Flask (__ name__)
Diese zweite Zeile gibt einen Namen für Ihre Anwendung. __name__ Ist fad und Standardnamen. Es funktioniert nur, wenn Sie mit den Standardmodulen (Libraries) werden. Wenn Sie möchten, um Ihre Anwendung einen benutzerdefinierten Namen zu geben, ersetzen __name__ mit 'YourApplicationName' - natürlich ändern, was in den Apostroph. Wenn Sie importieren, diese Python-Skript aus einer anderen Anwendung, würden Sie wollen, um Ihren __name__ Modul (Quelldatei) Name gesetzt. Falls Sie noch mit __name__, dann Python automatisch setzen Sie ihn auf __main__, wenn es läuft.
@ App.route ("/") def hallo ():
return "Hallo Welt!"
Dies ist das Brot und Butter von Ihrem Python Webserver. @ App.route ("/") definiert, wo eine Seite. Mit nur einem "/" als Weg, "Hallo Welt!" Wird auf die Startseite zurück, wenn jemand versucht, es zuzugreifen def hallo ():. Beschreibt, was eine Funktion aufgerufen. Alles, was im Rahmen dieser Funktion eingerückt ist, wird ein Teil von dem, was passiert, wenn jemand die Homepage zugreift. Sie können Ihr Funktionsname nicht mit einer Zahl beginnen!
wenn __name__ == "__main__":
app.run ()
Wie ich schon sagte, werden automatisch als __name__ __main__ gelesen werden, wenn Python wird das Skript ausgeführt. So ist es, dass, wenn __name__ == "__main__" führen Sie die App. Denken Sie daran, dass app ist auf __name__, der die Anwendung!
Hinzufügen von mehr zu dem, was auf eine Seite gedruckt
Um mehr zu dem, was zurückgegeben wird, wenn jemand eine Seite zugreift hinzufügen, können Sie ganze Python-Skripte in der def hallo () zu schreiben: function! Versuchen Sie, beginnend mit ein paar grundlegende Dinge wie mathematische Funktionen und Verkettung Zahlen mit Strings. Hier ist ein einfaches Beispiel, was Sie in Ihrem def hallo () setzen können: Funktion:
printedText = "Hallo Welt! Dies ist ein einfaches Python-Skript, das die ganze Zahl verkettet" + str (5) + "mit dem Rest dieser Zeichenfolge"
printedTextLen = "Die Länge des vorstehenden Satzes ist" + str (len (printedText)) + "Zeichen."
zurück printedText "
", PrintedTextLen
Die "
"Ist ein Zeilenumbruch im HTML-Format geschrieben. Es wäre das gleiche, als wenn Sie drücken Sie die Eingabetaste auf der Tastatur in einem Texteditor waren. Ein Web-Browser wird dies als HTML zu sehen und automatisch einen Zeilenumbruch.
Schritt 4: Fertig! (Eine Art von)
-
Jetzt können Sie Ihre Python-Web-Server. Geben Sie einfach im Terminal:
cd / home / pi / Webseite
python hello.py
"Cd" bedeutet "Change Directory". Es wird den Terminal Verzeichnis / home / pi / Website ändern. / Website / ist die Website Ordner, den Sie zuvor erstellt haben. Unter dem Stichwort python in den Beginn einer Terminal-Anweisung schaltet automatisch auf die Python-Interpreter. Sagen hello.py danach macht den Python-Interpreter laufen hello.py, Ihren Hallo-Welt-Skript.
Gehen Sie jetzt auf einen anderen Computer im gleichen Netzwerk wie der Raspberry Pi und versuchen Sie in eine der folgenden in Ihre Web-Adresse ein:
http://0.0.0.0:5000/
http: // raspberrypi: 5000 /
http: // YourRaspberryPi'sIPAddressHere: 5000 /
Der letzte ist wahrscheinlich zu arbeiten. Um Ihren Raspberry Pi aus der Umgebung von IP-Adresse, nicht Ihre öffentliche IP-Adresse erhalten, müssen Sie in Terminal und geben Sie in der folgenden gehen:
sudo ifconfig
Sie werden so etwas wie das, was in der obigen Abbildung dargestellt wieder zu bekommen. Ihre lokale IP-Adresse ist, was folgt inet addr. Sie können auch versuchen Sie sich in Ihrem Router, um lokale IP-Adresse Ihrer Raspberry Pi zu finden.
Schritt 5: Wiederkehrende HTML-Dateien
-
So, Ich vermute, Sie ein wenig überwältigt über die gesamte Programmierung, aber ein wenig überwältigt, was Sie aus ihm heraus sind. Ratet mal, was Sie nicht brauchen, um Ihre Seiten in Python zu schreiben! Sie können es einfach halten und verwenden Sie die Vorlage Jinja2 Programm, das bereits ist mit Glaskolben. Auf diese Weise können Sie per Drag-and-Drop Ihre HTML, CSS und Web-Scripting-Dateien in einen Ordner und Sie nicht brauchen, um sie für Python zu bearbeiten! Also lassen Sie uns beginnen mit einem einfachen HTML-Seite mit einigen grundlegenden Styling.
<Html>
<Head>
<Title> Ihr Python Website! </ Title>
</ Head>
<Body>
<H1> <font size = "6" color = "red" face = "Verdana"> Willkommen in meinem Python-basierte Website! </ Font> </ h1>
<P> <b> <i> <font size = "3" color = "gray" face = "Verdana"> Dies ist mein erstes Python-basierte Website, die auf meinem Raspberry Pi läuft! </ Font> </ i > </ b> </ p>
</ Body>
</ Html>
Sehen Sie, wie einfach ist HTML? Es ist eine sehr einfache Sprache zu lernen, weil es viel wie Englisch! So speichern Sie, dass wie, was Sie wollen, aber stellen Sie sicher, dass es .html, .txt nicht. Jetzt machen Sie einen Ordner im gleichen Verzeichnis wie die Python-Dateien und nennen es templates. Stellen Sie sicher, dass Vorlagen wird OHNE Kapitalisierung geschrieben und das wird schließt eine "s" am Ende. Die genaue Schreibweise muss Vorlagen sein. Zeigen Sie mit der HTML-Datei im Ordner Vorlagen. Dann ersetzen Sie Ihre hello.py Datei mit dem folgenden Code.
von Kolben import Flask
von Kolben import render_template
app = Flask (__ name__)
@ App.route ("/")
def mypysite (name = None):
zurück render_template ("index.html")
wenn __name__ == "__main__":
app.run ("0.0.0.0")
So gehen Sie zu Ihrem Terminal und die Verwendung cd (Verzeichnis wechseln), um auf Ihre Website Ordner zu navigieren, wie zuvor. Type python hello.py auf Ihren Server laufen. Öffnen Sie die Website auf einem anderen Computer im gleichen Netzwerk, und Sie werden sehen, dass index.html läuft! Index.html ist die HTML-Datei, die ich oben schrieb.
Schritt 6: Machen es LIVE!
-
Sie haben Ihre Python Website gemacht und es war ziemlich einfach, nicht wahr? Nun ist es Zeit, live gehen!
Melden Sie sich zunächst in Ihrem Router. Um dies zu tun, führen Sie eine der folgenden Möglichkeiten:
Für Windows: Halten Sie die WinKey + R und geben Sie "cmd". Drücken Sie Enter und Sie können Ihre Eingabeaufforderung haben. Geben Sie "ipconfig" und drücken Sie Enter. Geben Sie für Ihre Standard-Gateway. Meiner ist 10.0.0.1, aber Ihnen könnte so etwas wie 192.168.1.1 oder 192.168.1.254 sein.
Für Mac: Auf Ihrem Mac Leiste auf das Apple-Taste und dann auf Systemeinstellungen. Wählen Sie Netzwerk unter Internet und Wireless. Wählen Sie Ihr Netzwerk angeschlossen. Klicken Sie auf die Registerkarte TCP / IP und IP des Routers werden unten angezeigt.
For linux (Vielleicht mac): Open Terminal und geben Sie den folgenden: route -n | grep 'UG [\ t]' | awk '{print € 2}' (Oder einfach kopieren / einfügen). Es wird nur das Standardgateway (Router-IP-Adresse) zurück. Sagen Sie mir, wenn ich falsch liege, dass dies funktioniert auch für Mac.
Nun, da Sie die IP-Adresse Ihres Routers haben, geben Sie es in Ihren Browser ein und drücken Sie Enter. Sie werden wahrscheinlich ein Protokoll in Form. In der Regel ist das Protokoll in admin: Passwort oder admin: admin. Sie müssen sich mit Ihrem Netzwerkadministrator wenden, wenn Sie nicht der Administrator sind. Für weitere Informationen über das Protokoll des Routers in der Suche nach Informationen, gehen Sie zu Portforward.com die Passwort-Liste oder suchen Sie nach es auf einer der Seiten des Routers.
Sobald Sie in Ihrem Router angemeldet haben, versuchen Sie, Ihre Portweiter Abschnitt zu navigieren. Dies wird für alle anderen Router sein. Portforward.com kann auch dabei helfen. Dort angekommen, will, dass du etwas entlang der Linien von "Dienst hinzufügen" klicken. Unten ist die Sie füllen möchten Informationen. Wenn Sie zusätzliche Boxen haben, versuchen Sie, so dass sie leer ist oder das Hinzufügen, was Sie denken, ist die notwendige Information. Wenn Sie nicht haben, füllen Sie alle Informationen, die ich zur Verfügung stellen, dann versuchen Sie mit dem, was Sie können.
Informationen für Portforwarding:
Service Name: HTTP
Service-Typ: TCP / UDP (manchmal auch als aufgeführt 'Beide')
Server IPv4-Adresse: Ihre Raspberry Pi die lokale IP-Adresse. Sie fanden diese in den vorherigen Schritten.
Server IPv6-Adresse: Sie brauchen nicht diese ab heute. Sie können diese müssen in der Zukunft mit der Notwendigkeit für mehrere IP-Adressen.
Starter-Port: 5000
End Port: 5000
Schließlich können Sie auf Speichern klicken!
Schritt 7: Wie Sie einen Dynamic DNS
-
Eine schlechte Nachricht: Ihre IP ändert sich einmal in eine Weile. Sie müssen alles, was Sie gearbeitet, jede neue IP erhalten Sie entsprechen zu ändern. Um dies zu stoppen, ich empfehlen, sich einen dynamischen DNS. Einstellen Ihrer IP reserviert werden nicht vollständig zu beheben Ihr Problem. Sie können Google 'Free Dynamic DNS "und Sie werden viele interessante DDNS-Dienste zu erhalten. Ich aber bevorzuge RaspCTL der DDNS-Dienst . Es ist frei, die spezifisch für die Raspberry Pi (Obwohl es nicht einen Unterschied für das, was Sie es für verwenden zu machen), und es ist sehr schnell und einfach zu registrieren und zu nutzen.
Für RaspCTL, klicken Sie auf Anmelden in der oberen rechten Ecke der Seite, klicken Sie auf "Konto erstellen", und melden Sie sich an. Sie sind in. Ändern Sie Ihre IP-Adresse auf der RaspCTL Armaturenbrett, Ihre öffentliche IP-Adresse. Um dies zu erhalten, gehen Sie zu Google und suchen Sie "Eigene IP-Adresse". Kopieren Sie die in Ihrem RaspCTL Armaturenbrett. Um RaspCTL auf Ihren Raspberry Pi zu installieren, geben Sie Folgendes in das Terminal:
wget debrepo.krenel.org/raspctl.asc
cat raspctl.asc | sudo apt-key add -
echo "deb http://debrepo.krenel.org/ raspctl Haupt "| sudo tee /etc/apt/sources.list.d/raspctl.list
sudo aptitude update
sudo apt-get install raspctl-DynamicDNS
Dies ist die Konfiguration RaspCTL:
sudo $ EDITOR /etc/raspctl/dynamic-dns.conf
UUID = YOUR-UUID-HIER
Führen Sie jetzt diese und Sie werden getan:
sudo raspctl-DynamicDNS
Wichtiger Hinweis für RaspCTL: Momentan befindet sich der Client (das Programm, das Ihre IP geändert, wenn aktualisiert) wird jede Stunde durch einen cron-Skript (siehe /etc/cron.hourly/*) ins Leben gerufen. Wenn Sie häufigere Kontrollen (sagen wir mal, jede Minute), senden Sie der Besitzer RaspCTL eine E-Mail an: [email protected]
Testen Sie, ob es funktioniert, indem Sie Folgendes in die Klemme:
sudo apt-get install -y dnsutils
nslookup your-username-here.raspctl.com
Beispiel für das, was Sie nach dem vorherigen Befehl zu bekommen:
nslookup ip.raspctl.com
[...] Antwort geschnitten [...]
Name: ip.raspctl.com
Adresse: 192.81.216.84
Sie sind ziemlich viel getan Der Servername Sie auf RaspCTL gemacht ist Ihre Website-Adresse ein: 5000, nachdem es. Hier ist meine aktuelle Projekt arbeite ich an:
http://tcserver.raspctl.com:5000/
Bitte stimmen Sie dafür, ob es geholfen. Vielen Dank!
Schritt 8: Fernzugriff auf Ihre Pi
-
Remotezugriff auf das Raspberry Pi, können Sie verwenden Putty oder FileZilla . Just in Ihrem lokalen IPv4-Adresse gesetzt, (ist in diesem Fall 22 für SSH) Ihre Anschlussnummer und Ihre Login-Informationen. Sie werden Ihre Login-Infos benötigen, nachdem Sie bei der Verwendung von Spachtelmasse zu verbinden. Sie würden FileZilla für Dateiübertragungen und Putty verwenden zu tun, was Sie tun würden, als ob Sie im Anschluss an Ihrem Pi waren.