Python Script auf Webserver

Django, Flask, Bottle, WSGI, CGI…
Antworten
Knolch
User
Beiträge: 3
Registriert: Sonntag 13. Januar 2019, 21:38

Hallo,

ich bin noch Anfänger mit Python und versuche ein Script auf einem Webserver, den ich über manitu gemietet habe zum laufen zu bringen.
So wie ich es verstanden habe, soll dies bei dem genannten Anbieter möglich sein und ich habe folgendes gemacht:

1. Simples Python Script erstellt:

Code: Alles auswählen

#!/usr/bin/python

print("Content-type:text/html\n")
print("<h1>This is the Home Page</h1>")
2. Python Script auf WebFTP geladen und die Berechtigungen 755 zugeteilt.

3. Aufrufen der entsprechenden URL

Im Ergebnis wird mir im Browser dann allerdings nur der Python Code angezeigt und er wird nicht ausgeführt. Ich weiß nicht wie ich es nun dazu bringen kann, dass der Code auch ausgeführt wird. Kann mir hierbei wohl jemand weiterhelfen?

Viele Grüße
Knolch
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Knolch: laut Webseite muß die Datei die Endung .cgi haben.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Randbemerkung da du meintest, du fängst gerade an:
Du solltest vielleicht im Hinterkopf behalten, dass CGI-Programmierung eigentlich nicht mehr dem Stand der Technik entspricht (so hat es halt in den 90ern mal angefangen) und es bessere Alternativen gibt, die man nach Möglichkeit auch verwenden sollte. Für private Experimente und Spielereien ist das denke ich okay. Wenn du allerdings ernsthafteres Interesse an Webentwicklung mit Python hast, ist CGI meiner Meinung nach eher eine Sackgasse. Stattdessen schaut man sich dann vielleicht besser eines der populären Web Frameworks an. Wenn dieser Provider nur CGI anbietet, könnte es damit schwierig werden (wobei ich gerade gelernt habe, dass Flask scheinbar notfalls auch mit CGI funktioniert.)
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@nezzcarth: WSGI geht notfalls auch über CGI, also letztlich auch Bottle und sogar Django. Es wird halt für jede Anfrage immer die gesamte Webanwendung hochgezogen, statt das da ein paar Threads und/oder Prozesse durchgehend laufen. Ich würde es aber wahrscheinlich trotzdem machen, alleine schon wegen der schöneren API.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Knolch
User
Beiträge: 3
Registriert: Sonntag 13. Januar 2019, 21:38

Danke für eure Antworten!
Tatsächlich stehe ich noch ziemlich am Anfang bei dem ganzen Thema Webentwicklung, da bin ich natürlich froh über jegliche Tipps von euch.
Der Anbieter den ich jetzt für den Start gewählt habe bietet tatsächlich nur CGI an, sodass ich jetzt erst einmal damit anfangen werde und mich dann gegebenenfalls auch nochmal weiter umschaue, in welche Richtungen man sich noch weiterentwickeln kann.

Wenn ich zurück zu meinem Problem komme, den Hinweis auf die Endung .cgi für das Script habe ich jetzt mal umgesetzt. Die Berechtigungen und alles weitere habe ich gelassen wie zuvor. Als Ergebnis bekomme ich jetzt einen Error 500 "Interner Server Error". Das ist zwar noch nicht was ich gerne hätte aber zumindest schon mal etwas anderes :D. Leider finde ich keinen Hinweis, worin der Fehler besteht. Ich habe mir die Log files auf dem Server angesehen aber mehr als der 500 Fehlercode ist darin nicht zu finden. Laut dem Anbieter ist Python standardmäßig aktiviert, sodass das Problem woanders liegen muss.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Knolch: 500 ist ein interner Fehler wo man die Ursache in den Logs vom Webserver finden sollte. Da gibt es oft verschiedene Dateien für die Zugriffe und für Fehler.

Wobei deren FAQs auch witzig sind:
Welche Version von Python verwenden Sie?
Derzeit stehen die Versionen 2.7 sowie 3.6 in unseren Webhostingpaketen zur Verfügung.

Wie lautet der korrekte Pfad zu Python?
Der Pfad lautet

Code: Alles auswählen

/usr/bin/python
Ein Pfad für zwei verschiedene Versionen‽

Egal welches der Pfad für 3.6 ist, Python 2 willst Du nicht mehr verwenden wenn die auch ein Python 3 bieten.

Tracebacks will man eigentlich nicht im Browser anzeigen lassen, weil das Angreifern nützliche Informationen liefert, aber zum Testen bis es grundsätzlich geht, macht das vielleicht Sinn zur Fehlersuche. Schau mal in die Dokumentation vom `cgi`-Modul aus der Standardbibliothek.

Und dann würde ich zum entwickeln empfehlen das lokal zu machen und nicht direkt auf dem Webserver.

Arbeitest Du mit Windows? Welche Zeilenenden hat denn Deine Textdatei?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten