[[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] und [#webfs webfs]) 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 Ausnahme ist hier [#Meiga Meiga]). 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. == Jibble == Der auf [:Java:] basierende und damit plattformübergreifend einsetzbare Webserver [http://www.jibble.org/jibblewebserver.php Jibble] {en} bietet neben den Grundfunktionen ein sonst nur von vollwertigen Webservern bekanntes Merkmal: [wikipedia:Server_Side_Includes:SSI] (Server Side Includes). Auch die eingebaute Unterstützung verschiedener [:MIME-Typ:MIME-Typen] ist praktisch. Eine Upload-Möglichkeit ist nicht vorhanden. Beispiel: {{{#!vorlage Befehl java -jar WebServerLite.jar ~/Downloads 8081 }}} Der Webserver ist über `http://localhost:8081/` zu erreichen. == Python == Ohne Zusatzprogramme und damit noch einfacher in der Handhabung ist der in [:Python:] enthaltene [https://docs.python.org/2/library/simplehttpserver.html SimpleHTTPServer] {en}. Python ist in allen Ubuntu-Varianten in der Standardinstallation enthalten. Beispiele: * Python 3.x: {{{#!vorlage Befehl cd ~/Downloads && python3 -m http.server 8082 }}} * Python 2.x: {{{#!vorlage Befehl cd ~/Downloads && python -m SimpleHTTPServer 8082 }}} Der Webserver ist jeweils über `http://localhost:8082/` zu erreichen. Eine Upload-Möglichkeit ist nicht vorhanden. [[Vorlage(Bildunterschrift, ./droopy.png, 150, "Upload mit Droopy", right)]] == Droopy == Bisher fehlt die Möglichkeit, Dateien hochzuladen. Mit dem ebenfalls in Python programmierten [github:stackp/Droopy:Droopy] {en} können einzelne Dateien bequem hochgeladen werden. Es ist in den offiziellen Paketquellen enthalten. Folgendes Paket muss installiert [3] werden: {{{#!vorlage Paketinstallation droopy, universe }}} Nett ist die Möglichkeit, die Upload-Seite mit einem Bild zu verschönern. Beispiel: {{{#!vorlage Befehl python droopy.py -m "Einzelne Dateien hochladen" -d ~/Downloads 8083 -p ~/Bilder/bild.jpg }}} Der Webserver ist über `http://localhost:8083/` zu erreichen. Weitere Informationen liefert der Befehl: {{{#!vorlage Befehl python droopy.py -h }}} Eine Download-Möglichkeit kann man mit der Option `--dl` aktivieren. == SimpleHTTPServerWithUpload == Das folgende Skript ist eine Alternative zu Droopy und stammt von [http://luy.li/2010/05/15/simplehttpserverwithupload/ bones7456] {zh}. Im Gegensatz zu Droopy sind hier Up- und Downloads ohne die Angabe einer zusätzlichen Option möglich. Den Quellcode gibt es hier: [https://gist.github.com/BUPTGuo/007a6e589c0d2e48aac6 SimpleHTTPServerWithUpload.py] {dl}. Beispiel: {{{#!vorlage Befehl cd ~/Downloads && python SimpleHTTPServerWithUpload.py 8084 }}} Der Webserver ist über `http://localhost:8084/` zu erreichen. == SimpleAuthServer == Möchte man ein Kennwort für den Zugriff nutzen, so kann man das Skript [https://gist.github.com/fxsjy/5465353 SimpleAuthServer] {en} verwenden. Man bedenke aber, dass die Authentifizierung nur den Verbindungsaufbau absichert, aber die übertragenen Daten nicht verschlüsselt. Ähnlich wie bei FTP-Übertragungen kann also jeder die übertragenen Dateien inkl. des Kennworts mitlesen, da nur HTTP und nicht HTTPS genutzt wird. Echtes HTTPS bietet erst [github:goya191/SimpleAuthServerSSL.py:SimpleAuthServerSSL] {en}. {{{#!vorlage Befehl cd ~/Downloads && python SimpleAuthServer.py 8085 Benutzername:Passwort }}} Der Webserver ist über `http://localhost:8085/` zu erreichen. == webfs == [http://linux.bytesex.org/misc/webfs.html webfs] {en} ist ein kleiner Webserver für statische Webseiten, der in den offiziellen Paketquellen enthalten ist. Folgendes Paket muss installiert [3] werden: {{{#!vorlage Paketinstallation webfs, universe }}} Die Konfiguration erfolgt über die Datei '''/etc/webfsd.conf'''. Weitere Hilfe bietet die [:man:Manpage] zu '''webfsd'''. Informationen zur Steuerung des [:Dienste:Dienstes] liefert der Befehl: {{{#!vorlage Befehl sudo /etc/init.d/webfs }}} {{{#!vorlage Paketinstallation webfs, universe }}} Die Konfiguration erfolgt über die Datei '''/etc/webfsd.conf'''. Weitere Hilfe bietet die [:man:Manpage] zu '''webfsd'''. Informationen zur Steuerung des [:Dienste:Dienstes] liefert der Befehl: {{{#!vorlage Befehl sudo /etc/init.d/webfs }}} == spark == [https://github.com/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 python 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 python 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://suckup.de/blog/2010/12/08/droopy-datenuebertragung-per-http/ Droopy – Datenübertragung per HTTP] {de} - Blogeintrag 12/2010 * [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 * [http://www.datenteiler.de/ein-kleiner-webserver-mit-python/ Ein kleiner Webserver mit Python 2] {de} - Blogeintrag, 04/2010 * [http://www.linuxjournal.com/content/tech-tip-really-simple-http-server-python Really Simple HTTP Server with Python 2] {en} - Python nur auf `localhost` starten, Artikel LinuxJournal, 09/2009 #tag: Netzwerk, Internet, Server