2010-09-26 11 views
38

¿Hay un pequeño servidor web que pueda invocar desde la línea de comandos que solo recupera archivos del sistema de archivos local y los sirve a través de HTTP en un puerto específico?"Servidor web Ad-hoc" para archivos estáticos en UNIX/MacOSX?

Me gustaría ser capaz de hacer algo como esto:

$ cd ~/Sites/mysite 
$ serve . 10.0.1.1 8080 

Esto debe encender un servidor web que escucha en 10.0.1.1:8080 y sirve archivos del directorio actual ("") - No PHP, ASP o cualquiera de los necesarios.

Cualquier sugerencia muy apreciada.

Respuesta

67

Si ha instalado Python:

$ python -m SimpleHTTPServer 
Serving HTTP on 0.0.0.0 port 8000 ... 
+1

No estoy seguro, pero es Python no es parte del sistema central, es decir, siempre está instalado (bueno, al menos para Mac OS X 10.5+, ¿creo, quizás incluso antes)? – Archimedix

+0

¡Perfecto! ¡Muchas gracias! – philippbosch

+0

No lo es, pero no dijo que tenía que ser parte del sistema central. Además, muchos linux vienen con python instalado donde funcionará este comando. –

5

$ python -m SimpleHTTPServer [port]

se iniciará un servidor web en el directorio actual que sirve aquellos ficheros se encuentran allí.

En algunos casos esto no funcionará bien, por ejemplo, el servidor es de un solo subproceso (por lo que no hay descargas simultáneas) y no maneja solicitudes de rango de bytes (clientes que esperan Rango: el soporte a menudo falla gravemente).

2

Apache HTTPD está integrado en Mac OS X; solo tiene que activar 'Compartir en la web' en las Preferencias de uso compartido.

Para que funcione también en el puerto 8080, deberá agregar alguna configuración. Consulte este article on Serverfault para ver el punto de inicio.

+0

Apache puede ser 'más pesado 'que el OP estaba buscando, pero es la forma más sencilla de hacerlo utilizando herramientas incorporadas, especialmente si sus archivos están en la ruta ~/Sites. – JulesLt

+0

Define "más simple".Para mí, aunque ya estoy en el directorio del que me gustaría prescindir, la ejecución de la línea de python antes mencionada es mucho más sencilla que ir a las Preferencias del Sistema OS X, Compartir, ... – dmkc

+0

@dmkc Para jugar al abogado del diablo, se lanza apache por 'launchctl' en el arranque y así lo configura una vez y siempre está activo. No es necesario un comando o una ventana de terminal bloqueada. – srquinn

2

python3 puede servir el directorio actual a través de HTTP utilizando http.server:

$ python3 -m http.server 

Dónde

  • python3 la versión actual del pitón
  • -m representa módulo
  • http el paquete http
  • http.server el módulo de servidor (del paquete http)

Por defecto, http.server escucha en el puerto 8000, pero se puede especificar otro como esto:

$ python3 -m http.server 8080 
Cuestiones relacionadas