Cuando queremos levantar, de forma rápida, un servidor web y no queremos instalar Apache o Nginx porque, por ejemplo, es para compartir algunos archivos, la manera más eficaz es usar Python.
Con un simple comando tendremos y estaremos ejecutando un servidor http teniendo como directorio base el mismo en el que lo estemos invocando.
Si estamos en:
user@servidor:~/scripts/logs$
y ejecutamos:
sudo python3 -m http.server 80
tendremos levanto, así de fácil y rápido un servidor http al cual podremos acceder desdde un navegador cualquiera escribiendo en la URL:
http://la_IP_del_servidor
Si por algún motivo no tenemos credenciales de administrador y no podemos usar sudo
, podremos usarlo especificando otro puerto diferente al 80.
python3 -m http.server 900 # en el ejemplo se asigna el puerto 900
Obviamente el puerto tiene que estar libre y, si existe un cortafuegos, el puerto tiene que estar abierto.
A partir de este momento si queremos descargar un archivo podremos hacerlo con el navegador y el botón derecho del ratón o si preferimos la línea de comandos en la terminal podremos usar las herramientas wget
o curl
.
Opciones de un servidor http Python
Este servidor es muy básico pero nos permite algunas opciones.
Especificar la interfaz de red
Por defecto, http.server
escucha en todas las interfaces de red (0.0.0.0
) pero podemos restringirlo a una única interfaz específica (por ejemplo, solo localhost):
sudo python3 -m http.server 80 --bind 127.0.0.1
Cambiar el directorio base
El directorio por defecto del servidor http es desde el directorio que lo invocamos aunque podemos cambiar desde el cual el servidor servirá los archivos utilizando --directory
.
sudo python3 -m http.server 80 --directory /ruta/al/directorio
Usar cgi-bin
También podemos usar http.server
para ejecutar scripts CGI (Common Gateway Interface) con la opción --cgi
. Esto requerirá que los scripts estén en un directorio llamado cgi-bin
.
sudo python3 -m http.server 80 --cgi
Si necesitas más funcionalidades, se le puede facilitar una clase de servidor personalizada que deberá estar programada en Pyhton creando una subclase personalizada de http.server.SimpleHTTPRequestHandler
y usarla con http.server
.
Si aún necesitas otras funcionalidades tendrás que instalar Apache o Nginx.