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.
- 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.
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:
1 |
python --version |
Nos devolverá algo así como: Python 3.9.12.
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:
1 |
python3 -m http.server |
Se iniciará un servicio HTTP por el puerto 8000 que permanecerá a la escucha de peticiones HTTP por dicho puerto:
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:
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:
1 |
nano /home/kali/Desktop/prueba.html |
Añadiendo cualquier contenido, por ejemplo:
1 2 3 |
<h1>Prueba - Servidor Web - ProyectoA</h1> <p>Esto es una prueba de servidor web con Python en Linux</p> <p>Más información en <a href="https://www.proyectoa.com">ProyectoA</a></p> |
Guardaremos los cambios pulsando Control + O y cerraremos con Control + X.
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:
1 |
wget http://127.0.0.1/prueba.html |
Si el servidor web está correctamente iniciado, se descargará el fichero «prueba.html». Con el siguiente comando podremos ver su contenido:
1 |
cat /home/kali/Desktop/prueba.html |
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:
Pulsando en «prueba.html» nos mostrará la página web creada anteriormente:
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:
1 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
Ahora sí aparecerán las tildes/acentos/eñes: