परिचय: Rust प्रोडक्शन के लिए आदर्श क्यों है और इसे कैसे डिप्लॉय करें
\nRust एक सिस्टम प्रोग्रामिंग भाषा है जो C++ के प्रदर्शन को मेमोरी सुरक्षा के साथ जोड़ती है। गार्बेज कलेक्टर की अनुपस्थिति और नेटिव बाइनरी फ़ाइल में कंपाइल करने की क्षमता के कारण, Rust एप्लिकेशन VPS (Virtual Private Server) पर डिप्लॉयमेंट के लिए आदर्श हैं। इस लेख में हम डिप्लॉय के पूरे चक्र को कवर करेंगे: प्रोजेक्ट बिल्ड करने से लेकर रिवर्स प्रॉक्सी और मॉनिटरिंग सेट करने तक। आप सीखेंगे कि अपने Rust एप्लिकेशन को एक स्थिर प्रोडक्शन सेवा में कैसे बदलें।
\n\n1. तैयारी: VPS के लिए Rust एप्लिकेशन बनाना
\nपहला कदम एक ऑप्टिमाइज़्ड बाइनरी फ़ाइल बनाना है। इसके लिए हमें आपकी लोकल मशीन (या सर्वर पर) Rust toolchain की आवश्यकता होगी।
\n\n1.1. रिलीज़ मोड में कंपाइलेशन
\nप्रोजेक्ट की रूट डायरेक्टरी में यह कमांड चलाएँ:
\ncargo build --release\nयह target/release/ फ़ोल्डर में एक ऑप्टिमाइज़्ड बाइनरी बनाएगा। actix-web या rocket पर वेब एप्लिकेशन के लिए, फ़ाइल का आकार 5-15 MB हो सकता है। आकार कम करने के लिए Cargo.toml में जोड़ें:
[profile.release]\nopt-level = 3\nlto = true\ncodegen-units = 1\nstrip = true\n\n1.2. एनवायरनमेंट वेरिएबल्स सेट करना
\nप्रोडक्शन कॉन्फ़िगरेशन के लिए .env.prod फ़ाइल बनाएँ। वेब सर्वर के लिए उदाहरण:
DATABASE_URL=postgres://user:pass@localhost:5432/mydb\nRUST_LOG=info\nSERVER_HOST=0.0.0.0\nSERVER_PORT=8080\n\n1.3. फ़ाइलों को VPS पर स्थानांतरित करना
\nबाइनरी, स्टैटिक फ़ाइलें और कॉन्फ़िगरेशन को सर्वर पर कॉपी करें। scp या rsync का उपयोग करें:
\nscp target/release/myapp user@your-vps-ip:/home/user/app/\nscp -r static/ user@your-vps-ip:/home/user/app/static/\nscp .env.prod user@your-vps-ip:/home/user/app/.env\n\n2. सर्वर सेटअप: systemd और Nginx
\nसर्वर रीबूट होने पर एप्लिकेशन को स्वचालित रूप से शुरू करने और सुरक्षा सुनिश्चित करने के लिए, हम systemd और Nginx का उपयोग करते हैं।
\n\n2.1. systemd सेवा बनाना
\nफ़ाइल बनाएँ /etc/systemd/system/myapp.service:
[Unit]\nDescription=Rust web application\nAfter=network.target\n\n[Service]\nUser=www-data\nWorkingDirectory=/home/user/app\nExecStart=/home/user/app/myapp\nRestart=always\nRestartSec=10\nEnvironmentFile=/home/user/app/.env\n\n[Install]\nWantedBy=multi-user.target\nसेवा को सक्रिय करें:
\nsudo systemctl daemon-reload\nsudo systemctl enable myapp\nsudo systemctl start myapp\nsudo systemctl status myapp\n\n2.2. Nginx को रिवर्स प्रॉक्सी के रूप में सेट करना
\nRust एप्लिकेशन पोर्ट 8080 (आंतरिक) पर सुनेगा, और Nginx बाहरी अनुरोधों को पोर्ट 80/443 पर स्वीकार करेगा। कॉन्फ़िगरेशन बनाएँ /etc/nginx/sites-available/myapp:
server {\n listen 80;\n server_name your-domain.com;\n\n location / {\n proxy_pass http://127.0.0.1:8080;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n }\n\n location /static/ {\n alias /home/user/app/static/;\n expires 30d;\n }\n}\nसाइट को सक्रिय करें:
\nsudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl reload nginx\n\n2.3. HTTPS सेटअप (वैकल्पिक)
\nCertbot इंस्टॉल करें और SSL प्रमाणपत्र प्राप्त करें:
\nsudo apt install certbot python3-certbot-nginx\nsudo certbot --nginx -d your-domain.com\n\n3. डेटाबेस प्रबंधन और माइग्रेशन
\nयदि आपका Rust एप्लिकेशन डेटाबेस का उपयोग करता है (जैसे, diesel या sqlx के साथ PostgreSQL), तो इसे VPS पर सेट करें।
3.1. PostgreSQL इंस्टॉलेशन
\nsudo apt update\nsudo apt install postgresql postgres