فریموورک Flask یکی از محبوبترین و کاربرپسندترین فریموورکهای پایتون برای توسعه وب است. با نسخه 3.0، چندین بهبود در عملکرد، امنیت و قابلیت پشتیبانی از پروژههای بزرگ ارائه شده است. یکی از بهترین راهها برای اجرای یک اپلیکیشن مبتنی بر Flask در محیط تولید، استفاده از وب سرور قدرتمند Nginx است که میتواند به شما در مدیریت بار ترافیک کمک کند و بهینهسازیهایی را جهت بهبود عملکرد ارائه دهد.
در این مقاله، قصد داریم شما را با نحوه کانفیگ و نصب Flask 3.0 به وسیله Nginx آشنا کنیم. ابتدا باید مطمئن شوید که تمامی پیشنیازهای لازم مانند پایتون و pip بر روی سرور شما نصب شده باشند. سپس، Nginx را نصب کرده و کانفیگهای لازم را برای ارتباط صحیح بین Nginx و Flask انجام خواهیم داد.
همانطور که احتمالا میدانید، هیچ چیزی به اندازه مشاهده یک مثال عملی نمیتواند به شما کمک کند تا ایدهها را به درستی درک کنید. پس در ادامه، با یک مثال کد همراه با توضیحات، به شما نشان خواهیم داد که چگونه این دو تکنولوژی را کنار هم قرار دهید و یک اپلیکیشن Flask را به طور صحیح روی وب سرور Nginx اجرا کنید.
نکته مهمی که باید به آن اشاره کرد این است که Nginx به خودی خود قابلیت اجرای اپلیکیشنهای پایتونی را ندارد، و برای این کار شما نیاز دارید از Gunicorn یا uWSGI به عنوان واسطهای بین Nginx و Flask استفاده کنید. این ابزارها کمک میکنند که Nginx بتواند درخواستهای دریافتی را به اپلیکیشن Flask شما ارسال کند و پاسخها را به کاربر نهایی برگرداند.
نصب و راهاندازی Nginx
$ sudo apt update
$ sudo apt install nginx
ابتدا باید مخازن سیستمعامل خود را بهروز کنید. سپس بسته Nginx را از مخازن نصب نمایید.
نصب و راهاندازی Gunicorn
$ pip install gunicorn
استفاده از pip برای نصب Gunicorn که یک برنامه اجرایی معروف برای اپلیکیشنهای پایتون است.
تنظیم Nginx برای استفاده از Gunicorn
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
یک بلاک سرور جدید برای Nginx ایجاد کنید که در آن درخواستها به Gunicorn ارسال شوند.listen 80;
- درخواستها را بر روی پورت 80 گوش میدهد.server_name example.com;
- دامنهای که سرور برای آن پیکربندی میشود.proxy_pass http://127.0.0.1:8000;
- درخواستها را به Gunicorn که روی پورت 8000 اجرا میشود، ارسال میکند.proxy_set_header Host $host;
- هدر میزبان را تنظیم میکند.proxy_set_header X-Real-IP $remote_addr;
- آدرس IP واقعی کاربر را به درخواست اضافه میکند.