it-swarm.com.de

Was ist eine schnellere Alternative zu Pythons http.server (oder SimpleHTTPServer)?

Python's http.server (oder SimpleHTTPServer für Python 2) ist eine großartige Möglichkeit, den Inhalt des aktuellen Verzeichnisses von der Befehlszeile aus zu bedienen:

python -m http.server

Was Web-Server angeht, ist es jedoch sehr langsam ...

Es verhält sich wie ein einzelner Thread und verursacht gelegentlich Zeitüberschreitungsfehler, wenn JavaScript-AMD-Module mit RequireJS geladen werden. Das Laden einer einfachen Seite ohne Bilder kann fünf bis zehn Sekunden dauern.

Was ist eine schnellere Alternative, die genauso bequem ist?

270
Drew Noakes

http-server für node.js ist sehr praktisch und viel schneller als der SimpleHTTPServer von Python. Dies liegt vor allem daran, dass asynchrones IO für die gleichzeitige Bearbeitung von Anforderungen verwendet wird, anstatt Anforderungen zu serialisieren.

Installation

Installieren Sie node.js, falls Sie dies noch nicht getan haben. Verwenden Sie dann den Knotenpaket-Manager (npm), um das Paket zu installieren, und verwenden Sie die -g-Option für die globale Installation. Wenn Sie mit Windows arbeiten, benötigen Sie eine Aufforderung mit Administratorrechten. Unter Linux/OSX müssen Sie den Befehl Sudo eingeben:

npm install http-server -g

Dadurch werden alle erforderlichen Abhängigkeiten heruntergeladen und http-server installiert.

Benutzen

Jetzt können Sie in einem beliebigen Verzeichnis Folgendes eingeben:

http-server [path] [options]

Der Pfad ist optional, standardmäßig ./public, falls vorhanden, andernfalls ./.

Optionen sind [Standardeinstellungen]:

  • -p Die Portnummer, die abgehört werden soll [8080]
  • -a Die Host-Adresse, an die [localhost] gebunden werden soll
  • -i Verzeichnisindexseiten anzeigen [True]
  • -s oder --silent Der Silent-Modus meldet sich nicht an der Konsole an
  • -h oder --help Zeigt die Hilfemeldung an und beendet den Vorgang

Um das aktuelle Verzeichnis auf Port 8000 bereitzustellen, geben Sie Folgendes ein:

http-server -p 8000
370
Drew Noakes

