Ejecute un servidor web desde cualquier directorio

9

Estoy escribiendo un sitio web pequeño, pero NO quiero descubrir cómo instalar y configurar la pila LAMP completa para probar el sitio web desde mi ~/homedirectorio. Eso será completamente disruptivo e innecesario.

Todo lo que quiero es tener un directorio, por ejemplo, ~/home/Documents/Websitey ejecutar un pequeño servidor web desde esa carpeta como la carpeta "home" del sitio web.

Sé que Jekyll puede hacer algo similar, pero solo parece funcionar con sitios basados ​​en Ruby / Jekyll que construye y configura.

¿No hay algún pequeño programa de servidor web que pueda instalar fácilmente y luego simplemente ejecutar?

Por ejemplo, si solo necesitara ejecutar algo como, por ejemplo, simple-server serve ~/home/Documents/Websitedesde una línea de comandos y luego navegar a, por ejemplo, localhost:4000o lo que sea para probar el sitio, sería perfecto.

Si esto ya es posible en Ubuntu y simplemente no sé cómo, házmelo saber.

etsnyman
fuente
¿Qué tipo de archivo tienes php pythono simple html?
Dan
@ dan08 Por el momento, simplemente htmly css. Es posible que desee agregar NodeJSen el futuro, pero luego tendré una configuración diferente.
etsnyman
Por lo tanto, simplemente puede abrirlos en su navegador web, no se requiere servidor.
Dan
¿Puedes aclarar tu pregunta? Es realmente mucho más fácil servir documentos desde / var / www / html que desde su directorio de inicio. De cualquier manera, instala Apache junto con mysql, php o cualquier otra cosa que pueda necesitar. Para usar / va / www / html, simplemente copie los archivos. Es más difícil configurar Apache para servir archivos desde su directorio de inicio, ya que debe habilitar los directorios de inicio o editar los archivos de configuración de apache. En ambas ubicaciones aún debe tener los directorios / archivos disponibles para www-data. No entiendo lo que te resulta tan difícil.
Panther
@ dan08 Existen limitaciones incapacitantes para servir desde una file://dirección en lugar de una http://dirección. Algunos enlaces y pequeños fragmentos de Javascript simplemente no funcionan.
etsnyman

Respuestas:

10

Si tiene instalado php, puede usar el servidor incorporado de php para ejecutar archivos html / css y / o php:

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

Como salida obtendrás:

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

La forma más simple que conozco es:

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

La salida del comando le dirá en qué puerto está escuchando (el valor predeterminado es 8000, creo). Ejecute python3 -m http.server --helppara ver qué opciones están disponibles.

Para más información:

  1. Documentación de Python sobre http.server
  2. Servidor HTTP simple (esto también menciona la python2sintaxis)
muru
fuente
¡Genio! ¡Gracias @muru! Por alguna razón, mi puerto 8000 está en uso (no puedo entender por qué) pero simplemente corrí python3 -m http.server 4000y luego navegué localhost:4000en Firefox y BAM. - ¡Mi sitio web está listo para ser probado! ¡Gracias!
etsnyman
2

Lo que quieres se llama servidor web estático . Hay muchas formas de lograr eso.

Está en la lista de servidores web estáticos

Una forma simple: guardar el script debajo como 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");

pon tu index.htmlen el mismo directorio y ejecuta

 node static_server.js
Kenn
fuente
+1 para la lista de servidores estáticos. Debo decir que la sangría de ese código parece muy extraña.
muru
0

Instale local-web-server , instala el wscomando que puede ejecutar para servir cualquier directorio como sitio estático.

Este clip muestra alojamiento estático más un par de formatos de salida de registro, devy stats.

Salida de registro estático estático

Lloyd
fuente