Seite 1 von 1

Mini Webserver unter Linux

Verfasst: 26 Mär 2025, 20:31
von asp
Wenn Python installiert ist, kann man einen Webserver in seinem Home-Ordner starten
  • cd ~/
  • mkdir http
  • cd http/
  • python3 -m http.server --cgi 8000
Der Server ist von einem entfernten Rechner dann mit einem Webbrowser <ip-Server:8000> erreichbar.

Zum Testen kann man im http-Ordner eine einfache Web-Seite mit dem Namen "index.html" speichern.

Code: Alles auswählen

<!DOCTYPE html>
  <html lang="de">
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Einfache Webseite</title>
    </head>
    <body>
      <!-- Sichtbarer Dokumentinhalt im body -->
      Hallo dieser Text wird von Webserver zuerst angezeigt
    </body>
  </html>
Mit dem Befehl
  • nohup python3 ~/http/web-server.py > server.log 2>&1 &
wird der Server "web-server.py" im Ordner "http/" gestartet

Code: Alles auswählen

import http.server
import socketserver

PORT = 8000  # Port des Webservers
DIRECTORY = "/home/pi/http"  # Webverzeichnis im Homedir Achtung ev anpassen
CGI_DIR = "/cgi-bin"  # CGI-Skripte müssen hier liegen

class Handler(http.server.CGIHTTPRequestHandler):
    cgi_directories = [CGI_DIR]  # CGI aktivieren für diesen Ordner

# Starte den Server mit HTTPServer statt TCPServer
with http.server.HTTPServer(("", PORT), Handler) as httpd:
    print(f"CGI Webserver läuft auf Port {PORT}")
    httpd.serve_forever()
Nicht vergessen "chmod +x ~http/web-server.py" damit das Skript ausführbar ist.

PS. im http-Ordner kann man noch den Ordner "cgi-bin" https://aspweb.ch/forum/viewtopic.php?t ... a151e94225 erstellen und in diesem Pythonprogramme platzieren, welche per webbroser gestartet werden können.

Der Nachteil ist, dass dieser Webserver nach einem Neustart des Severs nicht wieder automatisch gestartet wird.

Mit folgenden Befehlen kann man jedoch den Webserver permanent installieren:
  • sudo nano /etc/systemd/system/webserver.service

Code: Alles auswählen

[Unit]
Description=Mein Python-Webserver
After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/pi/http/web-server.py
WorkingDirectory=/home/pi/http
Restart=always
User=pi

[Install]
WantedBy=multi-user.target
  • sudo systemctl daemon-reload
  • sudo systemctl enable webserver
  • sudo systemctl start webserver
  • sudo systemctl status webserver
Jetzt sollte der Rechner nach einem Neustart mit dem Webserver starten.

Achtung: Bitte den Home-Ordner beachten, in meinem Beispiel "pi", bei dir sehr wahrscheinlich anderer Name!