Ich empfehle: Twisted ( http://twistedmatrix.com )

eine ereignisgesteuerte Netzwerk-Engine, die in Python geschrieben und unter der Open-Source-Lizenz MIT lizenziert ist.

Es ist plattformübergreifend und wird seit 10.5 unter OS X vorinstalliert. Unter anderem können Sie im aktuellen Verzeichnis einen einfachen Webserver starten mit:

twistd -no web --path=.

Einzelheiten

Erklärung der Optionen (siehe twistd --help für mehr):

-n, --nodaemon       don't daemonize, don't use default umask of 0077
-o, --no_save        do not save state on shutdown

"web" ist ein Befehl, der einen einfachen Webserver auf der Twisted-Async-Engine ausführt. Es akzeptiert auch Befehlszeilenoptionen (nach dem Befehl "web" - siehe twistd web --help für weitere Informationen):

  --path=             <path> is either a specific file or a directory to be
                      set as the root of the web server. Use this if you
                      have a directory full of HTML, cgi, php3, epy, or rpy
                      files or any other files that you want to be served up
                      raw.

Es gibt auch eine Reihe weiterer Befehle wie:

conch            A Conch SSH service.
dns              A domain name server.
ftp              An FTP server.
inetd            An inetd(8) replacement.
mail             An email service
... etc

Installation

Ubuntu

Sudo apt-get install python-twisted-web (or python-twisted for the full engine)

Mac OS-X (wird seit 10.5 vorinstalliert oder ist in MacPorts verfügbar)

Sudo port install py-twisted

Windows

installer available for download at http://twistedmatrix.com/

HTTPS

Twisted kann auch Sicherheitszertifikate verwenden, um die Verbindung zu verschlüsseln. Verwenden Sie dies mit Ihren vorhandenen Optionen --path und --port (für einfaches HTTP).

twistd -no web -c cert.pem -k privkey.pem --https=4433
98
Peter Gibson

go 1.0 enthält einen http-Server & util zum Bereitstellen von Dateien mit einigen Codezeilen.

package main

import (
    "fmt"; "log"; "net/http"
)

func main() {
    fmt.Println("Serving files in the current directory on port 8080")
    http.Handle("/", http.FileServer(http.Dir(".")))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

Führen Sie diese Quelle mit go run myserver.go aus oder erstellen Sie eine ausführbare Datei go build myserver.go.

25
pd40

Versuchen Sie webfs , es ist winzig und hängt nicht von der Installation einer Plattform wie node.js oder Python ab.

19
Hudon

Wenn Sie Mercurial verwenden, können Sie den integrierten HTTP-Server verwenden. In dem Ordner, den Sie servieren möchten:

hg serve

Von den Dokumenten :

export the repository via HTTP

    Start a local HTTP repository browser and pull server.

    By default, the server logs accesses to stdout and errors to
    stderr. Use the "-A" and "-E" options to log to files.

options:

 -A --accesslog       name of access log file to write to
 -d --daemon          run server in background
    --daemon-pipefds  used internally by daemon mode
 -E --errorlog        name of error log file to write to
 -p --port            port to listen on (default: 8000)
 -a --address         address to listen on (default: all interfaces)
    --prefix          prefix path to serve from (default: server root)
 -n --name            name to show in web pages (default: working dir)
    --webdir-conf     name of the webdir config file (serve more than one repo)
    --pid-file        name of file to write process ID to
    --stdio           for remote clients
 -t --templates       web templates to use
    --style           template style to use
 -6 --ipv6            use IPv6 in addition to IPv4
    --certificate     SSL certificate file

use "hg -v help serve" to show global options
14
Drew Noakes

Hier ist ein anderes. Es ist eine Chrome-Erweiterung

Nach der Installation können Sie es ausführen, indem Sie in Chrome eine neue Registerkarte erstellen und oben links auf die Schaltfläche apps klicken

Es hat eine einfache gui. Klicken Sie auf Ordner auswählen und anschließend auf den Link http://127.0.0.1:8887

 enter image description here

https://www.youtube.com/watch?v=AK6swHiPtew

9
gman

Betrachten Sie auch devd einen kleinen Webserver, der in go geschrieben ist. Binaries für viele Plattformen stehen zur Verfügung hier

devd -ol path/to/files/to/serve

Es ist klein, schnell und bietet einige interessante optionale Funktionen, z. B. Live-Laden, wenn sich Ihre Dateien ändern.

6
gman

Ich fand python -m http.server unzuverlässig - einige Antworten würden Sekunden dauern.

Jetzt benutze ich einen Server namens Ran https://github.com/m3ng9i/ran

Ran: ein einfacher statischer Webserver, der in Go geschrieben ist

5
Colonel Panic

gib polpetta einen Versuch ...

npm install -g polpetta

dann kannst du 

polpetta ~/ordner

und du bist bereit zu gehen :-)

4

Ich mag Live-Server . Es ist schnell und verfügt über eine Nice Live-Nachladefunktion, die während der Entwicklung sehr praktisch ist.

Die Verwendung ist sehr einfach:

cd ~/Sites/
live-server

Standardmäßig wird ein Server mit IP 127.0.0.1 und Port 8080 erstellt.

http://127.0.0.1:8080/

Wenn Port 8080 nicht frei ist, wird ein anderer Port verwendet:

http://127.0.0.1:52749/

http://127.0.0.1:52858/

Wenn Sie den Webserver auf anderen Computern in Ihrem lokalen Netzwerk anzeigen müssen, können Sie Ihre IP-Adresse überprüfen und Folgendes verwenden:

live-server --Host=192.168.1.121

Und hier ist ein Skript, das automatisch die IP-Adresse der Standardschnittstelle übernimmt. Es funktioniert nur unter macOS.

Wenn Sie es in .bash_profile eingeben, startet der Befehl live-server den Server automatisch mit der richtigen IP-Adresse.

# **
# Get IP address of default interface
# *
function getIPofDefaultInterface()
{
    local  __resultvar=$1

    # Get default route interface
    if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
    if [ -n "$if" ]; then
            # Get IP of the default route interface
            local __IP=$( ipconfig getifaddr $if )
            eval $__resultvar="'$__IP'"
    else
        # Echo "No default route found"
        eval $__resultvar="'0.0.0.0'"
    fi
}

alias getIP='getIPofDefaultInterface IP; echo $IP'

# **
# live-server
# https://www.npmjs.com/package/live-server
# *
alias live-server='getIPofDefaultInterface IP && live-server --Host=$IP'
0
nico

Servez als Server verwenden

  1. Servez herunterladen
  2. Installieren Sie es, führen Sie es aus
  3. Wählen Sie den Ordner aus, der geliefert werden soll
  4. Wähle "Start"
  5. Gehe zu http://localhost:8080 oder wähle "Browser starten"

servez

Hinweis: Ich habe dies zusammengeworfen, weil Web Server für Chrome nicht mehr zur Verfügung steht, da Chrome die Unterstützung für Apps aufhebt und weil ich Kunststudenten unterstütze, die über keinerlei Erfahrung mit der Befehlszeile verfügen

0
gman