Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐍
Intermediaire 20 min Flask

Deployer Flask sur DigitalOcean

Pourquoi Deployer Flask sur DigitalOcean ?

Deploiement d'applications web nécessite une infrastructure solide et évolutrice. Les fournisseurs de services cloud comme DigitalOcean offrent des solutions robustes et évoluées pour héberger n'importe quel type d'application, y compris les applications web Python avec Flask. En déployant sur DigitalOcean, vous pouvez profiter de la performance élevée, de la disponibilité accrue et des capacités de scale-out, tout en ayant un contrôle total sur votre environnement.

Un cas d'utilisation concret est le déploiement d'une application Flask pour une petite entreprise ou une start-up. Avec DigitalOcean, on peut facilement adapter l'infrastructure à la demande en ajoutant plus de ressources quand nécessaire. Cela permet une évolutivité flexible tout en maintenant les coûts bas.

Prerequis

  • Connaissance approfondie du langage Python
  • Familiarité avec le framework Flask
  • Compréhension des bases de la gestion de base de données SQL (optionnel)
  • Installation de Git pour le contrôle de version
  • Un compte DigitalOcean et un solde suffisant

Concepts fondamentaux

1. Environnement virtuel

Un environnement virtuel est une instance Python isolée sur votre système, avec ses propres bibliothèques et paquets installés. Cela aide à éviter les conflits entre les dépendances de différents projets.

Schéma mental :

+-------------------+
|    Système        |
|                   |
|  +------------+   |
|  | Environ-   |   |
|  | ment Virtuel|   |
|  +------------+   |
|                   |
|  Python           |
|  Bibliothèques    |
|  et Paquets       |
+-------------------+

Code :

## Créer un environnement virtuel
python3 -m venv myenv

## Activer l'environnement virtuel (Linux/Mac)
source myenv/bin/activate

## Activer l'environnement virtuel (Windows)
myenv\Scripts\activate

2. Gestion des paquets avec pip

Pip est le gestionnaire de paquets Python standard. Il permet d'installer, mettre à jour et supprimer les bibliothèques Python.

Schéma mental :

+-------------------+
|    pip            |
|                   |
|  +------------+   |
|  | Installation|   |
|  | de Paquets  |   |
|  +------------+   |
|                   |
|  Bibliothèques    |
|  Python           |
+-------------------+

Code :

## Installer une bibliothèque avec pip
pip install flask

## Mettre à jour une bibliothèque
pip install --upgrade flask

3. Structure du projet Flask

La structure d'un projet Flask typique est organisée en plusieurs fichiers et dossiers.

Schéma mental :

+-------------------+
|    Projet Flask   |
|                   |
|  +------------+   |
|  | app.py      |   |
|  | templates/  |   |
|  | static/     |   |
|  +------------+   |
|                   |
|  Fichiers         |
|  Python           |
+-------------------+

Code :

## app.py - Point d'entrée de l'application Flask
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

Mise en pratique : projet fil rouge

1. Création du projet

Commencez par créer un nouveau dossier pour votre projet et initialisez-le avec Git.

mkdir todo_app
cd todo_app
git init

2. Création de l'environnement virtuel

Créez et activez un environnement virtuel dans le dossier du projet.

python3 -m venv myenv
source myenv/bin/activate

3. Installation des dépendances

Installez Flask et d'autres bibliothèques nécessaires.

pip install flask
pip freeze > requirements.txt

4. Création du fichier app.py

Créez un fichier app.py avec le code suivant :

## app.py - Point d'entrée de l'application Flask
from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

## Base de données en mémoire (pour les tests)
tasks = []

@app.route('/')
def home():
    return render_template('index.html', tasks=tasks)

@app.route('/add', methods=['POST'])
def add_task():
    task = request.form['task']
    if task:
        tasks.append(task)
    return redirect(url_for('home'))

@app.route('/delete/<int:index>')
def delete_task(index):
    if index < len(tasks):
        del tasks[index]
    return redirect(url_for('home'))

if __name__ == '__main__':
    app.run(debug=True)

5. Création du template HTML

Créez un dossier templates et y ajoutez un fichier index.html.

