Maison >développement back-end >Tutoriel Python >Comment déployer des applications FLASK sur Vultr

Comment déployer des applications FLASK sur Vultr

Christopher Nolan
Christopher Nolanoriginal
2025-02-08 08:31:09781parcourir

How to Deploy Flask Applications on Vultr

Déployer des applications de ballon sécurisées avec Gunicorn, Nginx et Let's Encrypt

FLASK est un cadre Python pour la création d'applications Web. Avec Flask, les développeurs peuvent facilement définir le routage, traiter les demandes et les réponses HTTP et rendre le contenu dynamique à l'aide de modèles Jinja2. Il prend également en charge les extensions qui permettent aux développeurs d'intégrer des fonctionnalités telles que l'accès à la base de données, le traitement de formulaire et l'authentification des utilisateurs.

Cet article expliquera comment utiliser Gunicorn pour déployer des applications FLASK et implémenter les politiques de protection et de sécurité du contenu CSRF (CSP). Nous allons également configurer un proxy inversé à l'aide de NGINX et demander un certificat SSL gratuit via Let's Encrypt pour implémenter HTTPS.

Déployer sur l'instance de cloud optimisée vultr

  1. Inscrivez-vous et connectez-vous au portail client Vultr.
  2. Accédez à la page des produits.
  3. Sélectionnez "Calculer" dans le menu latéral.
  4. Cliquez sur le bouton "Déployer le serveur" au centre.
  5. Sélectionnez "Cloud Computing optimisé" comme type de serveur.
  6. Sélectionnez l'emplacement du serveur.
  7. Sélectionnez Ubuntu 24.04 comme système d'exploitation.
  8. Sélectionnez le bon package.
  9. Sélectionnez toutes les fonctionnalités supplémentaires si nécessaire.
  10. Cliquez sur "Depenter MAINTENANT".

Ajouter un fichier de code d'application de démonstration

Configurer un environnement virtuel Python

  1. Installation du package Python3-Venv: sudo apt install python3-venv
  2. Créez un environnement virtuel: python3 -m venv myenv
  3. Activez l'environnement virtuel: source myenv/bin/activate

Ajouter un fichier de code d'application de démonstration

  1. Clone GitHub Repository: git clone https://github.com/mayankdebnath/flask-todo-demo.git
  2. Accédez au répertoire du projet: cd flask-todo-demo/sample/
  3. Installation des packages FLASK et GUNICORN: pip install flask gunicorn
  4. Autoriser les connexions entrantes au port 5000: ufw allow 5000

Appliquer les politiques de protection et de sécurité du contenu CSRF

Le falsification des demandes de site transversal (CSRF) est une vulnérabilité qui permet à un attaquant de faire des demandes non autorisées à différents sites Web fiables par l'utilisateur à l'aide d'une session connectée sur un site Web de confiance. WTFORMS est une extension FLASK qui intègre la protection CSRF par défaut pour empêcher les attaques CSRF.

La politique de sécurité du contenu (CSP) est une couche de sécurité supplémentaire pour les applications Web qui les protègent contre les attaques malveillantes. CSP indique quelles ressources le navigateur permet de charger sur une page Web spécifique. En règle générale, l'administrateur du site Web configure le CSP en ajoutant des en-têtes spéciaux à la réponse du serveur de la page Web, et le navigateur reçoit ensuite l'en-tête CSP et comprend quelles ressources sont autorisées à se charger. Talisman est une extension de flacon qui simplifie le processus d'ajout de CSP aux applications FLASK.

  1. Installation des packages Flask-WTF et Talisman: pip install flask-wtf talisman
  2. ouvrir le fichier app.py: nano app.py
  3. Modifier le fichier app.py pour inclure la stratégie de sécurité du contenu:
<code class="language-python">from talisman import Talisman

