Esegui un server Web da qualsiasi directory


9

Sto scrivendo un piccolo sito Web, ma NON voglio capire come installare e configurare lo stack LAMP completo per testare il sito Web dalla mia ~/homedirectory. Sarà completamente dirompente e inutile.

Tutto quello che voglio è avere una directory, ad esempio ~/home/Documents/Websiteed eseguire un piccolo server Web da quella cartella come cartella "home" del sito web.

So che Jekyll può fare qualcosa di simile, ma sembra funzionare solo con siti basati su Ruby / Jekyll che costruisce e configura.

Non esiste un piccolo programma per server Web che posso installare facilmente e quindi eseguire semplicemente?

Ad esempio, se avessi solo bisogno di eseguire qualcosa come ad es. simple-server serve ~/home/Documents/WebsiteDa una riga di comando e poi navigare ad es. localhost:4000O qualsiasi altra cosa per testare il sito, sarebbe perfetto.

Se questo è già possibile in Ubuntu e non so proprio come, per favore fatemelo sapere.


Che tipo di file hai php pythono semplicemente html?
Dan,

@ dan08 Al momento, semplicemente htmle css. Potrei voler aggiungere NodeJSin futuro, ma poi avrò una configurazione diversa.
etsnyman,

Quindi puoi semplicemente aprire quelli nel tuo browser web, nessun server richiesto.
Dan,

Puoi chiarire la tua domanda? È davvero molto più semplice servire i documenti da / var / www / html che dalla directory home. In entrambi i casi, installa Apache insieme a mysql, php o qualsiasi altra cosa di cui potresti aver bisogno. Per usare / va / www / html è sufficiente copiare i file. È più complicato configurare Apache per pubblicare i file dalla tua home directory in quanto devi abilitare le home directory o modificare i file di configurazione di Apache. In entrambe le posizioni devi ancora avere le directory / i file disponibili per i dati www. Non capisco cosa trovi così difficile.
Pantera

@ dan08 Ci sono limitazioni paralizzanti alla pubblicazione da un file://indirizzo piuttosto che da un http://indirizzo. Alcuni link e piccoli frammenti Javascript semplicemente non funzionano.
etsnyman,

Risposte:


10

Se hai installato php puoi usare il server integrato php per eseguire i file html / css e / o php:

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

Come output otterrai:

Listening on localhost:8000
Document root is /path/to/your/app

12

Il modo più semplice che conosco è:

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

L'output del comando ti dirà su quale porta è in ascolto (il valore predefinito è 8000, credo). Esegui python3 -m http.server --helpper vedere quali opzioni sono disponibili.

Per maggiori informazioni:

  1. Documentazione di Python su http.server
  2. Server HTTP semplice (menziona anche la python2sintassi)

Genio! Grazie @muru! Per qualche ragione, la mia porta 8000 è in uso (non riesco a capire perché) ma ho appena eseguito python3 -m http.server 4000e poi navigato su localhost:4000Firefox e BAM! - il mio sito Web è pronto per essere testato! Grazie!
etsnyman,

2

Quello che vuoi è chiamato web server statico . Ci sono molti modi per ottenerlo.

Sono elencati i server Web statici

Un modo semplice: salva sotto lo script come 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");

metti il ​​tuo index.htmlnella stessa directory ed esegui

 node static_server.js

+1 per l'elenco dei server statici. Devo dire che il rientro di quel codice sembra molto strano.
muru,

0

Installa local-web-server , installa il wscomando che puoi eseguire per servire qualsiasi directory come sito statico.

Questa clip mostra l'hosting statico più un paio di formati di output del log - deve stats.

Uscita statica del registro

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.