Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo construir una aplicación de «Hola Mundo» con Koa

marzo 4, 2020

 

Introducción

En esta guía, que será la creación de una aplicación Python simple usando el micro-marco frasco en Ubuntu 14.04. La mayor parte de este artículo será sobre cómo configurar el servidor de aplicaciones uWSGI para iniciar la aplicación y Nginx para actuar como un proxy inverso frontal.

Requisitos previos

Antes de comenzar con esta guía, usted debe tener un usuario no root configurada en el servidor. Este necesidades de los usuarios que tengan privilegios sudo para que pueda realizar funciones administrativas. Para aprender a configurar esto, siga nuestra guía de configuración inicial del servidor.

Para obtener más información sobre uWSGI, nuestro servidor de aplicaciones y la especificación WSGI, se puede leer la sección vinculada de esta guía. La comprensión de estos conceptos hará que esta guía fácil de seguir.

Cuando esté listo para continuar, sigue leyendo.

Instalar componentes de desde el primer paso repositorios de Ubuntu

Nuestra será la de instalar todas las piezas que necesitamos de los repositorios. Vamos a instalar PIP, el gestor de paquetes de Python, con el fin de instalar y administrar nuestros componentes Python. También vamos a obtener los archivos de desarrollo Python necesarios para construir uWSGI y vamos a instalar Nginx ahora también.

actualización de su índice de paquetes local y luego instalar los paquetes escribiendo:

sudo apt-get update
sudo apt-get install python-pip python-dev nginx

Crear un entorno virtual de Python

A continuación, vamos a configurar un entorno virtual con el fin de aislar nuestra aplicación Frasco de los otros archivos de Python en el sistema .

Lo primero es instalar el paquete virtualenv usando pip:

sudo pip install virtualenv

Ahora, podemos hacer un directorio principal para nuestro proyecto frasco. Entrar en el directorio después de crearlo:

mkdir ~/myproject
cd ~/myproject

podemos crear un entorno virtual para almacenar los requisitos del pitón de nuestro proyecto Frasco escribiendo:

virtualenv myprojectenv

Esto instalará una copia local de Python y pip en un directorio llamado myprojectenv dentro de su directorio del proyecto .

Antes de instalar aplicaciones en el entorno virtual, tenemos que activarlo. Puede hacerlo escribiendo:

source myprojectenv/bin/activate

el cambio entrará mensaje para indicar que está ahora operando dentro del entorno virtual. Se verá algo como esto (myprojectenv) user @ host: ~ / miproyecto $.

configurar una aplicación Frasco

Ahora que usted está en su entorno virtual, podemos instalar Frasco y uWSGI y empezar a trabajar en el diseño de nuestra aplicación:

Instalar Frasco y uWSGI

podemos utilizar la instancia local de pip para instalar frasco y uWSGI. Escriba los siguientes comandos para obtener estos dos componentes:

pip install uwsgi flask

Crear una aplicación de ejemplo

Ahora que tenemos Frasco disponibles, podemos crear una aplicación sencilla. Frasco es un micro-marco. No se incluyen muchas de las herramientas que los marcos más con todas las funciones podrían, y existe principalmente como un módulo que se puede importar en sus proyectos para ayudarle en la inicialización de una aplicación web.

Mientras que su aplicación podría ser más compleja, vamos a crear nuestra aplicación matraz en un solo archivo, que llamaremos myproject.py:

nano ~/myproject/myproject.py

Dentro de este archivo, colocaremos nuestro código de la aplicación. Básicamente, necesitamos frasco de importación y ejecutar un objeto frasco. Podemos usar esto para definir las funciones que se deben ejecutar cuando se solicita una ruta específica. Vamos a llamar a nuestra aplicación Frasco en la aplicación de código para reproducir los ejemplos que usted encontraría en la especificación WSGI:

from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
return "

Hello There!

"

if __name__ == "__main__":
application.run(host='0.0.0.0')

Esto define básicamente el contenido que se presente cuando se accede al dominio raíz. Guardar y cerrar el archivo cuando haya terminado.

Puede probar su aplicación Frasco escribiendo:

python myproject.py

Visita nombre de dominio del servidor o la dirección IP seguida por el número de puerto especificado en la salida del terminal (lo más probable: 5000) en su navegador web. Debería ver algo como esto:

application.run()

Guardar y cerrar el archivo cuando haya terminado.

Configurar uWSGI

Nuestra aplicación está escrita ahora y nuestro punto de entrada establecida. Ahora podemos pasar a uWSGI.

