Crear un servidor simple HTTP con Python. Ejecutar código py

¿Para qué querría yo montar un server web?

 

Tonteando con el servidor

Pues que no te lo creas!! Andaba con la cabeza en montar un servidor para servir unos templates html que me gustaron, entre otros archivos en mi red local, pero me daba pereza (como todo en esta vida) descargar e instalar apache o xampp en mi trasto. Investigando por ahí encontré que se puede montar con Python 3, y pues, aun no me lo creo!!

Vamos a ver como hacerlo porque estoy seguro que te podría ser de utilidad, ya sea para servir archivos a alguien o si estas creando una web en html para poder visualizarla sin tanto esfuerzo desde otro dispositivo. Entre otras miles de utilidades que se le podría dar a un servidor http!

 

 

 

Montando el servidor

 

1 – Creando el directorio root del servidor:

Como todo servidor web debe tener un directorio especifico donde alojar los archivos para esto debemos crear una carpeta en nuestro equipo, en mi caso estoy utilizando Debian, pero también es aplicable a Windows.

Creamos una carpeta en el escritorio por ejemplo llamada «pyrootwebserver» y dentro de ella vamos a alojar los archivos que queremos servir o mostrar, en mi caso voy a colocar una plantilla HTML que me descargue de w3schools y unos pdf!

 

2 – Up simple server! Levantamos el servidor:

 

Vamos desde la terminal o shell en el caso de windows hasta la carpeta que creamos (Mas abajo te  dejo mis clásicos gif si eres un novatillo de la vida), recuerda que para eso puedes utilizar el comando «cd» y una vez posicionados dentro de ella vamos a ejecutar el comando:

En Windows:

Python 2.7:

python -m SimpleHTTPServer [puerto]

Python 3:

python -m http.server [puerto]

En linux:

Python 2.7:

python -m SimpleHTTPServer [puerto]

Python 3:

python3 -m http.server [puerto]

 

Donde puerto es el puerto que deseas asignarle al servidor web, te recomiendo el puerto 80 o el 8080, ha y por cierto se coloca sin los corchetes!!.

Si todo va correctamente deberíamos ver el mensaje Serving HTTP on 0.0.0.0 port 80.. caso contrario deberás revisar dónde has cometido el error.

Luego accedemos desde nuestro navegador a la ip local (127.0.0.1), si usaste un puerto diferente al 80 debes especificarlo en la dirección del navegador seguido de dos puntos (:), por ejemplo (127.0.0.1:8080)

Si deseas que se pueda acceder desde otro dispositivo en tu red revisa la ip interna del ordenador donde levantaste el servidor en la configuración de tu router que lucirá algo así (192.168.1.222:80).

Si quieres acceder desde otro dispositivo remoto a tu servidor web recuerda que debes abrir los puertos del firewall o desde tu modem/router y podrás acceder a el a través de tu ip publica! Pero estas configuraciones varían según tu proveedor o modelo de router.

A continuación como es mi costumbre te dejo un gif 😉

 

Ejecutando código python desde el server:

 

Si vamos a ejecutar código de python del lado del servidor necesitaremos recurrir a un framework tipo Django o Flask. Para este caso vamos a utilizar Flask.

Python admite bibliotecas y marcos de terceros que podemos instalar desde un repositorio llamado PyPi, para esto existe PIP herramienta que se encargara de instalar los paquetes que nosotros le indiquemos, para esto debemos disponer de  PIP en Python. Para comprobar si lo tenemos instalado podemos hacerlo de la siguiente manera:

Abrimos el símbolo de sistema o la terminal, dependiendo nuestro sistema operativo y accedemos al interprete de python:

En Windows debes ir a la cmd que es el símbolo de sistema de windows!

Una vez hecho esto escribe “python” (sin las comillas) y deberías estar dentro del intérprete viendo el símbolo “>>>” que es el prompt de Python..

En Linux debes abrir un terminal y allí escribir “python3” sin las comillas, eso si has instalado la versión 3, de lo contrario solo escribe “Python”

Una vez dentro del interprete escribimos «import pip» y damos enter!. Si nos muestra el error » ImportError: No module named ‘pip’» quiere decir que no se encuentra instalado… Por el contrario si no nos muestra ningún error quiere decir que esta todo correcto así que salteate la instalación de pip!

¿Y sino como lo instalamos? 🙁

Instalando PIP

En Windows:

Debes ir a get-pip.py y descargar el archivo get-pip.py (para descargarlo das clic derecho en cualquier parte del sitio y das a guardar como.. o save as.. y lo guardas en alguna carpeta fácil de recordar y a la que te sea fácil acceder)

Luego navegas en la cmd hasta la carpeta donde lo guardaste o en la cmd escribes python y seguido el nombre del archivo py para ejecutarlo, sino puedes ver aquí como ejecutar archivos .py.

En linux:

En linux para evitar errores es mejor instalar el paquete como instalarías cualquier otro desde la terminal o consola por ejemplo:

Para Python 2.7:

sudo apt-get install python-pip

Para Python 3:

sudo apt-get install python3-pip

Este código dependerá de tu distribución de linux, lo instalas como cualquier paquete pero recuerda que depende la versión de Python que tienes instaladas usaras python o python3 en el comando.

Una vez instalado vuelves a probar en el interprete con un import pip.. Si todo esta correcto vamos a instalar flask:

Instalando Flask

Para instalar flask solo debemos ingresar en la terminal o consola del sistema pip install flask y todo debería ir como la seda!!

 

Una vez instalado flask debemos crear un archivo .py e importar flask para crear nuestra app, sitio o lo que sea que queramos hacer…

Dentro del archivo .py colocamos este código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# pythones.net

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return ("visita https://pythones.net!")

if __name__ == "__main__":
    app.run()

Guardamos el archivo .py y lo ejecutamos como lo haríamos habitualmente con cualquier archivo .py y luego debemos acceder a la dirección que flask nos provee en la consola (127.0.0.1:5000) y voila!! Estamos ejecutando código python usando nuestro navegador como intérprete!

Aqui te dejo el tradicional gif para que lo veas en acción!!

servidor

Adiooos!Y esto ha sido todo mi querido lector!! Espero te haya servido y si tienes algún problema no dudes en consultarme!!

 

 

 

 

 

Compartir es agradecer! :)

7 comentarios en “Crear un servidor simple HTTP con Python. Ejecutar código py”

  1. Aleksandr Vöskerān

    Tengo un problema, cuando voy a montar el servidor me da un error: «UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa6 in position 0: invalid start byte»

    1. Hola Aleksandr parece un problema de caracteres! Estás añadiendo algún carácter que el interprete no puede procesar!. De todas maneras puedes probar a ignorar estos errores, el carácter que da el error simplemente no se va a mostrar:
      with open(path, encoding="utf8", errors='ignore') as f:

      Referencia: https://docs.python.org/3/h

      También puedes usar Try, except para manejar este error y reemplazar caracteres!. Saludos

  2. hola imagino que solucionaste el error pero igual te respondo para que quede como referencia a quien se le presente el mismo problema, para instalar flask debes poner este nombre con la primera letra mayúscula ejem: «pip3 Install Flask» o «pie install Flask» el que te corresponda acorde a tu versión de Python o sistema operativo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.