Instalación de API en Apache y Demonización

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

Introducción

En esta sección, se explicará cómo crear un programa básico ("hola mundo") en una determinada API, luego se describirá los pasos necesarios para dejar corriendo dicha aplicación como un demonio (servicio de linux).

Contenido

Instalación de Apache y WSGI

Introducción

Algunas APIS como Flask, incluyen sus propios servicios que permiten correr la página Web creada, pero en realidad, estos servicios son muy básicos; por lo que están orientados más que nada para hacer pruebas y debugs de errores.

Apache es el que permitirá cargar las páginas Webs con un gran soporte de conexiones y de forma definitiva. Por otra parte, WSGI, es el encargado de dejar a la aplicación realizada funcionando como un servicio en Linux.

Manos a la obra

  • Primero, instalamos apache:
dnf install httpd
  • Luego, continuamos con WSGI
dnf install mod_wsgi

Sobre API

En el curso, se emplearon distintas APIS tales como Ruby on Rails, Django, Flask, etc. En lo que sigue se irá profundizando poco a poco respecto a las distintas APIS, a medida que más compañeros de otros grupos comiencen a aportar.

Flask

Python es uno de los lenguajes más utilizados en la actualidad, tanto para scripting como para desarrollo web. En éste artículo te presentamos una herramienta que vas a amar si eres un desarrollador web y te gusta el minimalismo.

¿Cuál podría ser uno de los aspectos interesantes de Flask?

Utiliza un esquema de ruta, muy sencillo. Además, Flask soporta el uso de cookies seguras y se apoya en el motor de plantillas Jinja2, otra creación hermosa de Ronacher que es simplemente genial para renderizar vistas y respuestas. [1]

Instalación

Es necesario instalar python y luego Flask como sigue:

dnf install python
dnf install python-flask


Con esto, ¡Ya podemos crear nuestra primera aplicación en Flask!

Hola mundo

Un ejemplo sencillo:

 ---- hello_world.py ---- 
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hola mundo"} if __name__ == "__main__": app.run()

Para ejecutar este archivo y probarlo, basta con ejecutarlo desde python, de la siguiente manera:

python ruta_al_archivo_fuente/hello_world.py

Con lo cual, podrá verse en el navegador, por defecto en:

 http://localhost:5000/

Para cambiar esto, es posible en la aplicación indicar la ip pública donde se ejecutará y el puerto deseado, esto se hace en los argumentos de app.run. Por ejemplo:

if __name__ == '__main__':
	app.run(
		host="10.10.15.223",
		use_reloader=True,
		port=80,
		debug=True
	)

Con lo anterior, estamos indicando a la aplicación, que en lugar de mostrarse en localhost, sea visible públicamente. (Es útil para probar la aplicación desde la casa, vía tunnel SSH [2] ).
Algunos comentarios:

  • La línea use_reloades, permite hacer cambios en caliente en la aplicación (cuyos resultados se ven directamente en la página mostrada, sin iniciar el código nuevamente)
  • debug, simplemente habilita el depurador de errores.
Demonización y Virtual Host

Ahora, trasladamos la ejecución de la aplicación a un proceso. La tarea, se la llevará WSGI (previamente instalado).

Para esto, creamos un archivo en python que contenga la llamada a la aplicación. Este puede estar en el mismo directorio en donde está el código hello_world.py.

Creamos, entonces el siguiente archivo:

--- wsgi.py ---

import sys
sys.path.insert( 0, "/var/www/directorio_tu_aplicacion" )
from Aplicacion import hello_world as application

Ahora, tenemos que crear un archivo de configuración para Virtual Host:

  • Vamos a la carpeta, /etc/httpd/conf.d y creamos por ejemplo: nombre_equipo.conf
  • Editamos dicho archivo.

Un ejemplo de esto, es el siguiente:

---nombre_equipo.conf---

<VirtualHost *:80>
	ServerAdmin aescarat@alumnos.usm.cl
	DocumentRoot /var/www/html
	ServerName 10.10.15.223
	ServerAlias tsc-7.labcomp.cl kaz.labcomp.cl
	ErrorLog logs/tsc-error.log 
	CustomLog logs/tsc-access.log common
	SSLEngine on
	WSGIScriptAlias / /var/www/directorio_tu_aplicacion/wsgi.py
</VirtualHost>

<Directory /var/www/directorio_tu_aplicacion>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Programa Corriendo como Demonio

Ahora, que ya tenemos todo configurado, es necesario ir al programa python creado, en este caso a hello_world.py y comentar o eliminar los siguientes argumentos dentro de app.run: host y port. Puesto que ahora esta es tarea de Apache.
Con lo anterior, tan solo tenemos que recargar el servicio de Apache y ya veremos nuestra aplicación corriendo.

 systemctl restart httpd.service 

Referencias

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas