Wie starte ich einfach einen Webserver in einem beliebigen Ordner?

115

Ich suche nach einer relativ einfachen Möglichkeit, einen Webserver mit einem Dokumentenstamm in einem von mir angegebenen Ordner (oder noch besser, wo ich ihn starte) zu starten.

Ich probiere oft neue Dinge wie JS-Frameworks oder ähnliches in einem neuen Ordner hier aus:

/home/alexander/code/angularjs/

Es wäre dann bequem, einfach in dieses Verzeichnis zu gehen und etwas einzugeben wie:

start-webserver-here 

Damit beginnt ein Webserver, Port 80 abzuhören und dieses Verzeichnis zu bedienen, und ich kann ausprobieren, woran ich gerade arbeite.

Ich habe XAMPP installiert, aber es scheint, dass es sich um einen grundlegenden Apache mit einem Dokumentenstamm handelt, den ich ändern müsste, sogar mit Stammberechtigungen, zusammen mit der Erteilung von Berechtigungen für jeden Ordner usw.

Gibt es einen einfacheren Weg?

Alexander Rechsteiner
quelle
Jemand hat eine große Liste von Einzeiler zusammengestellt, um dies zu erreichen: gist.github.com/willurd/5720255
Abhinav Bhatia

Antworten:

174

Verwenden

python2 -m SimpleHTTPServer 80

oder

python3 -m http.server 80

einen einfachen HTTP-Server zu starten.

Ersetzen 80Sie diese durch eine andere Nummer, wenn Sie möchten, dass sie an einem anderen Port empfangsbereit ist. Für Ports <1024 muss es mit Root-Rechten ausgeführt werden.

Florian Diesch
quelle
1
Genau das habe ich gesucht! Danke!
Alexander Rechsteiner
1
Können Sie dies parallel zu Apache ausführen? Natürlich auf einem anderen Port (obwohl ich Sie begrüßen würde, wenn Sie mir sagen würden, dass sie die gleichen Ports verwenden können).
Dibs
3
@dibs Ja, beide können parallel laufen. Aber nein, nicht am selben Port.
Dan
11
Das Python 3.x-Äquivalent dazu istpython3 -m http.server
Stefano Palazzo
1
Deshalb liebe ich Stackoverflow so sehr. Kam auf der Suche nach dem genauen Problem, für das ich eine Lösung finden wollte, um ... Angularjs von einem Webserver auszuführen. Vielen Dank Florian Deisch
SK176H
24

Ich benutze auch gerne PHP für diesen Zweck, da ich so Dinge wie WordPress im laufenden Betrieb ausführen und Themen einfacher entwickeln kann (Sie benötigen jedoch immer noch MySQL):

php -S 0.0.0.0:8000

In demselben Skript , das dies startet, starte ich auch guard , das den Browser beim Ändern von Dateien automatisch aktualisiert.

Metakermit
quelle
2
Beachten Sie, dass die integrierte Serverfunktion in 5.4.0
sierrasdetandil
Ja, Sie benötigen eine neuere Version. Die Version in den 13.10-Repos sudo apt-get install php5ist 5.5.3, Sie sollten also in Ordnung sein.
Metakermit
Perfekt ! Genau das, wonach ich gesucht habe!
Prakash Raman
17

Wenn Sie mehr auf Rubin bedacht sind, ist der Aufschlag- Edelstein großartig

serve

oder für einen anderen Port:

serve 9000

installieren mit gem install serve

will-ob
quelle
Dies funktioniert gut, aber es erfordert Ruby> = 1.9.3
Valerio Schiavoni
Ja, aber auch 1.9.3 ist eol . Sicherheitspatches werden nicht mehr zurückportiert. Würde rvm für die Verwaltung älterer Rubine empfehlen . Sie sollten nicht die Standardeinstellung Ihres Systems sein
will-ob
13

Dies ist auch in Ruby möglich, ohne einen Edelstein zu installieren.

ruby -run -e httpd . -p5000

Stahlseelen
quelle
Hat bei mir nicht funktioniert. Welche Version von Ruby hast du probiert?
Valerio Schiavoni
Funktioniert wie angekündigt mit Ruby 2.5.1.
Raphael
6

Verwenden http-serverSie einfach , es ist ein Null-Konfigurationsbefehlszeilenserver.

Der einfachste Weg, es zu installieren, ist über npm:

sudo npm install http-server -g

Verwendungszweck:

http-server [path] [options]

[path]Standardmäßig ./publicist dies der Fall, wenn der Ordner vorhanden ist, ./andernfalls.

Um Ihren Server in Aktion zu sehen, besuchen Sie http: // localhost: 8080 . Verwenden Sie die -pOption, um einen anderen Port einzustellen.

Weitere Optionen finden Sie unter: https://www.npmjs.com/package/http-server .

Luis Ma
quelle
Der einzige Grund, warum Sie dies nicht verwenden sollten, ist, dass dafür eine nicht nativ installierte Drehzahl erforderlich ist. Die anderen Lösungen, die Ruby und Python erwähnen, sind auf fast jedem Betriebssystem vorinstalliert, sodass mit der Installation des Befehls zum Ausführen des Servers keine Vorausset- zung verbunden ist.
Jamescampbell
3

Da der Name Ihres Ordners eckige Js enthält, scheint es sich um eine eckige Js-App zu handeln. In diesem Fall sollten Sie yeoman unbedingt überprüfen .

Um seine Website zu zitieren

Yeoman 1.0 ist mehr als nur ein Werkzeug. Es ist ein Workflow. Eine Sammlung von Tools und Best Practices, die harmonisch zusammenarbeiten, um die Entwicklung für das Web noch besser zu machen.

Eines von vielen anderen Dingen ist der gebündelte gruntServer.

mreq
quelle