2010-09-26 5 views
38

Gibt es so etwas wie einen winzigen Webserver, den ich über die Befehlszeile aufrufen kann, der Dateien nur vom lokalen Dateisystem abruft und sie über HTTP an einem bestimmten Port bereitstellt?"Ad-hoc-Webserver" für statische Dateien unter UNIX/MacOSX?

Ich möchte in der Lage sein, so etwas zu tun:

$ cd ~/Sites/mysite 
$ serve . 10.0.1.1 8080 

Dies sollte ein Webserver anwerfen, die auf 10.0.1.1:8080 und dienen Dateien aus dem aktuellen Verzeichnis hört („“) - Kein PHP, ASP oder irgendetwas davon benötigt.

Jeder Vorschlag sehr geschätzt.

Antwort

67

Wenn Sie Python installiert:

$ python -m SimpleHTTPServer 
Serving HTTP on 0.0.0.0 port 8000 ... 
+1

Ich bin nicht sicher, aber es ist Python ist nicht Teil des Core-Systems, dh immer installiert (naja, zumindest für Mac OS X 10.5+, denke ich, vielleicht noch früher)? – Archimedix

+0

Perfekt! Danke vielmals! – philippbosch

+0

Es ist nicht, aber er sagte nicht, dass es Teil des Kernsystems sein musste. Außerdem sind viele Linux mit Python installiert, wo dieser Befehl funktioniert. –

5

$ python -m SimpleHTTPServer [port]

einen Webserver im aktuellen Verzeichnis starten dienen, was Dateien dort zu finden sind.

In einigen Fällen ist dies auch nicht funktionieren, zum Beispiel der Server (also keine gleichzeitige Downloads) single-threaded ist und nicht Byte-Range-Anforderungen verarbeiten (Kunden erwarten Bereich: Unterstützung oft nicht schlecht).

2

Apache HTTPD ist in Mac OS X integriert - aktivieren Sie einfach "Web Sharing" in den Freigabeeinstellungen.

Damit es auch über Port 8080 funktioniert, müssen Sie einige Konfigurationen hinzufügen. Siehe hierzu article on Serverfault als Startpunkt.

+0

Apache kann schwerer sein 'als das OP gesucht hat, aber absolut die einfachste Art, es mit eingebauten Tools zu tun, besonders wenn sich Ihre Dateien im Pfad ~/Sites befinden. – JulesLt

+0

Definieren Sie "einfachste".Für mich, während ich bereits in dem Verzeichnis, aus dem ich dienen möchte, ist die Ausführung der oben genannten Python-Zeile viel einfacher als Überschrift in OS X Systemeinstellungen, Sharing, ... – dmkc

+0

@ dmkc Um Teufels Anwalt zu spielen, wird Apache gestartet mit 'launchctl' beim Booten und so stellen Sie es einmal und es immer auf. Keine Notwendigkeit für einen Befehl oder ein blockiertes Terminalfenster. – srquinn

2

Python3 kann das aktuelle Verzeichnis über HTTP dienen http.server mit:

$ python3 -m http.server 

Wo

  • python3 die aktuelle Version von Python
  • -m steht für Modul
  • http das http-Paket
  • http.server das Servermodul (des http-Paket)

Per Voreinstellung lauscht http.server auf Port 8000, aber Sie können andere wie folgt angeben:

$ python3 -m http.server 8080