En aquest tutorial et mostrem com implementar una aplicació Python fent servir Flask i Nginx a Debian 10.
Flask és un entorn de treball senzill i lleuger per a Python, que proporciona totes les utilitats i biblioteques que t'ajuden a implementar una aplicació web utilitzant aquest llenguatge. Generalment, els desenvolupadors despleguen una aplicació Flask en un entorn local. És possible que hagis d'implementar l'aplicació Flask en l'entorn de producció si vols oferir la teva aplicació als usuaris a través d'Internet.
Requisits
- Un servidor que funcioni amb Debian 10.
- Una contrasenya root configurada al teu servidor.
Instal·la les dependències requerides
Primer, hauràs d'instal·lar Python i altres dependències requerides al teu sistema. Pots instal·lar-ho tot fent servir l'ordre següent:
# apt-get install python3-pip libssl-dev libffi-dev python3-dev build-essential python3-setuptools -y Un cop instal·lats tots els paquets, instal·la un paquet d'entorn virtual de Python amb l'ordre següent:
# apt-get install python3-venv -y Per continuar, actualitza el PIP a l'última versió amb l'ordre següent:
# pip3 install --upgrade pipTambé hauràs d'instal·lar el servidor web Nginx per servir l'aplicació Python. Pots fer-ho fent servir l'ordre següent:
# apt-get install nginx -yCrea una aplicació Python
En aquesta secció, instal·larem Flask i crearem una aplicació Python.
Primer, crea un directori per a la teva aplicació fent servir aquesta ordre:
# mkdir ~/flaskapp A continuació, canvia al directori de la teva aplicació i crea un entorn virtual de Python:
# cd ~/flaskapp
# python3 -m venv venvDesprés, activa l'entorn virtual amb l'ordre que veus a continuació:
# source venv/bin/activatePer seguir, instal·la Flask i Gunicorn amb l'ordre següent:
# pip install wheel
# pip install gunicorn flaskAra crea una aplicació Python simple amb aquesta ordre:
# nano ~/flaskapp/flaskapp.pyAfegeix les línies següents:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1 style='color:DodgerBlue'>Welcome to Python Application!</h1>"
if __name__ == "__main__":
app.run(host='0.0.0.0')Desa i tanca el fitxer i després executa la teva aplicació amb l'ordre següent:
# cd ~/flaskapp/
# python3 flaskapp.pyHauries d'obtenir aquest resultat:
* Serving Flask app "flaskapp" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Prem "CTRL+C" per aturar l'aplicació.
Configura Gunicorn per executar la teva aplicació
En aquest apartat, crearàs un fitxer wsgi i configuraràs Gunicorn per executar la teva aplicació Python.
Primer, crea un fitxer wsgi.py:
# nano ~/flaskapp/wsgi.pyAfegeix les línies següents:
from flaskapp import app
if __name__ == "__main__":
app.run()Desa i tanca el fitxer i després executa la teva aplicació amb Gunicorn:
# cd ~/flaskapp/
# gunicorn --bind 0.0.0.0:5000 wsgi:appAquest és el resultat que hauries d'obtenir:
(venv) root@debian10:~/flaskapp# gunicorn --bind 0.0.0.0:5000 wsgi:app
[2021-04-21 07:25:03 +0000] [8483] [INFO] Starting gunicorn 20.1.0
[2021-04-21 07:25:03 +0000] [8483] [INFO] Listening at: http://0.0.0.0:5000 (8483)
[2021-04-21 07:25:03 +0000] [8483] [INFO] Using worker: sync
[2021-04-21 07:25:03 +0000] [8486] [INFO] Booting worker with pid: 8486
Prem "CTRL+C" per aturar l'aplicació.
A continuació, desactiva el teu entorn virtual Python amb l'ordre següent:
# deactivateCrea un servei de fitxers Systemd per a la teva aplicació Python
Per continuar, hauràs de crear un fitxer de servei systemd per administrar l'aplicació Python.
Pots crear-lo amb l'ordre següent:
# nano /etc/systemd/system/flaskapp.serviceAfegeix les línies següents:
[Unit]
Description=Gunicorn instance to serve Flask
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/flaskapp
Environment="PATH=/root/flaskapp/venv/bin"
ExecStart=/root/flaskapp/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
[Install]
WantedBy=multi-user.targetDesa i tanca el fitxer i després estableix la propietat i els permisos adequats amb l'ordre següent:
# chown -R root:www-data /root/flaskapp
# chmod -R 775 /root/flaskappPer seguir, recarrega el dimoni systemd amb l'ordre següent:
# systemctl daemon-reloadDesprés, inicia el servei de flask i habilita'l perquè s'iniciï en reiniciar el sistema:
# systemctl start flaskapp
# systemctl enable flaskappA continuació, verifica l'estat de flask amb l'ordre següent:
# systemctl status flaskappHauries de veure el resultat que et mostrem aquí:
● flaskapp.service - Gunicorn instance to serve Flask
Loaded: loaded (/etc/systemd/system/flaskapp.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2021-04-21 07:25:51 UTC; 4s ago
Main PID: 8506 (gunicorn)
Tasks: 2 (limit: 2359)
Memory: 26.0M
CGroup: /system.slice/flaskapp.service
├─8506 /root/flaskapp/venv/bin/python3 /root/flaskapp/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
└─8508 /root/flaskapp/venv/bin/python3 /root/flaskapp/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
Apr 21 07:25:51 debian10 systemd[1]: Started Gunicorn instance to serve Flask.
Apr 21 07:25:51 debian10 gunicorn[8506]: [2021-04-21 07:25:51 +0000] [8506] [INFO] Starting gunicorn 20.1.0
Apr 21 07:25:51 debian10 gunicorn[8506]: [2021-04-21 07:25:51 +0000] [8506] [INFO] Listening at: http://0.0.0.0:5000 (8506)
Apr 21 07:25:51 debian10 gunicorn[8506]: [2021-04-21 07:25:51 +0000] [8506] [INFO] Using worker: sync
Apr 21 07:25:51 debian10 gunicorn[8506]: [2021-04-21 07:25:51 +0000] [8508] [INFO] Booting worker with pid: 8508
Configura Nginx per servir l'aplicació de Python
Per seguir, hauràs de crear un fitxer de configuració d'amfitrió virtual Nginx per servir l'aplicació Python.
# nano /etc/nginx/conf.d/flaskapp.confAfegeix les línies següents:
server {
listen 80;
server_name app.example.com;
location / {
include proxy_params;
proxy_pass http://127.0.0.1:5000;
}
}Desa i tanca el fitxer i després reinicia Nginx per aplicar els canvis de configuració:
# systemctl restart nginxAccedeix a l'aplicació de Python
Ara obre el teu navegador web i accedeix a la teva aplicació Python amb l'URL http://app.ejemplo.com. Hauries de veure la teva aplicació a la pantalla següent:
Enhorabona! Has implementat amb èxit una aplicació Python amb Flask i Nginx en un servidor cloud amb Debian 10.
Esperem que ara puguis moure fàcilment la teva aplicació Python de l'entorn local a l'entorn de producció.
Si tens cap pregunta sobre aquest tutorial, escriu-nos a soporte@clouding.io. Ens encantarà resoldre-la :)