talisman = Talisman(
    app,
    content_security_policy={
        'default-src': ['\'self\''],
        'script-src': ['\'self\'', '\'unsafe-inline\'', 'https://code.jquery.com'],
        'style-src': ['\'self\'', '\'unsafe-inline\'', 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css', 'https://todoapp5.ddns.net/static/styles.css', 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css'],
    },
    force_https=True,
    session_cookie_secure=True,
    frame_options='DENY',
)</code>
  1. Dans le fichier app.py, importez et configurez la protection CSRF:
<code class="language-python">from flask_wtf.csrf import CSRFProtect

app.config['SECRET_KEY'] = 'your_secret_key_here'
csrf = CSRFProtect(app)
csrf._csrf_request_token_key = 'X-CSRFToken'</code>

Enregistrer et fermer le fichier.

  1. Naviguez vers le répertoire des modèles: cd templates
  2. ouvrir le fichier index.html: nano index.html
  3. Modifier la page HTML pour inclure la configuration CSRF:
<code class="language-javascript">var csrfToken = $('input[name="csrf_token"]').val();

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
    if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
    xhr.setRequestHeader("X-CSRFToken", csrfToken);
        }
    }
});</code>

Enregistrer et fermer le fichier. 8. Quittez le répertoire des modèles: cd ..

Configurer Nginx comme proxy inverse

Nginx agit comme un proxy inverse entre le serveur Web et le client. Il démarre les demandes entrantes en fonction des paramètres de configuration de votre demande. Dans cette section, nous configurerons l'application pour la proxyation inverse pour un traitement efficace de demande et un équilibrage de charge. Nous demanderons également un certificat SSL gratuit de Let's Encrypt pour implémenter HTTPS, protégeant ainsi la communication entre les utilisateurs et les serveurs Web.

  1. Connectez-vous au portail client Vultr.
  2. Accédez à la page des produits.
  3. Développez le menu déroulant réseau dans le menu latéral et sélectionnez DNS.
  4. Cliquez sur le bouton "Ajouter le nom de domaine" au centre.
  5. Suivez les étapes des paramètres pour ajouter votre nom de domaine et sélectionnez l'adresse IP du serveur.
  6. Utilisez votre registraire de domaine pour définir les noms d'hôte suivants comme serveurs de noms principaux et secondaires pour le nom de domaine: ns1.vultr.com et ns2.vultr.com.
  7. Installation de nginx: sudo apt install nginx
  8. Créez un nouveau fichier de configuration Nginx: sudo nano /etc/nginx/sites-available/app.conf
  9. Collez la configuration suivante dans le fichier:
<code class="language-nginx">server {
    listen 80;
    listen [::]:80;

    server_name <your_domain>;

    location / {
        proxy_pass http://127.0.0.1:5000/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}</your_domain></code>
  1. Activer la configuration de l'hôte virtuel: sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
  2. Testez la configuration Nginx: sudo nginx -t
  3. recharger nginx: sudo systemctl reload nginx
  4. Autoriser les connexions entrantes aux ports 80 et 443: sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
  5. Installation du package de certificat: sudo snap install --classic certbot
  6. Demandez un certificat SSL: sudo certbot --nginx -d example.com -d www.example.com (Remplacez l'exemple.com par votre nom de domaine)
  7. Démarrez le serveur Gunicorn: gunicorn -b 0.0.0.0:5000 app:app
  8. Vous pouvez désormais accéder à votre application FLASK via https://<your_domain></your_domain>.

Faites plus avec l'application Python sur vultr

  • Containeriser les applications Web Python
  • Installez Python et Pip sur Ubuntu 24.04
  • en utilisant l'inférence du nuage vultr dans python
  • Discussion approfondie des packages AI / ML importants Python
  • Recherche dirigée en AI à l'aide de bases de données vectorielles Python et Milvus
  • Exécuter des tâches de traitement du langage naturel à l'aide de Python

Conclusion

Cet article explore comment déployer des applications FLASK à l'aide de Nginx Inverse Proxy et Gunicorn, et d'implémenter la protection CSRF et le CSP. Nous protégeons également la sécurité de nos applications en ajoutant des certificats SSL et en permettant à l'accès HTTPS.

Cet article est parrainé par Vultr. Vultr est la plus grande plate-forme de cloud computing privée au monde. Vultr est aimé des développeurs et a fourni des solutions mondiales de cloud computing, cloud computing flexibles et évolutives, en métal nu et en nuage à plus de 1,5 million de clients dans 185 pays. En savoir plus sur Vultr

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn