Frage

Ich bin ein Ex-Php-Entwickler und kämpfe darum, die Denkweise zu überwinden, dass ich ein Nginx-Konfigurationsskript schreiben kann, die Verzeichnisse erstellen, Nginx + PHP-FPM aufstellen, meinen Code hochladen und ihn ausführen lassen. Ich möchte mit Python beginnen, um ein Gefühl dafür zu bekommen und Webanwendungen zu erstellen, aber ich bin ein wenig verloren, wie ich alles zum Laufen bringen kann.

Obwohl der Rat einiger Leute ausnahmslos sein wird, ein Framework wie Django zu verwenden, möchte ich sehen, wie dies alles von unten nach oben funktioniert.

Ich bin auf einen Vergleich von Python Web -Servern gestoßen, und es scheint, dass Gevent das ist, wonach ich suche. Aber wie passt alles zusammen? Benötige ich noch Nginx (mit Ausnahme statischer Inhalte) als umgekehrter Proxy oder mache ich etwas anderes? Ich stehe mit "Anfängerblindheit" und kämpfe darum zu sehen, wie alles zusammen passt.

War es hilfreich?

Lösung

Ich bin selbst ein Python -Entwickler von Anfänger, also hatte ich die gleichen Fragen. Vielleicht kann ein fortschrittlicherer Benutzer die Details ausfüllen. Folgendes habe ich bisher gemacht:

Der einfachste Weg, um loszulegen, besteht darin, einfach ein ausführbares Python-Skript (.py) zu erstellen und es in Ihr CGI-bin fallen zu lassen. Sie können dann über yourhost.com/cgi-bin/your_script.py darauf zugreifen. Einfach zu tun, einfach für die Form von Formularverarbeitung und Dingen zu bedienen.

Einige Server müssen den Server neu starten, bevor er das neue .py -Skript "sehen" kann, das für eine schnelle Entwicklung ziemlich ärgerlich sein könnte. Dies ist ein Grund, warum viele Menschen Middleware wie WSGI verwenden. So habe ich meine Apache -Konfiguration geändert, um WSGI zu aktivieren:

LoadModule wsgi_module libexec/apache2/mod_wsgi.so

<VirtualHost *:80>

WSGIScriptAlias /myapp /Library/WebServer/wsgi-scripts/views.wsgi

<Directory /Library/WebServer/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

Views.wsgi ist einfach ein Python -Skript. Wenn ich nun zu Localhost/MyApp/irgendetwas gehe, wird es auf Ansichten.Wsgi weiterleiten. Es ist eine gute Idee, diese Datei nicht in Ihr Stammverzeichnis zu setzen, da Sie sonst nicht in der Lage sind, auf statische Dateien zu verweisen.

Eine einfache App könnte einfach so aussehen:

def application(environ, start_response):
    start_response('200 OK', [('content-type', 'text/html')])
    return ['Hello world!']

Environ enthält Informationen über den Pfad, den der Benutzer zu erreichen versucht. Die Idee ist daher, dass Sie eine Liste von URLs einrichten und Ihr Programm mitteilen können, welche Funktion anhand, auf der die URL angefordert wurde. Etwas wie das:

 path      = environ.get('PATH_INFO','')
 if path.startswith('/helloworld'):
  # call your function that returns HTML code

Ich habe mich noch nicht viel mit Frameworks (wie Django) befasst, aber ich denke, einer der Vorteile, dass sie es einfach machen, HTML -Vorlagen mithilfe aller Variablen aus Ihrem Skript zu füllen. Die Template Engine von Django ermöglicht die Einbeziehung von Variablen sowie Logik (wenn, für usw.), die mit Ihrem HTML gemischt werden. Wenn die Funktion aufgerufen wird, wird egal, was sie zurückgibt, an den Client.

Ich bin immer noch ziemlich neu in all dem, also korrigiere mich bitte, wenn es hier Fehler gibt ...

Andere Tipps

Mit Python ist es ein bisschen anders als mit PHP. Eine gute Sache an Python, dass eine gemeinsame Schnittstelle in einem Standard definiert ist, mit dem eine verschiedene Python -Anwendungen auf der einen Seite und verschiedene Webserver auf der anderen Seite verwenden können. Es heißt WSGI und Sie können mehr darüber lesen hier

Und hier ist ein guter Beitrag über die Bereitstellung der Django -Anwendung über NGNIX.

Sie benötigen eine Software, die Ihren Pyton -Code ausführt.

Sie können einen 100% igen Python -Stack mit ausprobieren Tornado

Oder Sie können Apache, Nginx oder LightTPD (ich denke, alle in C geschrieben) und dann einen Mod (mod_wsgi, fGCI oder UWSGI) verwenden, damit diese Webserver Ihren Code mithilfe von Mitarbeitern ausführen lassen WSGI Schnittstelle. Diese zweite Option entspricht dem, was Apache+SOLE_MOD tun, um Ihren PHP -Code auszuführen.

Ich habe Produktionsseiten auf Apache+mod_wsgi und nginx+uwsgi

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top