[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] optional [:Pakete_installieren: Installation von Programmen] optional }}} [[Inhaltsverzeichnis(-)]] [[Bild(Wiki/Icons/service.png, 64, align=left)]] Einen „echten“ [:Serverdienste:Webserver] installieren, konfigurieren und pflegen kann in Arbeit ausarten – insbesondere, wenn er öffentlich zugänglich ist. Viel praktischer wäre ein temporärer Webserver, der sich nur bei Bedarf genauso schnell starten wie beenden lässt. Dies ist kein Problem mit den folgenden Programmen. Eine Zielgruppe sind z.B. [:Webentwicklung:Webentwickler], die statische HTML-Seiten auf dem eigenen Rechner testen möchten. Eine andere sind Anwender, die schnell Daten zwischen zwei oder mehreren Rechnern im [:Heimnetzwerk:] austauschen wollen. Allerdings sollte unbedingt berücksichtigt werden, dass die genannten Programme ausschließlich zum vorübergehenden Einsatz in einem lokalen Netzwerk (LAN) gedacht sind. Der jeweilige Ordner wird in der Regel rekursiv freigegeben, ist also inklusive aller Unterordner und versteckter Dateien im Netzwerk sichtbar. Wenn der Rechner oder das LAN nicht über spezielle Firewall-Regeln abgesichert sind, stehen unter Umständen persönliche Daten vollkommen ungeschützt im Internet. Für den Zugriff von einem anderen Rechner reicht ein beliebiger [:Internetanwendungen:Webbrowser] aus. Um die vorgestellten Programme (bis auf [#woof woof]) wieder zu beenden, reicht ein [[Vorlage(Tasten, ctrl+c)]] auf der Kommandozeile [1]. Die Port-Nummer und der Ordnername sind jeweils frei wählbar. Die hier verwendeten Ports `8081` - `8087`, der Ordner '''~/Downloads''' und [wikipedia:localhost:] (muss praktisch durch die IP-Adresse des Server-Rechners ersetzt werden) dienen nur als Beispiel. {{{#!vorlage Warnung Alle genannten Programme bieten keinerlei Zugriffsschutz und sollten daher nicht dauerhaft zum Einsatz kommen (einzige Ausnahmen ist hier [#goshs goshs]). Darüber hinaus sind sie kein Ersatz für einen [:LAMP:LAMP-Server]. }}} = Programme = In den folgenden Beispielen ist der Ordner '''~/Downloads''' (alias '''/home/BENUTZERNAME/Downloads''') das Stammverzeichnis ("document root") des Webservers. == Python == Ohne Zusatzprogramme und damit noch einfacher in der Handhabung ist der in [:Python:] enthaltene [https://docs.python.org/3/library/http.server.html SimpleHTTPServer] {en}. Python ist in allen Ubuntu-Varianten in der Standardinstallation enthalten. Beispiel: {{{#!vorlage Befehl cd ~/Downloads && python3 -m http.server 8082 }}} Der Webserver ist über `http://localhost:8082/` zu erreichen. Eine Upload-Möglichkeit ist nicht vorhanden. == PHP == Hat man [:PHP:] installiert, so hat man einen eigenen [https://www.php.net/manual/de/features.commandline.webserver.php Server] {de} zur Hand, selbst wenn man nur die abgespeckte [:PHP/#Installation-fuer-Kommandozeilenprogrammierung:Kommandozeilen-Version] von PHP installiert hat. Beispiel: {{{#!vorlage Befehl cd GEWÜNSCHTES/SERVER_VERZEICHNIS php -S localhost:8080 }}} Mit Angabe eines anderes Root-Verzeichnisses: {{{#!vorlage Befehl php -S localhost:8080 -t /FOO/BAR }}} Der Webserver ist über `http://localhost:8080/` (Port-Angabe nach eigenen Wünschen anpassbar) zu erreichen. Eine Upload-Möglichkeit ist nicht vorhanden. == goshs == [github:patrickhener/goshs:goshs] {en} ist ein Instant Webserver, der in [:Go:] geschrieben und als "Single Binary" verfügbar ist, d.h. er kann ohne Installation und Konfiguration sofort ausgeführt werden. Der Webserver unterstützt Up- und Downloads und hat jede Menge Features an Bord: * Herunterladen oder Ansehen von Dateien * Herunterladen mehrerer Dateien als .zip-Datei * Hochladen von Dateien (auch per Drag & Drop) * Basic Authentication * Transport Layer Security (HTTPS) * selbst signiert (automatisch erzeugt) * eigenes Zertifikat verwenden * Clipboard (nicht persistent) * Herunterladen des Clipboard Inhaltes als .json-Datei * WebDAV * Read-Only und Upload-Only Modus Wenn Go auf den lokalen Rechner bereits vorhanden ist, kann goshs mit diesem Befehl installiert werden: {{{#!vorlage Befehl go install github.com/patrickhener/goshs@latest }}} Alternativ kann man goshs als [github:patrickhener/goshs/releases:Release] {en} von GitHub herunterladen und direkt ausführen. Folgender Befehl startet einen Webserver auf Port 8000 und liefert Dateien aus dem aktuellen Verzeichnis aus, erreichbar unter `http://localhost:8000/`. {{{#!vorlage Befehl ./goshs }}} == spark == [github:rif/spark:spark] {en} ist ein Instant Webserver, der in [:Go:] geschrieben und als "Single Binary" verfügbar ist, d.h. er kann ohne Installation und Konfiguration sofort ausgeführt werden. Up- und Downloads werden nicht unterstützt, jedoch eignet sich spark gut für das Ausliefern statischer Seiten. Wenn Go auf den lokalen Rechner bereits vorhanden ist, kann spark mit diesem Befehl installiert werden: {{{#!vorlage Befehl go get github.com/rif/spark }}} Alternativ kann man spark als [https://github.com/rif/spark/releases Release] {en} von GitHub herunterladen und direkt ausführen. Folgender Befehl startet einen Webserver auf Port 8087 und liefert Dateien aus '''~/Downloads''' aus, erreichbar unter `http://localhost:8087/`. {{{#!vorlage Befehl ./spark -path ~/Downloads -port 8087 }}} = Weitere Möglichkeiten = Steht das Interesse am Versenden oder Empfangen von Dateien im Vordergrund, sind die folgenden Programme eine Alternative zu den oben genannten. == woof == Ein weiteres Python-Skript ist [http://www.home.unix-ag.org/simon/woof.html woof] {en}: Es eignet sich für einzelne Dateien oder ganze Ordner, wobei letztere automatisch gepackt werden. Als Besonderheit ist ein Zähler vorhanden, mit dem sich die Anzahl der gleichzeitigen Ladevorgänge ("downloads") begrenzen lässt (Standard: 1x herunterladen). Beispiel: {{{#!vorlage Befehl python3 woof -p 8086 ~/Downloads/Dateiname }}} Der Webserver ist über `http://localhost:8086/` zu erreichen und liefert '''Dateiname''' aus. Anschließend beendet sich das Programm automatisch. Eine Upload-Möglichkeit (ebenfalls mit Zähler) ist vorhanden. Weitere Informationen liefert der Befehl: {{{#!vorlage Befehl python3 woof -h }}} == HFS == Der [http://www.rejetto.com/hfs/ HTTP File Server] {en} ist ursprünglich für Windows geschrieben worden, lässt sich aber über [:Wine:] auch unter Ubuntu ausführen. Verwaltet wird der Server über eine integrierte grafische Benutzeroberfläche. Standardmäßig ist er über `http://localhost:8080/` zu erreichen, ist aber auch anders konfigurierbar. Interessant sind die Upload-Möglichkeit sowie die Verwaltung von Benutzern. = Links = * [https://gist.github.com/willurd/5720255 Big list of http static server one-liners] {en} * [https://blog.v-gar.de/2017/01/sicherer-ad-hoc-server-mit-python-3/ Sicherer Ad-hoc Server mit Python 3] {de} - Blogbeitrag, 01/2017 * [heise:-1936993:Webserver als Shell-Einzeiler] {de} - heise Open Source, 08/2013 * [http://ubuntuguide.net/http-server-support-uploading-files-from-windows-in-ubuntu Simple Http Server support uploading files from Windows in Ubuntu] {en} - Blogeintrag, 05/2010 #tag: Netzwerk, Internet, Server