Розгортання Flask API на Nginx

pic

Розробка та впровадження (deployment) додатків машинного навчання в наш час набувають все більшої популярності. Одним з важливих етапів є налаштування системи для використання в реальному середовищі. Python Flask є одним з популярних фреймворків для створення API, який відзначається гнучкістю та простотою використання, тоді як Nginx допомагає підвищити ефективність обробки запитів (request) і підтримує велику кількість користувачів. Поєднуючи ці дві технології, розробники можуть створювати ефективні та масштабовані системи, що легко адаптуються під потреби організацій чи користувачів.

Кроки

  1. Створіть віртуальне середовище та клонувати репозиторій
python -m venv example-env  
cd example-env  
git clone https://github.com/gituser/gitrepo  
cd gitrepo
  1. Встановіть залежності за допомогою pip install або requirements.txt
source Scripts/activate  
pip install -r requirements.txt
  1. Тестування Flask додатку локально
gunicorn --bind 127.0.0.1:5000 app:app
  1. Тестовий запуск
curl http://127.0.0.1:5000
  1. Налаштуйте Nginx
sudo nano /etc/nginx/sites-available/my_flask_app
  1. Додайте конфігурацію
server {  
 listen 80;  
 server_name your_domain_or_IP; # Змініть на ваш домен або IP адресу  

 location / {  
 proxy_pass http://127.0.0.1:5000; # Перенаправлення запитів до Gunicorn на порт 5000  
 proxy_set_header Host $host;  
 proxy_set_header X-Real-IP $remote_addr;  
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
 }  

 # За бажанням: ввімкнути SSL (HTTPS)  
 # Розкоментуйте ці рядки, якщо використовуєте SSL сертифікати  
 # listen 443 ssl;  
 # ssl_certificate /path/to/cert.crt;  
 # ssl_certificate_key /path/to/cert.key;  

 error_log /var/log/nginx/my_flask_app_error.log;  
 access_log /var/log/nginx/my_flask_app_access.log;  
}
  1. Створіть символічне посилання для активації сайту
sudo ln -s /etc/nginx/sites-available/my_flask_app /etc/nginx/sites-enabled/

8. Перевірте конфігурацію Nginx, щоб переконатися, що немає помилок

sudo nginx -t  
sudo systemctl restart nginx
  1. Налаштування Gunicorn як служби Systemd
  • Створіть файл служби Gunicorn:
sudo nano /etc/systemd/system/my_flask_app.service
  • Додайте наступну конфігурацію:
[Unit]  
Description=Gunicorn instance to serve Flask App  
After=network.target  

[Service]  
User=your_user  
Group=your_group  
WorkingDirectory=/path/to/your/app  
Environment="PATH=/home/sammy/myproject/myprojectenv/bin"  
ExecStart=/path/to/your/app/venv/bin/gunicorn --bind unix:/path/to/your/app/my_flask_app.sock app:app  

[Install]  
WantedBy=multi-user.target
  • команду
sudo systemctl start my_flask_app  
sudo systemctl enable my_flask_app  

sudo systemctl status my_flask_app  

curl http://your_domain_or_IP/predict




Перекладено з: [Deployment of Flask API on NGinx](https://medium.com/ckartisan/deployment-of-flask-api-on-nginx-42a2df249a39)

Leave a Reply

Your email address will not be published. Required fields are marked *