একটি ভার্চুয়াল প্রাইভেট সার্ভার (VPS)-এ একটি FastAPI অ্যাপ্লিকেশন স্থাপন করতে বেশ কয়েকটি ধাপ অনুসরণ করতে হয়, যাতে এটি দক্ষতার সাথে, নিরাপদে এবং নির্ভরযোগ্যভাবে চলে। এই গাইডটি আপনাকে Gunicorn-কে অ্যাপ্লিকেশন সার্ভার এবং Nginx-কে রিভার্স প্রক্সি হিসেবে ব্যবহার করে প্রক্রিয়াটি ধাপে ধাপে দেখাবে, সাথে Certbot ব্যবহার করে আপনার অ্যাপ্লিকেশন HTTPS-এর মাধ্যমে সুরক্ষিত করার পদ্ধতিও থাকবে। নির্দেশনাগুলি প্রধানত উবুন্টু-ভিত্তিক সিস্টেমের জন্য। প্রয়োজনীয়তা
শুরু করার আগে, নিশ্চিত করুন আপনার কাছে আছে: * একটি FastAPI অ্যাপ্লিকেশন যা ডিপ্লয় করার জন্য প্রস্তুত, যার সাথে একটি
requirements.txt ফাইল রয়েছে যাতে এর সমস্ত নির্ভরতা তালিকাভুক্ত আছে। * একটি VPS যা Ubuntu (অথবা অন্য কোনো Debian-ভিত্তিক ডিস্ট্রিবিউশন) চালাচ্ছে। * আপনার VPS-এ SSH অ্যাক্সেস। * একটি নিবন্ধিত ডোমেইন নাম যা আপনার VPS-এর IP ঠিকানায় নির্দেশ করে (ঐচ্ছিক, তবে HTTPS-এর জন্য অত্যন্ত সুপারিশ করা হয়)।``` ssh your_username@your_vps_ip sudo apt update ``` 3. আপনার VPS-এ সংযোগ করুন এবং সিস্টেম আপডেট করুন ``` প্রথমে, SSH-এর মাধ্যমে আপনার VPS-এ সংযোগ করুন এবং আপনার সিস্টেমের প্যাকেজের তালিকা আপডেট করুন। ```
ssh your_username@your_vps_ip sudo apt update && sudo apt upgrade -y
২. পাইথন, পিপ এবং ভার্চুয়াল এনভায়রনমেন্ট ইনস্টল করুন পাইথন ৩, পিপ (পাইথনের প্যাকেজ ইনস্টলার), এবং ভার্চুয়াল এনভায়রনমেন্ট তৈরি করার জন্য venv মডিউল ইনস্টল করুন।
sudo apt install python3 python3-pip python3-venv -y
3. আপনার FastAPI অ্যাপ্লিকেশন ক্লোন করুন একটি উপযুক্ত ডিরেক্টরিতে (যেমন, /var/www/) নেভিগেট করুন এবং আপনার ভার্সন কন্ট্রোল সিস্টেম (যেমন, Git) থেকে আপনার FastAPI অ্যাপ্লিকেশনটি ক্লোন করুন।
sudo mkdir -p /var/www/your_fastapi_app cd /var/www/your_fastapi_app
sudo git clone <your_repository_url> .
নোট: your_fastapi_app এবং Git URL আপনার প্রকল্পের বিবরণ অনুযায়ী প্রতিস্থাপন করুন। নিরাপত্তার কারণে আপনার অ্যাপ্লিকেশনের জন্য একটি নির্দিষ্ট নন-রুট ব্যবহারকারী তৈরি করার পরামর্শ দেওয়া হয়।
sudo adduser your_app_user sudo usermod -aG sudo your_app_user
sudo chown -R your_app_user:your_app_user /var/www/your_fastapi_project_name তারপর, এই নতুন ব্যবহারকারীতে স্যুইচ করুন:
su - your_app_user cd /var/www/your_fastapi_project_name
৪. ভার্চুয়াল এনভায়রনমেন্ট সেট আপ করুন এবং ডিপেনডেন্সি ইনস্টল করুন
আপনার প্রকল্পের জন্য একটি পাইথন ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন এবং FastAPI, Gunicorn, এবং Uvicorn সহ আপনার অ্যাপ্লিকেশনের নির্ভরতা ইনস্টল করুন। python3 -m venv venv
source venv/bin/activate pip install -r requirements.txt
pip install gunicorn "uvicorn[standard]" fastapi
যদি আপনার কাছে requirements.txt ফাইল না থাকে, তাহলে আপনি আপনার লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে pip freeze > requirements.txt ব্যবহার করে একটি তৈরি করতে পারেন।
৫. আপনার FastAPI অ্যাপ্লিকেশন পরীক্ষা করুন (স্থানীয়ভাবে VPS-এ) Gunicorn এবং Nginx কনফিগার করার আগে, Uvicorn ব্যবহার করে পরীক্ষা করুন আপনার FastAPI অ্যাপ্লিকেশন সঠিকভাবে চলছে কিনা। uvicorn main:app --host 0.0.0.0 --port 8000
main:app-এর পরিবর্তে আপনার প্রকৃত মডিউল এবং FastAPI অ্যাপ ইনস্ট্যান্সের নাম ব্যবহার করুন (যেমন, your_app_folder.main:app)। আপনি http://your_vps_ip:8000 এ আপনার অ্যাপ্লিকেশন অ্যাক্সেস করতে পারবেন। সার্ভার বন্ধ করতে Ctrl+C চাপুন।
৬. Gunicorn কনফিগার করুন Gunicorn অ্যাপ্লিকেশন সার্ভার হিসেবে কাজ করবে, অনুরোধগুলো পরিচালনা করার জন্য Uvicorn ওয়ার্কারদের পরিচালনা করবে। একটি Gunicorn কনফিগারেশন ফাইল তৈরি করুন (ঐচ্ছিক কিন্তু সুপারিশকৃত) আপনার প্রজেক্ট ডিরেক্টরিতে gunicorn_conf.py নামে একটি ফাইল তৈরি করুন।
nano gunicorn_conf.py
নিম্নলিখিত বিষয়বস্তু যোগ করুন:
bind = "127.0.0.1:8000" workers = 4 # আপনার CPU কোরের সংখ্যার উপর ভিত্তি করে সামঞ্জস্য করুন (প্রতি কোরে 2-4 জন কর্মী একটি সাধারণ সুপারিশ)
worker_class = "uvicorn.workers.UvicornWorker"
workers মানটি সামঞ্জস্য করা যায়; একটি সাধারণ সুপারিশ হল (2 * CPU_CORES) + 1। Gunicorn পরীক্ষা করুন আপনার FastAPI অ্যাপ্লিকেশনটির সাথে Gunicorn সঠিকভাবে শুরু হচ্ছে কিনা তা নিশ্চিত করতে চালান। gunicorn -c gunicorn_conf.py main:app
`gunicorn --charmain:app`-এর পরিবর্তে আপনার অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট ব্যবহার করুন। ৭. Gunicorn-এর জন্য একটি Systemd সার্ভিস তৈরি করুন আপনার অ্যাপ্লিকেশন বুট করার সময় স্বয়ংক্রিয়ভাবে চালু হবে এবং সহজেই পরিচালনাযোগ্য হবে তা নিশ্চিত করতে একটি systemd সার্ভিস তৈরি করুন।
sudo nano /etc/systemd/system/your_fastapi_app.service
নিম্নলিখিত বিষয়বস্তু যোগ করুন, প্লেসহোল্ডারগুলো আপনার প্রকৃত মান দিয়ে প্রতিস্থাপন করুন:
[Unit] Description=আপনার FastAPI অ্যাপ সার্ভ করার জন্য Gunicorn ইনস্ট্যান্সAfter=network.target [Service] User=your_app_user
Group=your_app_user WorkingDirectory=/var/www/your_fastapi_project_name
ExecStart=/var/www/your_fastapi_project_name/venv/bin/gunicorn -c /var/www/your_fastapi_project_name/gunicorn_conf.py main:app Restart=always PrivateTmp=true
[Install] WantedBy=multi-user.target
ক্ষেত্রগুলির ব্যাখ্যা: * User এবং Group: আপনার অ্যাপ্লিকেশনের জন্য তৈরি করা নন-রুট ব্যবহারকারী এবং গ্রুপ। * WorkingDirectory: আপনার FastAPI প্রকল্প ডিরেক্টরির সম্পূর্ণ পথ।
* ExecStart: Gunicorn শুরু করার কমান্ড, যা আপনার ভার্চুয়াল এনভায়রনমেন্টের Gunicorn এক্সিকিউটেবল, আপনার কনফিগারেশন ফাইল এবং আপনার অ্যাপ্লিকেশন এন্ট্রি পয়েন্ট নির্দেশ করে। * Restart=always: নিশ্চিত করে যে সার্ভিস ক্র্যাশ করলে তা রিস্টার্ট হবে। systemd রিলোড করুন, সার্ভিসটি শুরু করুন এবং বুট করার সময় এটি চালু রাখার জন্য সক্ষম করুন।
sudo systemctl daemon-reload sudo systemctl start your_fastapi_app sudo systemctl enable your_fastapi_app
এটি ত্রুটি ছাড়া চলছে কিনা তা নিশ্চিত করতে স্ট্যাটাস এবং লগগুলো পরীক্ষা করুন। sudo systemctl status your_fastapi_app
sudo journalctl -u your_fastapi_app -f
৮. রিভার্স প্রক্সি হিসেবে Nginx কনফিগার করুন
Nginx একটি রিভার্স প্রক্সি হিসেবে কাজ করবে, আপনার Gunicorn অ্যাপ্লিকেশনে অনুরোধ ফরওয়ার্ড করবে এবং স্ট্যাটিক ফাইল ও SSL পরিচালনা করবে।
Nginx ইনস্টল করুন sudo apt install nginx -y
একটি Nginx কনফিগারেশন ফাইল তৈরি করুন আপনার অ্যাপ্লিকেশনের জন্য একটি নতুন Nginx সার্ভার ব্লক কনফিগারেশন ফাইল তৈরি করুন। sudo nano /etc/nginx/sites-available/your_domain
নিম্নলিখিত বিষয়বস্তু যোগ করুন, your_domain.com আপনার প্রকৃত ডোমেইন নাম এবং /var/www/your_fastapi_project_name আপনার প্রজেক্টের পথ দিয়ে প্রতিস্থাপন করুন:
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `
server { listen 80;
server_name your_domain.com www.your_domain.com; location / { proxy_pass http://127.0.0.1:8000;
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;
} # ঐচ্ছিক: Nginx-এর মাধ্যমে সরাসরি স্ট্যাটিক ফাইল পরিবেশন করুন # location /static/ { # alias /var/www/your_fastapi_project_name/static/;
# } }
Nginx কনফিগারেশন সক্ষম করুন কনফিগারেশন সক্ষম করতে এবং সিনট্যাক্স ত্রুটি পরীক্ষা করতে একটি সিম্বোলিক লিঙ্ক তৈরি করুন।<
sudo nginx -t
যদি পরীক্ষা সফল হয়, Nginx পুনরায় চালু করুন। sudo systemctl restart nginx
৯. ফায়ারওয়াল (UFW) কনফিগার করুন যদি আপনার ফায়ারওয়াল সক্রিয় থাকে (যেমন UFW), তাহলে আপনাকে পোর্ট 80 (HTTP) এবং 443 (HTTPS)-এ ট্রাফিক অনুমোদন করতে হবে। sudo ufw allow 'Nginx Full'
sudo ufw enable
১০. Certbot (Let's Encrypt) ব্যবহার করে HTTPS দিয়ে সুরক্ষিত করুন আপনার অ্যাপ্লিকেশন HTTPS দিয়ে সুরক্ষিত করা অত্যন্ত সুপারিশ করা হয়। Certbot Let's Encrypt থেকে SSL সার্টিফিকেট সংগ্রহ এবং কনফিগার করার প্রক্রিয়াটি স্বয়ংক্রিয় করে।
Certbot ইনস্টল করুন sudo apt install certbot python3-certbot-nginx -y
``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ```
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
নির্দেশনাগুলি অনুসরণ করুন। Certbot স্বয়ংক্রিয়ভাবে আপনার Nginx কনফিগারেশন পরিবর্তন করবে এবং স্বয়ংক্রিয় নবায়ন সেট আপ করবে। ১১. আপনার ডিপ্লয়মেন্ট পরীক্ষা করুন আপনার FastAPI অ্যাপ্লিকেশনটি এখন HTTPS ব্যবহার করে আপনার ডোমেইন নামের মাধ্যমে অ্যাক্সেসযোগ্য হওয়া উচিত। একটি ওয়েব ব্রাউজার খুলুন এবং https://your_domain.com এ যান।
ত্রুটি সমাধানের টিপস Gunicorn লগ পরীক্ষা করুন: sudo journalctl -u your_fastapi_app -f Nginx ত্রুটির লগ পরীক্ষা করুন: sudo tail -f /var/log/nginx/error.log
Nginx অ্যাক্সেস লগ পরীক্ষা করুন: sudo tail -f /var/log/nginx/access.log Nginx কনফিগারেশন যাচাই করুন: sudo nginx -t আপনার প্রকল্প ডিরেক্টরি এবং ভার্চুয়াল পরিবেশের জন্য সঠিক ফাইল পারমিশন নিশ্চিত করুন।
ফায়ারওয়াল সমস্যা: UFW নিয়মগুলো পুনরায় যাচাই করুন। এই ধাপগুলো অনুসরণ করে, আপনি আপনার VPS-এ Nginx, Gunicorn, এবং HTTPS সহ একটি প্রোডাকশন-রেডি FastAPI অ্যাপ্লিকেশন ডিপ্লয় করতে পারবেন।