Python auf Webhosting

  • Hi OlMi1_YT I NETCRAFT,

    ich nehme an, dass Deine python-bot.py eine Hintergrundanwendung ist und keine Webseite ausgibt. Kannst Du mehr zur Funktionionalität sagen?
    Vermutlich musst Du das Script als Cronjob betreiben.


    Danke und beste Grüße

  • Moin


    Ich gehe einfach davon aus, dass "bot.py" eine Hintergrundanwendung ist.


    Du hast probiert das mit Passenger zu machen (das Zeug mit dem Screenshot) ... das ist aber unnötig aufwendig.


    Als Cronjob kannst du es nicht direkt laufen lassen, denn hier bist du im chroot gefangen. Du hast nur auf die Programme Zugriff, die du auch per ssh benutzen kannst - somit nicht Python.


    Du könntest jedoch dein Skript per CGI (als "Website") laufen lassen. Dafür musst du CGI-Unterstützung unter dem Punkt Hosting-Einstellungen aktivieren. Wenn du jetzt bot.cgi mit folgendem Shebang und so in den cgi-bin Ordner im Website Root hochlädst, kannst du es unter domain.de/cgi-bin/bot.cgi starten.

    Python: bot.cgi
    #!/usr/bin/python3
    # -*- coding: UTF-8 -*-
    print("Content-Type: text/plain")
    print()
    
    # ... dein Python 3 Code (bei mir ist es python3.5) ...

    Immer wenn du die URL domain.de/cgi-bin/bot.cgi aufrufst wird das Skript gestartet. Das kann jetzt mit einem Cronjob automatisiert werden.

    Unter Aufgabe planen musst du eine Neue anlegen mit der Einstellung diese URL abzurufen. Das kannst du jetzt Täglich oder sonst wie machen (z.B. im Cron-Stil hier ein Hilfs-Tool https://crontab.guru/).


    Wenn du noch extra Python Packages (z.B. von pip) brauchst, musst du auf deinem PC die venv env erstellen und da die Packages installieren.

    Jetzt hast du zwei einfache Optionen, diese für bot.cgi verfügbar zu machen:

    1. Die Packages von env/lib/python-x/site-packages direkt in den cgi-bin Ordner legen. (Dann wird alles vollgemüllt)

    2. Oder die Packages von env/lib/python-x/site-packages in den Ordner cgi-bin/meine-packageszu legen und dann mit folgendem Code zu "aktivieren" (dem Python Path hinzuzufügen):

    Python: bot.cgi
    # shebang und so
    
    import sys
    # sys.path[0] entspricht dem "cgi-bin" Ordner
    sys.path.insert(1, sys.path[0]+"/meine-packages")
    
    # ... ab hier kannst du deine Packages importieren.


    Viel Glück ;)

  • Hallo zusammen,


    ich versuche auch gerade, ein Python Script als "Webseite" auszuführen.

    Dabei habe ich den Beitrag von mhs (https://forum.netcup.de/sonsti…uf-webhosting/#post157202), sowie die anderen beiden Anleitung befolgt.

    WSGI Python mit Phusion Passenger auf Webhosting 8000 - netcup Kundenforum
    Moin Moin Ich möchte letztendlich Python auf meinem Webhosting benutzen. Und zb Flask benutzen (also WSGI Webframeworks). Nun versuche ich dieses Tutorial…
    forum.netcup.de

    https://saschaszott.github.io/2021/02/14/netcup-python-webhosting.html


    Leider bekomme ich es mit keiner Anleitung zum Laufen.

    Wenn ich das Python-Script außerhalb des cgi-bin Ordners aufrufe, bekomme ich im Browser nur den Quelltext angezeigt.

    Im cgi-bin Ordner bekomme ich einen 500er Fehler mit der Meldung "End of script output before headers: test.cgi" oder mit der *.py Endung

    "End of script output before headers: test.py".


    Was muss ich einstellen oder machen, damit ich ein Python-Script aufrufen kann?

    Oder gibt es gar nicht die Möglichkeit, ein Python Script durch einen HTTP-Aufruf zu starten?


    Vielen lieben Dank und viele Grüße

    Stefan