2024 11 25 092453

Comment déployer une application Flask sur un serveur Ubuntu avec Nginx et Gunicorn#

Date de publication : 2023-10-15

Dans ce tutoriel, nous allons apprendre à déployer une application Flask sur un serveur Ubuntu en utilisant Nginx comme serveur web et Gunicorn comme serveur d’applications.

Étapes de déploiement#

  1. Configurer le serveur Ubuntu
  2. Installer Nginx et Gunicorn
  3. Configurer Gunicorn
  4. Configurer Nginx
  5. Déployer l’application Flask
  6. Tester le déploiement

1. Configurer le serveur Ubuntu#

Connectez-vous à votre serveur Ubuntu via SSH :

ssh username@your_server_ip

Mettez à jour les paquets système :

sudo apt update && sudo apt upgrade -y

Créez un utilisateur dédié pour l’application :

sudo adduser flaskuser
sudo usermod -aG sudo flaskuser

2. Installer Nginx et Gunicorn#

Installez Nginx et Gunicorn à l’aide de apt :

sudo apt install nginx gunicorn3 -y

3. Configurer Gunicorn#

Créez un fichier de configuration pour Gunicorn dans /etc/systemd/system/ :

sudo nano /etc/systemd/system/flaskapp.service

Ajoutez le contenu suivant :

[Unit]
Description=Gunicorn instance to serve Flask app
After=network.target

[Service]
User=flaskuser
Group=flaskuser
WorkingDirectory=/home/flaskuser/myapp
ExecStart=/home/flaskuser/myapp/venv/bin/gunicorn3 -c /home/flaskuser/myapp/gunicorn.conf.py app:app
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

4. Configurer Nginx#

Créez un fichier de configuration Nginx :

sudo nano /etc/nginx/sites-available/flaskapp

Ajoutez le contenu suivant :

server {
    listen 80;
    server_name your_domain.com;

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8000;
    }
}

Activez le site :

sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled/
sudo systemctl reload nginx

5. Déployer l’application Flask#

Placez votre application Flask dans /home/flaskuser/myapp et assurez-vous qu’elle contient un fichier app.py et un fichier requirements.txt.

Créez un environnement virtuel :

cd /home/flaskuser/myapp
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Créez un fichier de configuration Gunicorn (gunicorn.conf.py) :

bind = "127.0.0.1:8000"
workers = 4
worker_class = "sync"
worker_connections = 1000
timeout = 30
max_requests = 1000
max_requests_jitter = 100

6. Tester le déploiement#

Activez et démarrez le service Gunicorn :

sudo systemctl enable flaskapp
sudo systemctl start flaskapp

Vérifiez l’état du service :

sudo systemctl status flaskapp

Accédez à http://your_domain.com dans votre navigateur pour voir votre application Flask en action.

Conclusion#

Vous avez maintenant déployé une application Flask sur un serveur Ubuntu en utilisant Nginx et Gunicorn. Cette configuration est scalable, fiable et convient bien aux applications en production.

Pour plus d’informations, consultez la documentation officielle de Flask, la documentation de Gunicorn, et la documentation de Nginx.

Si vous avez des questions, n’hésitez pas à contacter l’équipe d’assistance à l’adresse suivante : support@yourcompany.com.