Cómo habilitar un servidor web de forma rápida y sencilla usando Python en Linux. Desplegamos un sencillo servicio web por el puerto 8000 y probamos el acceso a dicho servidor, tanto desde el propio equipo como desde equipos de la red.

Requisitos para montar servidor web sencillo para pruebas con Python y Linux

En este caso usaremos un servidor/equipo con Kali Linux, pero el procedimiento es válido para cualquier distribución de Linux. En el siguiente artículo explicamos cómo desplegar una máquina virtual con Kali Linux:

También necesitaremos tener instalado Python3 en el equipo Linux. Python viene normalmente pre-instalado en casi todas las distribuciones de Linux. Para comprobar la versión de Python instalada, desde la línea de comandos, ejecutaremos el comando:

Nos devolverá algo así como: Python 3.9.12.

Requisitos para montar servidor web sencillo para pruebas con Python y Linux

En caso de no tener Python, podremos instalarlo siguiendo las instrucciones del siguiente artículo:

Desplegar servicio web sencillo en Linux con Python

Para desplegar un servicio web en Linux con Python, en primer lugar y muy importante, nos posicionaremos en la carpeta Desktop del usuario (o bien en otra que hayamos creado). Debemos hacer esto porque el servidor web Python listará vía web las subcarpetas y ficheros contenidos en la carpeta donde se ejecute. Por ejemplo, si accedemos la carpeta Desktop:

cd /home/kali/Desktop

Y lanzamos el servidor web con el siguiente comando:

Se iniciará un servicio HTTP por el puerto 8000 que permanecerá a la escucha de peticiones HTTP por dicho puerto:

Desplegar servicio web sencillo en Linux con Python

Y listará vía web las carpetas y ficheros contenidos en /home/kali/Desktop. En el caso de no querer listar información, crearemos una carpeta con mkdir /mi_carpeta, accederemos a ella con cd /mi_carpeta y ejecutaremos aquí el servicio web.

Nota importante: hay que tener en cuenta que cuando iniciamos el servidor web, por defecto, lista los directorios y ficheros desde donde se haya iniciado, vía web. Si tenemos abierto el puerto 8000 o bien si no tenemos habilitado el cortafuegos en Linux, los usuarios de la red podrán acceder desde sus navegadores a esta información.

Cuando se hagan peticiones al servidor web, nos mostrará en la consola el resultado de cada petición:

Desplegar servicio web sencillo en Linux con Python

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN

Como hemos ejecutado el servidor web desde la carpeta /home/kali/Desktop, para comprobar que el servicio web funciona correctamente, crearemos un fichero de texto HTML sencillo en el escritorio, con el comando:

Añadiendo cualquier contenido, por ejemplo:

Guardaremos los cambios pulsando Control + O y cerraremos con Control + X.

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN

Si abrimos una nueva ventana de terminal en Linux y ejecutamos este otro comando, verificaremos que el servidor web con Python está escuchando y funciona:

Si el servidor web está correctamente iniciado, se descargará el fichero «prueba.html». Con el siguiente comando podremos ver su contenido:

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN

Si tenemos abierto el puerto 8000 en el cortafuegos de Linux, el servidor web también será accesible desde equipos de la red, introduciendo en la URL del navegador la IP del equipo Linux y el puerto 8000:

http://ip_equipo_linux:8000

Nos mostrará los ficheros de la carpeta Desktop del usuario kali:

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN

Pulsando en «prueba.html» nos mostrará la página web creada anteriormente:

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN

Si queremos que aparezcan correctamente las tildes/acentos/eñes y demás caracteres, añadiremos la siguiente línea al principio del fichero prueba.html:

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN

Ahora sí aparecerán las tildes/acentos/eñes:

Probando servidor web Python en Linux tanto en el equipo local como desde equipos de la LAN