Prueba uWSGI Sirviendo

Lo primero que haremos es de prueba para asegurarse de que uWSGI puede servir a nuestra aplicación.

Podemos hacer esto simplemente pasándole el nombre de nuestro punto de entrada. También especificaremos el zócalo de forma que se iniciará en una interfaz a disposición del público y el protocolo para que se utilice HTTP en lugar del protocolo binario uwsgi:

uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi

Si visitas nombre de dominio del servidor o la dirección IP con: 8000 anexa al final de su navegador web, debería ver una página que tiene este aspecto:

Cuando haya confirmado que está funcionando correctamente, pulse CTRL-C en la ventana de terminal.

Cancelar Estamos hecho con nuestro entorno virtual, por lo que podemos desactivarlo:

deactivate

Cualquier operación de ahora se hará con el medio ambiente Python del sistema.

Creación de un archivo de configuración uWSGI

Hemos probado que uWSGI es capaz de servir a nuestra aplicación, pero queremos algo más robusto para uso a largo plazo. Podemos crear un archivo de configuración uWSGI con las opciones que queremos. el lugar de

Let que en nuestro directorio del proyecto y lo llaman myproject.ini:

nano ~/myproject/myproject.ini

el interior, que comenzará con la [uwsgi] cabecera para que uWSGI sabe para aplicar los ajustes. Especificaremos el módulo haciendo referencia a nuestro archivo wsgi.py, menos la extensión:

[uwsgi]
module = wsgi

A continuación, les diremos uWSGI para poner en marcha en modo maestro y desovan cinco procesos de trabajo para servir peticiones reales:

[uwsgi]
module = wsgi

master = true
processes = 5

Cuando estaban probando, expusimos uWSGI en un puerto de red. Sin embargo, vamos a utilizar Nginx para manejar las conexiones de clientes reales, que luego pasará a las solicitudes uWSGI. Dado que estos componentes están operando en el mismo equipo, se prefiere un socket de Unix, ya que es más seguro y más rápido. Vamos a llamar a la myproject.sock zócalo y la coloca en este directorio.

También tendrá que cambiar los permisos en el zócalo. Daremos la propiedad del grupo Nginx del proceso uWSGI más adelante, por lo que necesitamos para asegurarse de que el propietario del grupo de la toma sea capaz de leer la información de ella y escribir en él. También vamos a limpiar el enchufe cuando el proceso se detiene mediante la adición de la opción de “vacío”:

[uwsgi]
module = wsgi

master = true
processes = 5

socket = myproject.sock
chmod-socket = 660
vacuum = true

La última cosa que necesitamos hacer es establecer la opción de morir-en-plazo. Esto es necesario debido a que el sistema de inicio Upstart y uWSGI tienen diferentes ideas sobre lo que las diferentes señales de proceso debe significar. Al establecer esta alinea los dos componentes del sistema, la aplicación de la conducta que se espera:

[uwsgi]
module = wsgi

master = true
processes = 5

socket = myproject.sock
chmod-socket = 660
vacuum = true

die-on-term = true

Usted puede haber notado que no especificamos un protocolo como lo hicimos desde la línea de comandos. Esto es porque por defecto, uWSGI habla utilizando el protocolo uwsgi, un protocolo binario rápido diseñado para comunicarse con otros servidores. Nginx puede hablar este protocolo de forma nativa, por lo que es mejor usar esto que a la fuerza por la comunicación HTTP.

Cuando haya terminado, guardar y cerrar el archivo.

Crear una secuencia de comandos Upstart

La siguiente pieza que necesitamos cuidar es el guión Upstart. Creación de un guión Upstart permitirá sistema de inicio de Ubuntu para iniciar automáticamente uWSGI y servir a nuestra aplicación frasco cada vez que el servidor se inicia.

Crear un archivo de script que termina con .conf en el directorio / etc / init para comenzar:

sudo nano /etc/init/myproject.conf

el interior, vamos a empezar con una simple descripción del propósito de la secuencia de comandos. Inmediatamente después, vamos a definir las condiciones en que se inicia y se detiene por el sistema de este script. Los números normales de tiempo de ejecución del sistema son 2, 3, 4 y 5, por lo que diremos que se inicie el script cuando el sistema alcanza uno de estos niveles de ejecución. Le diremos que se detenga en cualquier otro nivel de ejecución (por ejemplo, cuando el servidor se reinicia, el cierre, o en modo de un solo usuario):

