एक वर्चुअल प्राइवेट सर्वर (VPS) पर एक FastAPI एप्लिकेशन को डिप्लॉय करने में यह सुनिश्चित करने के लिए कई चरण शामिल होते हैं कि यह कुशलतापूर्वक, सुरक्षित रूप से और विश्वसनीय रूप से चले। यह गाइड आपको Gunicorn को एप्लिकेशन सर्वर के रूप में और Nginx को रिवर्स प्रॉक्सी के रूप में उपयोग करते हुए, Certbot का उपयोग करके आपके एप्लिकेशन को HTTPS के साथ सुरक्षित करने की प्रक्रिया के माध्यम से मार्गदर्शन करेगी। ये निर्देश मुख्य रूप से उबंटू-आधारित सिस्टम के लिए हैं। पूर्वापेक्षाएँ शुरू करने से पहले, सुनिश्चित करें कि आपके पास हैं: * एक FastAPI एप्लिकेशन जो डिप्लॉयमेंट के लिए तैयार हो, जिसमें एक
requirements.txt फ़ाइल शामिल हो जिसमें इसकी सभी डिपेंडेंसीज़ सूचीबद्ध हों। * Ubuntu पर चलने वाला एक VPS (या कोई अन्य Debian-आधारित वितरण)। * आपके VPS तक SSH पहुँच। * एक पंजीकृत डोमेन नाम जो आपके VPS के IP पते पर इंगित करता हो (वैकल्पिक, लेकिन HTTPS के लिए अत्यधिक अनुशंसित)। 1. अपने VPS से कनेक्ट करें और सिस्टम अपडेट करें सबसे पहले, SSH के माध्यम से अपने VPS से कनेक्ट करें और अपने सिस्टम की पैकेज सूची अपडेट करें।
ssh your_username@your_vps_ip sudo apt update && sudo apt upgrade -y
2. पाइथन, पाइप और वर्चुअल एनवायरनमेंट इंस्टॉल करें पाइथन 3, पाइप (पाइथन का पैकेज इंस्टॉलर), और वर्चुअल एनवायरनमेंट बनाने के लिए 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> .
`sudo adduser your_fastapi_app` नोट: 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` फिर, इस नए उपयोगकर्ता में स्विच करें:
su - your_app_user cd /var/www/your_fastapi_project_name
4. एक वर्चुअल एनवायरनमेंट सेट अप करें और डिपेंडेंसी इंस्टॉल करें अपने प्रोजेक्ट के लिए एक पाइथन वर्चुअल एनवायरनमेंट बनाएँ और अपने एप्लिकेशन की डिपेंडेंसी इंस्टॉल करें, जिसमें 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 का उपयोग करके एक बना सकते हैं।
5. अपने 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 दबाएं। 6. ग्युनिकॉर्न कॉन्फ़िगर करें ग्युनिकॉर्न एप्लिकेशन सर्वर के रूप में कार्य करेगा, जो अनुरोधों को संभालने के लिए यूविकॉर्न वर्कर्स का प्रबंधन करेगा।
एक ग्युनिकॉर्न कॉन्फ़िगरेशन फ़ाइल बनाएँ (वैकल्पिक लेकिन अनुशंसित) अपने प्रोजेक्ट डायरेक्टरी में 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 का परीक्षण करें यह सुनिश्चित करने के लिए कि Gunicorn सही ढंग से शुरू हो रहा है, इसे अपने FastAPI एप्लिकेशन के साथ चलाएँ। gunicorn -c gunicorn_conf.py main:app
`gunicorn_conf.py` को आपके एप्लिकेशन के एंट्री पॉइंट से बदलें। 3. 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
8. 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 कॉन्फ़िगरेशन सक्षम करें कॉन्फ़िगरेशन को सक्षम करने और सिंटैक्स त्रुटियों के लिए Nginx का परीक्षण करने हेतु एक सिम्बोलिक लिंक बनाएँ।
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo nginx -t
यदि परीक्षण सफल हो जाता है, तो Nginx को पुनः आरंभ करें।
sudo systemctl restart nginx
9. फ़ायरवॉल (UFW) कॉन्फ़िगर करें यदि आपके पास फ़ायरवॉल सक्षम है (जैसे, UFW), तो आपको पोर्ट 80 (HTTP) और 443 (HTTPS) पर ट्रैफ़िक की अनुमति देनी होगी।
sudo ufw allow 'Nginx Full' sudo ufw enable
10. 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 कॉन्फ़िगरेशन को संशोधित करेगा और स्वचालित नवीनीकरण सेट अप करेगा। 11. अपनी डिप्लॉयमेंट की जाँच करें आपकी 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 नियमों को दोबारा जांचें। इन चरणों का पालन करके, आपके पास Nginx, Gunicorn और HTTPS के साथ आपके VPS पर एक प्रोडक्शन-रेडी FastAPI एप्लिकेशन तैनात होगा।