Uruchom serwer WWW z dowolnego katalogu

9

Piszę małą stronę internetową, ale NIE chcę wymyślić, jak zainstalować i skonfigurować kompletny stos LAMP do testowania strony z mojego ~/homekatalogu. To będzie całkowicie destrukcyjne i niepotrzebne.

Chcę tylko mieć katalog, np. ~/home/Documents/WebsiteI uruchomić z tego folderu mały serwer WWW jako folder „domowy” strony.

Wiem, że Jekyll może zrobić coś podobnego, ale wydaje się, że działa tylko z witrynami opartymi na Ruby / Jekyll, które buduje i konfiguruje.

Czy nie istnieje jakiś mały program serwera WWW, który można łatwo zainstalować, a następnie uruchomić w bardzo prosty sposób?

Na przykład, gdybym po prostu musiał uruchomić coś takiego jak np. simple-server serve ~/home/Documents/WebsiteZ wiersza poleceń, a następnie przejść do np. localhost:4000Lub cokolwiek, aby przetestować witrynę, byłoby idealnie.

Jeśli jest to już możliwe w Ubuntu i po prostu nie wiem jak, proszę dać mi znać.

etsnyman
źródło
Jakie masz pliki, php pythonczy zwykły html?
Dan
@ dan08 W tej chwili po prostu zwykły htmli css. Mogę chcieć dodać NodeJSw przyszłości, ale wtedy będę miał inną konfigurację.
etsnyman
Możesz więc po prostu otworzyć je w przeglądarce internetowej, nie wymaga to serwera.
Dan.
Czy możesz wyjaśnić swoje pytanie? Naprawdę o wiele łatwiej jest serwować dokumenty z / var / www / html, niż z katalogu domowego. Tak czy inaczej, zainstaluj Apache wraz z mysql, php lub czymkolwiek innym, czego możesz potrzebować. Aby użyć / va / www / html, po prostu skopiuj pliki. Konfiguracja Apache do obsługi plików z katalogu domowego wymaga więcej pracy, ponieważ musisz albo włączyć katalogi domowe, albo edytować pliki konfiguracyjne Apache. W obu lokalizacjach nadal musisz mieć katalogi / pliki dostępne dla danych www. Nie rozumiem, co jest dla ciebie takie trudne.
Panther
@ dan08 Istnieją paraliżujące ograniczenia w obsłudze z file://adresu, a nie http://adresu. Niektóre linki i małe fragmenty kodu JavaScript po prostu nie działają.
etsnyman

Odpowiedzi:

10

Jeśli masz zainstalowany php, możesz użyć wbudowanego serwera php do uruchomienia plików HTML / CSS i / lub PHP:

cd /path/to/your/app
php -S localhost:8000

Jako wynik otrzymasz:

Listening on localhost:8000
Document root is /path/to/your/app
burza
źródło
12

Najprostszy sposób, jaki znam:

cd /path/to/web-data
python3 -m http.server

Wyjście polecenia powie ci, na którym porcie nasłuchuje (domyślnie 8000, tak myślę). Uruchom, python3 -m http.server --helpaby zobaczyć, jakie opcje są dostępne.

Po więcej informacji:

  1. Dokumentacja Pythona na http.server
  2. Prosty serwer HTTP (wspomina również o python2składni)
muru
źródło
Geniusz! Dziękuję, @muru! Z jakiegoś powodu mój port 8000 jest w użyciu (nie wiem, dlaczego), ale właśnie uruchomiłem, python3 -m http.server 4000a następnie nawigowałem do localhost:4000Firefoksa i BAM! - moja strona jest gotowa do przetestowania! Dziękuję Ci!
etsnyman
2

To, co chcesz, nazywa się statycznym serwerem internetowym . Można to osiągnąć na wiele sposobów.

Jest na liście statycznych serwerów WWW

Jeden prosty sposób: zapisz poniżej skryptu jako static_server.js

   var http = require("http"),
     url = require("url"),
     path = require("path"),
     fs = require("fs")
     port = process.argv[2] || 8888;

 http.createServer(function(request, response) {

   var uri = url.parse(request.url).pathname
     , filename = path.join(process.cwd(), uri);

   path.exists(filename, function(exists) {
     if(!exists) {
       response.writeHead(404, {"Content-Type": "text/plain"});
       response.write("404 Not Found\n");
       response.end();
       return;
     }

     if (fs.statSync(filename).isDirectory()) filename += '/index.html';

     fs.readFile(filename, "binary", function(err, file) {
       if(err) {        
         response.writeHead(500, {"Content-Type": "text/plain"});
         response.write(err + "\n");
         response.end();
         return;
       }

       response.writeHead(200);
       response.write(file, "binary");
       response.end();
     });
   });
 }).listen(parseInt(port, 10));

 console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

umieść swój index.htmlw tym samym katalogu i uruchom

 node static_server.js
kenn
źródło
+1 za listę serwerów statycznych. Muszę powiedzieć, że wcięcie tego kodu wygląda bardzo dziwnie.
muru
0

Zainstaluj lokalny serwer WWW , instaluje wspolecenie, które możesz uruchomić, aby udostępnić dowolny katalog jako stronę statyczną.

Ten klip pokazuje statyczny hosting oraz kilka formatów wyjściowych dziennika - devi stats.

Dane wyjściowe statycznego dziennika statycznego

Lloyd
źródło