description "uWSGI server instance configured to serve myproject"

start on runlevel [2345]
stop on runlevel [!2345]

continuación, tenemos que definir el usuario y grupo que uWSGI se debe ejecutar como . Nuestros archivos de proyecto son propiedad de nuestra propia cuenta de usuario, por lo que vamos a fijarnos como el usuario para funcionar. El servidor Nginx se ejecuta en el grupo www-data. Necesitamos Nginx a ser capaz de leer y escribir en el fichero de un conector, por lo que vamos a dar esta propiedad de grupo sobre el proceso:

description "uWSGI server instance configured to serve myproject"

start on runlevel [2345]
stop on runlevel [!2345]

setuid user
setgid www-data

A continuación, tenemos que configurar el proceso para que se pueda encontrar correctamente nuestros archivos y procesos ellos. Hemos instalado todos nuestros componentes Python en un entorno virtual, por lo que necesitamos para establecer una variable ambiental con esto como nuestro camino. También necesitamos un cambio en nuestro directorio del proyecto. Después, podemos llamar simplemente el ejecutable uWSGI y pasarlo el fichero de configuración escribimos:

description "uWSGI server instance configured to serve myproject"

start on runlevel [2345]
stop on runlevel [!2345]

setuid user
setgid www-data

env PATH=/home/user/myproject/myprojectenv/bin
chdir /home/user/myproject
exec uwsgi --ini myproject.ini

Guardar y cerrar el archivo cuando haya terminado.

Puede comenzar el proceso inmediatamente al escribir:

sudo start myproject

Configuración de proxy Nginx a Pide

servidor de aplicaciones Nuestro uWSGI ahora debería estar en funcionamiento, a la espera de peticiones en el archivo de socket en el directorio del proyecto. Tenemos que configurar Nginx para pasar las peticiones web a ese socket usando el protocolo uwsgi.

Comience por crear un nuevo archivo de configuración del servidor de bloque en el directorio sites-available de Nginx. Vamos a simplemente llamamos a este miproyecto para mantenerse en línea con el resto de la guía:

sudo nano /etc
ginx/sites-available/myproject

abrir un bloque de servidor y decimos Nginx para escuchar en el puerto por defecto 80. También hay que decir que para utilizar este bloque de solicitudes de El nombre de nuestro servidor de dominio o dirección IP:

server {
listen 80;
server_name server_domain_or_IP;
}

La única otra cosa que hay que añadir es un bloque de ubicación que coincida con cada petición. Dentro de este bloque, incluiremos el archivo uwsgi_params que especifica algunos parámetros generales que uWSGI necesidad de establecer. a continuación, vamos a pasar las peticiones a la toma definimos usando la directiva uwsgi_pass:

server {
listen 80;
server_name server_domain_or_IP;

location / {
include uwsgi_params;
uwsgi_pass unix:/home/user/myproject/myproject.sock;
}
}

que en realidad es todo lo que necesitan para servir a nuestra aplicación. Guardar y cerrar el archivo cuando haya terminado.

Para habilitar la configuración del servidor Nginx bloque que acabamos de crear, vincular el archivo en el directorio sites-enabled:

sudo ln -s /etc
ginx/sites-available/myproject /etc
ginx/sites-enabled

Con el archivo en ese directorio, podemos probar los errores de sintaxis escribiendo:

sudo nginx -t

si devuelve sin indicar ningún problema, podemos reiniciar el proceso de Nginx para leer el nuestro nuevo config:

sudo service nginx restart

ahora debería ser capaz de ir a nombre de dominio del servidor o la dirección IP en el navegador web y ver su aplicación:

Conclusión

En esta guía, hemos creado una aplicación sencilla frasco dentro de un entorno virtual de Python. Creamos un punto de entrada WSGI para que cualquier servidor de aplicaciones WSGI con capacidad puede interactuar con él, y luego configurar el servidor de aplicaciones uWSGI para proporcionar esta función. Posteriormente, creamos un script Upstart para iniciar automáticamente el servidor de aplicaciones en el arranque. Hemos creado un bloque de servidor Nginx que pasa el tráfico del cliente Web al servidor de aplicaciones, la transmisión de solicitudes externas.

frasco es un marco muy simple, pero extremadamente flexible destinado a proporcionar sus aplicaciones con funcionalidad sin ser demasiado restrictiva sobre la estructura y el diseño. Puede utilizar la pila general descrito en esta guía para servir a las aplicaciones que se diseñan frasco.