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#
- Configurer le serveur Ubuntu
- Installer Nginx et Gunicorn
- Configurer Gunicorn
- Configurer Nginx
- Déployer l’application Flask
- Tester le déploiement
1. Configurer le serveur Ubuntu#
Connectez-vous à votre serveur Ubuntu via SSH :
ssh username@your_server_ipMettez à jour les paquets système :
sudo apt update && sudo apt upgrade -yCréez un utilisateur dédié pour l’application :
sudo adduser flaskuser
sudo usermod -aG sudo flaskuser2. Installer Nginx et Gunicorn#
Installez Nginx et Gunicorn à l’aide de apt :
sudo apt install nginx gunicorn3 -y3. Configurer Gunicorn#
Créez un fichier de configuration pour Gunicorn dans /etc/systemd/system/ :
sudo nano /etc/systemd/system/flaskapp.serviceAjoutez 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.target4. Configurer Nginx#
Créez un fichier de configuration Nginx :
sudo nano /etc/nginx/sites-available/flaskappAjoutez 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 nginx5. 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.txtCré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 = 1006. Tester le déploiement#
Activez et démarrez le service Gunicorn :
sudo systemctl enable flaskapp
sudo systemctl start flaskappVérifiez l’état du service :
sudo systemctl status flaskappAccé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.