Flask একটি মাইক্রোফ্রেমওয়ার্ক যা সাধারণত ডেভেলপমেন্ট সার্ভার ব্যবহার করে অ্যাপ্লিকেশন চালায়। তবে, প্রোডাকশন পরিবেশে Flask অ্যাপ্লিকেশন সার্ভ করার জন্য Gunicorn এবং Nginx সবচেয়ে জনপ্রিয় এবং শক্তিশালী সমাধান। Gunicorn একটি Python WSGI HTTP সার্ভার যা Flask অ্যাপ্লিকেশনকে দ্রুত এবং কার্যকরীভাবে পরিচালনা করতে সহায়ক। Nginx একটি জনপ্রিয় ওভারলোড রিভার্স প্রক্সি সার্ভার যা Gunicorn সার্ভারকে আগত HTTP রিকোয়েস্ট পরিচালনা করতে সহায়তা করে।
এই গাইডে, আমরা দেখবো কিভাবে Flask অ্যাপ্লিকেশনকে Gunicorn এবং Nginx দিয়ে প্রোডাকশন পরিবেশে সার্ভ করা যায়।
১. Gunicorn ইনস্টল করা
Gunicorn Flask অ্যাপ্লিকেশনের জন্য একটি WSGI সার্ভার। এটি Python অ্যাপ্লিকেশনকে HTTP রিকোয়েস্টের সাথে যোগাযোগ করতে সাহায্য করে। Gunicorn পিপ দিয়ে ইনস্টল করা যায়।
pip install gunicorn
২. Flask অ্যাপ্লিকেশন তৈরি করা
এখন, আমরা একটি সিম্পল Flask অ্যাপ্লিকেশন তৈরি করবো। এটি app.py ফাইলে থাকবে।
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "স্বাগতম Flask অ্যাপে!"
if __name__ == "__main__":
app.run()
এখানে, একটি মৌলিক Flask অ্যাপ তৈরি করা হয়েছে, যা একটি হোমপেজ প্রদর্শন করে।
৩. Gunicorn দিয়ে Flask অ্যাপ চালানো
Gunicorn দিয়ে Flask অ্যাপ সার্ভ করার জন্য, টার্মিনালে নিচের কমান্ডটি চালান:
gunicorn -w 4 app:app
এখানে:
-w 4: Gunicorn সার্ভার ৪টি ওয়ার্কার প্রসেস তৈরি করবে (যার মাধ্যমে সার্ভার একাধিক রিকোয়েস্টকে সমান্তরালভাবে প্রসেস করতে সক্ষম হবে)।app:app: প্রথমappFlask অ্যাপ্লিকেশনের ফাইলের নাম এবং দ্বিতীয়appFlask অ্যাপ্লিকেশনের ইনস্ট্যান্সের নাম।
এই কমান্ডটি চালানোর পর, Flask অ্যাপ্লিকেশনটি Gunicorn সার্ভারের মাধ্যমে রান করবে।
৪. Nginx সেটআপ করা
Nginx একটি শক্তিশালী HTTP সার্ভার এবং রিভার্স প্রক্সি সার্ভার। Nginx Gunicorn সার্ভারের সামনে কাজ করবে এবং সমস্ত HTTP রিকোয়েস্ট Gunicorn সার্ভারে ফরওয়ার্ড করবে।
ধাপ ১: Nginx ইনস্টল করা
প্রথমে, আপনার সার্ভারে Nginx ইনস্টল করুন:
Ubuntu:
sudo apt update
sudo apt install nginx
CentOS/RHEL:
sudo yum install nginx
ধাপ ২: Nginx কনফিগারেশন
এখন, Nginx কনফিগারেশন ফাইলটি সম্পাদনা করতে হবে, যাতে এটি Gunicorn সার্ভারের সাথে সংযুক্ত হতে পারে। সাধারণত, Nginx কনফিগারেশন ফাইলটি /etc/nginx/sites-available/ ডিরেক্টরিতে থাকে।
/etc/nginx/sites-available/ডিরেক্টরিতে একটি নতুন কনফিগারেশন ফাইল তৈরি করুন, উদাহরণস্বরূপflask_appনামে:
sudo nano /etc/nginx/sites-available/flask_app
- এতে নিম্নলিখিত কনফিগারেশন যোগ করুন:
server {
listen 80;
server_name example.com; # আপনার ডোমেইন নাম
location / {
proxy_pass http://127.0.0.1:8000; # Gunicorn সার্ভারের লোকাল অ্যাড্রেস
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_log /var/log/nginx/flask_app_error.log;
access_log /var/log/nginx/flask_app_access.log;
}
এখানে:
listen 80;: Nginx HTTP পোর্ট 80 এ রিকোয়েস্ট শুনবে।proxy_pass http://127.0.0.1:8000;: Nginx Gunicorn সার্ভারকে লোকাল হোস্টের 8000 পোর্টে রিকোয়েস্ট ফরওয়ার্ড করবে।
ধাপ ৩: কনফিগারেশন অ্যাক্টিভ করা
কনফিগারেশন ফাইলটি /etc/nginx/sites-enabled/ ডিরেক্টরিতে সিমলিঙ্ক করতে হবে:
sudo ln -s /etc/nginx/sites-available/flask_app /etc/nginx/sites-enabled
ধাপ ৪: Nginx রিস্টার্ট করা
Nginx সার্ভিসটি রিস্টার্ট করুন যাতে কনফিগারেশন পরিবর্তনগুলি কার্যকর হয়:
sudo systemctl restart nginx
৫. Gunicorn সার্ভার চালানো
Gunicorn সার্ভারটি আবার চালু করুন:
gunicorn -w 4 app:app
এখন আপনার Flask অ্যাপ Gunicorn দ্বারা চালিত হচ্ছে, এবং Nginx সেই অ্যাপ্লিকেশনটি রিভার্স প্রক্সি হিসেবে পরিচালনা করছে।
৬. Firewall সেটআপ (যদি প্রয়োজন হয়)
যদি আপনার সার্ভারে ফায়ারওয়াল কনফিগার করা থাকে, তাহলে নিশ্চিত করুন যে পোর্ট 80 (HTTP) এবং 443 (HTTPS) ওপেন আছে:
sudo ufw allow 'Nginx Full'
৭. HTTPS এর জন্য SSL সেটআপ
যদি আপনি HTTPS সক্রিয় করতে চান, তাহলে আপনাকে একটি SSL সার্টিফিকেট ইনস্টল করতে হবে। Let’s Encrypt ফ্রি SSL সার্টিফিকেট প্রদান করে, যা Nginx-এ ইনস্টল করা সহজ।
- Certbot ইনস্টল করা:
sudo apt install certbot python3-certbot-nginx
- SSL সার্টিফিকেট ইনস্টল করা:
sudo certbot --nginx -d example.com
এটি SSL সার্টিফিকেট ইনস্টল করবে এবং Nginx কনফিগারেশন ফাইলটি আপডেট করবে।
Flask অ্যাপ্লিকেশনকে Gunicorn এবং Nginx দিয়ে প্রোডাকশন পরিবেশে সার্ভ করা একটি সাধারণ এবং নিরাপদ সমাধান। Gunicorn Flask অ্যাপ্লিকেশনের জন্য WSGI সার্ভার হিসেবে কাজ করে এবং Nginx একটি রিভার্স প্রক্সি হিসেবে কাজ করে যা ট্রাফিক পরিচালনা করে এবং অ্যাপ্লিকেশনটির পারফরম্যান্স উন্নত করে। এছাড়া, SSL এবং ফায়ারওয়াল কনফিগারেশনও খুবই গুরুত্বপূর্ণ।
Read more