Despliegue en producción

Esta parte del tutorial asume que tienes un servidor en el que quieres desplegar tu aplicación. Da una visión general de cómo crear el archivo de distribución e instalarlo, pero no entra en detalles sobre qué servidor o software utilizar. Puedes configurar un nuevo entorno en tu ordenador de desarrollo para probar las instrucciones de abajo, pero probablemente no deberías usarlo para alojar una aplicación pública real. Vea Despliegue en producción para una lista de diferentes maneras de alojar su aplicación.

Construir e instalar

When you want to deploy your application elsewhere, you build a wheel (.whl) file. Install and use the build tool to do this.

$ pip install build
$ python -m build --wheel

Puedes encontrar el archivo en dist/flaskr-1.0.0-py3-none-any.whl. El nombre del archivo tiene el formato de {nombre del proyecto}-{versión}-{etiqueta python} -{etiqueta abi}-{etiqueta de plataforma}.

Copie este archivo a otra máquina, configure un nuevo virtualenv, luego instale el archivo con pip.

$ pip install flaskr-1.0.0-py3-none-any.whl

Pip instalará su proyecto junto con sus dependencias.

Como se trata de una máquina diferente, es necesario ejecutar init-db de nuevo para crear la base de datos en la carpeta de la instancia.

$ flask --app flaskr init-db

When Flask detects that it’s installed (not in editable mode), it uses a different directory for the instance folder. You can find it at .venv/var/flaskr-instance instead.

Configurar la clave secreta

Al principio del tutorial que dio un valor por defecto para SECRET_KEY. Esto debería ser cambiado por algunos bytes aleatorios en producción. De lo contrario, los atacantes podrían utilizar la clave pública 'dev' para modificar la cookie de sesión, o cualquier otra cosa que utilice la clave secreta.

Puede utilizar el siguiente comando para obtener una clave secreta aleatoria:

$ python -c 'import secrets; print(secrets.token_hex())'

'192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

Crea el archivo config.py en la carpeta de la instancia, que la fábrica leerá si existe. Copie el valor generado en él.

.venv/var/flaskr-instance/config.py
SECRET_KEY = '192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

También puedes establecer aquí cualquier otra configuración necesaria, aunque SECRET_KEY es la única necesaria para Flaskr.

Ejecutar con un servidor de producción

Cuando se ejecuta públicamente y no en desarrollo, no se debe utilizar el servidor de desarrollo incorporado (flask run). El servidor de desarrollo es proporcionado por Werkzeug por conveniencia, pero no está diseñado para ser particularmente eficiente, estable o seguro.

En su lugar, utilice un servidor WSGI de producción. Por ejemplo, para usar Waitress, primero instálalo en el entorno virtual:

$ pip install waitress

Necesitas decirle a Waitress sobre tu aplicación, pero no utiliza --app como lo hace flask run. Tienes que decirle que importe y llame a la fábrica de aplicaciones para obtener un objeto de aplicación.

$ waitress-serve --call 'flaskr:create_app'

Serving on http://0.0.0.0:8080

Consulte Despliegue en producción para ver una lista de las diferentes formas de alojar su aplicación. Waitress es sólo un ejemplo, elegido para el tutorial porque soporta tanto Windows como Linux. Hay muchos más servidores WSGI y opciones de despliegue que puedes elegir para tu proyecto.

Continuar con ¡Siga desarrollando!.