<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Todo App</title>
</head>
<body>
    <h1>Todo List</h1>
    <form method="POST" action="/add">
        <input type="text" name="task" placeholder="Add a new task" required>
        <button type="submit">Add Task</button>
    </form>
    <ul>
        {% for task in tasks %}
            <li>task <a href="/delete/loop.index0">Delete</a></li>
        {% endfor %}
    </ul>
</body>
</html>

6. Configuration de la base de données

Pour une application plus robuste, vous pouvez utiliser une base de données comme SQLite ou PostgreSQL.

Code :

## app.py - Point d'entrée de l'application Flask avec SQL Alchemy
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
db = SQLAlchemy(app)

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    description = db.Column(db.String(255), nullable=False)

@app.route('/')
def home():
    tasks = Task.query.all()
    return render_template('index.html', tasks=tasks)

@app.route('/add', methods=['POST'])
def add_task():
    task = request.form['task']
    if task:
        new_task = Task(description=task)
        db.session.add(new_task)
        db.session.commit()
    return redirect(url_for('home'))

@app.route('/delete/<int:id>')
def delete_task(id):
    task = Task.query.get_or_404(id)
    db.session.delete(task)
    db.session.commit()
    return redirect(url_for('home'))

if __name__ == '__main__':
    app.run(debug=True)

## Créer la base de données
with app.app_context():
    db.create_all()

7. Exécution de l'application

Exécutez votre application Flask.

python app.py

Accédez à http://127.0.0.1:5000/ dans votre navigateur pour voir l'application en cours d'exécution.

Erreurs frequentes et debugging

1. L'erreur "ModuleNotFoundError"

Code incorrect :

from flask_sqlalchemy import SQLAlchemy

Code correct :

from flask_sqlalchemy import SQLAlchemy

2. L'erreur "AttributeError: 'NoneType' object has no attribute 'commit'"

Code incorrect :

db.session.add(new_task)
db.commit()

Code correct :

db.session.add(new_task)
db.session.commit()

3. L'erreur "405 Method Not Allowed"

Code incorrect :

<form method="POST" action="/add">
    <input type="text" name="task" placeholder="Add a new task" required>
    <button type="submit">Add Task</button>
</form>

Code correct :

<form method="POST" action="/add">
    <input type="text" name="task" placeholder="Add a new task" required>
    <button type="submit">Add Task</button>
</form>

Pour aller plus loin

1. Utilisation de Docker pour containeriser votre application

Docker permet de créer des images standardisées qui peuvent être déployées n'importe où.

2. Configuration du déploiement sur DigitalOcean

Utilisez le panel de contrôle DigitalOcean pour configurer le déploiement automatique de votre application Flask.

3. Ajout d'une authentification et de la gestion des utilisateurs

Ajoutez une interface utilisateur pour gérer les utilisateurs et leur tâches.

Défi pratique :

Créez un mini-projet complet avec une interface utilisateur pour ajouter, modifier et supprimer des tâches, ainsi qu'une gestion des utilisateurs. Utilisez Flask pour le backend et Bootstrap pour le frontend.

Besoin d'aide sur Flask ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Quel est le pré requis pour déployer Flask sur DigitalOcean ?
Pour déployer Flask sur DigitalOcean, vous aurez besoin d'un compte DigitalOcean et des outils suivants : Git pour versionner votre code, SSH pour accéder à votre serveur et un environnement Python configuré.
Comment configurer le fichier WSGI pour déployer Flask sur DigitalOcean ?
Pour configurer le fichier WSGI, créez un fichier appelé `wsgi.py` dans votre projet Flask. Ce fichier devrait contenir une application Flask importée et déclarer la variable `application`. Exemple : `from monapp import app as application`.
Quels sont les étapes pour mettre en place un serveur Nginx sur DigitalOcean ?
Pour mettre en place un serveur Nginx, connectez-vous à votre instance DigitalOcean via SSH et installez Nginx avec la commande `sudo apt install nginx`. Ensuite, configurez Nginx pour servir votre application Flask en éditant le fichier de configuration de Nginx et ajoutant une directive `location` qui pointe vers votre fichier WSGI.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.