परिचय
\n\nआपने Rust में एक शानदार एप्लिकेशन लिखा है। यह तेज़, सुरक्षित और क्रैश-फ्री है। लेकिन इसे 24/7 एक रिमोट सर्वर पर कैसे चलाएं ताकि उपयोगकर्ता इसे एक्सेस कर सकें? VPS (Virtual Private Server) पर Rust एप्लिकेशन डिप्लॉय करना एक प्रक्रिया है जिसमें बाइनरी कंपाइल करना, एनवायरनमेंट सेटअप करना, सिस्टम सर्विस के रूप में चलाना और अक्सर reverse proxy लगाना शामिल है।
\n\nइस लेख में हम शून्य से लेकर पूरी तरह से काम करने वाले Rust एप्लिकेशन तक का पूरा सफर तय करेंगे, जो Ubuntu VPS पर डिप्लॉय होगा। आप सीखेंगे कि सर्वर कैसे तैयार करें, प्रोजेक्ट कैसे बिल्ड करें, ऑटो-स्टार्ट कैसे सेट करें और सुरक्षा कैसे सुनिश्चित करें। यह गाइड वेब सर्वर (Actix-web, Axum, Rocket) और अन्य Rust डेमॉन दोनों के लिए उपयुक्त है।
\n\nचलिए शुरू करते हैं।
\n\n1. सर्वर और एनवायरनमेंट तैयार करना
\n\nकोड डिप्लॉय करने से पहले, ज़मीन तैयार करनी होगी। हम Ubuntu 22.04 LTS का उपयोग करेंगे, लेकिन ये निर्देश Debian के लिए भी काम करेंगे।
\n\nसर्वर से कनेक्ट करें और बेसिक सेटअप करें
\n\nSSH के ज़रिए अपने VPS से कनेक्ट करें:
\n\nssh root@आपका-सर्वर-आईपी\n\nपैकेज अपडेट करें और एक नया यूज़र बनाएं (root के रूप में काम करना अच्छा अभ्यास नहीं है):
\n\napt update && apt upgrade -y\nadduser deployer\nusermod -aG sudo deployer\n\nनए यूज़र के लिए SSH कीज़ सेट करें ताकि हर बार पासवर्ड न डालना पड़े।
\n\nसर्वर पर Rust इंस्टॉल करना
\n\nसबसे भरोसेमंद तरीका आधिकारिक rustup स्क्रिप्ट का उपयोग करना है। deployer यूज़र पर स्विच करें और यह चलाएं:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\nइंस्टॉलेशन के बाद, shell को रीलोड करें या यह चलाएं:
\n\nsource $HOME/.cargo/env\n\nवर्जन चेक करें:
\n\nrustc --version\n\nप्रोडक्शन बिल्ड के लिए, हमें स्टैटिक लिंकिंग की ज़रूरत होगी (ताकि बाइनरी बिना अतिरिक्त लाइब्रेरी के किसी भी Linux पर चले)। musl-tools इंस्टॉल करें:
\n\nsudo apt install musl-tools -y\nrustup target add x86_64-unknown-linux-musl\n\n2. बाइनरी बनाना और सर्वर पर भेजना
\n\nएप्लिकेशन को अपनी लोकल मशीन (या CI/CD में) बिल्ड करना और फिर तैयार बाइनरी को सर्वर पर कॉपी करना बेहतर है। यह तेज़ है और VPS पर लोड नहीं डालता।
\n\nप्रोडक्शन वर्जन बिल्ड करना
\n\nअपने लोकल कंप्यूटर पर, प्रोजेक्ट फोल्डर में यह चलाएं:
\n\ncargo build --release --target x86_64-unknown-linux-musl\n\nयह एक स्टैटिकली लिंक्ड बाइनरी बनाएगा जिसमें glibc की कोई डिपेंडेंसी नहीं होगी। साइज़ बड़ा होगा, लेकिन यह किसी भी Linux पर चलेगा।
\n\nटेस्ट के लिए Actix-web पर एक सरल वेब सर्वर का उदाहरण (फ़ाइल src/main.rs):
use actix_web::{web, App, HttpServer, Responder};\n\nasync fn hello() -> impl Responder {\n "VPS पर Rust से नमस्ते!"\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n HttpServer::new(|| {\n App::new().route("/", web::get().to(hello))\n })\n .bind("0.0.0.0:8080")?\n .run()\n .await\n}\n\nसर्वर पर कॉपी करना
\n\nसुरक्षित कॉपी के लिए scp का उपयोग करें:
scp ./target/x86_64-unknown-linux-musl/release/आपका_प्रोजेक्ट deployer@आपका-सर्वर-आईपी:/home/deployer/\n\nसर्वर पर, बाइनरी को /usr/local/bin में ले जाएं:
sudo mv /home/deployer/आपका_प्रोजेक्ट /usr/local/bin/my-rust-app\nsudo chmod +x /usr/local/bin/my-rust-app\n\n3. ऑटो-स्टार्ट के लिए systemd सेटअप करना
\n\nएप्लिकेशन को सिस्टम स्टार्ट पर चलाने, क्रैश के बाद रीस्टार्ट करने और बैकग्राउंड में चलाने के लिए, हम एक systemd सर्विस बनाएंगे।
\n\nसर्विस फ़ाइल बनाएं:
\n\nsudo nano /etc/systemd/system/rust-app.service\n\nनिम्नलिखित कॉन्फ़िग डालें (deployer को अपने यूज़र से बदलें):
[Unit]\nDescription=Rust एप्लिकेशन\nAfter=network.target\n\n[Service]\nType=simple\nUser=deployer\nWorkingDirectory=/home/deployer\nExecStart=/usr/local/bin/my-rust-app\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n\nसर्विस को सक्षम और प्रारंभ करें:
\n\nsudo systemctl enable rust-app\nsudo systemctl start rust-app\n\nस्टेटस चेक करें:
\n\nsudo systemctl status rust-app\n\n4. Nginx को Reverse Proxy के रूप में सेटअप करना
\n\nअपने Rust एप्लिकेशन को पोर्ट 80/443 पर चलाने, SSL/TLS हैंडल करने और लोड बैलेंसिंग के लिए, Nginx को reverse proxy के रूप में सेट करें।
\n\nNginx इंस्टॉल करें:
\n\nsudo apt install nginx -y\n\nएक नया Nginx कॉन्फ़िगरेशन फ़ाइल बनाएं:
\n\nsudo nano /etc/nginx/sites-available/rust-app\n\nनिम्नलिखित कॉन्फ़िग डालें:
\n\nserver {\n listen 80;\n server_name आपका-डोमेन.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\nसाइट को सक्षम करें और Nginx को रीलोड करें:
\n\nsudo ln -s /etc/nginx/sites-available/rust-app /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl reload nginx\n\nअब आपका Rust एप्लिकेशन पोर्ट 80 पर एक्सेसिबल होना चाहिए। प्रोडक्शन के लिए Certbot के साथ SSL/TLS (HTTPS) सेट करना न भूलें।
\n\nनिष्कर्ष
\n\nआपने सीखा कि VPS पर Rust एप्लिकेशन को कैसे डिप्लॉय किया जाता है: सर्वर सेटअप, स्टैटिक बाइनरी बिल्ड, systemd के साथ ऑटो-स्टार्ट, और Nginx reverse proxy। यह सेटअप प्रोडक्शन-रेडी है और स्केलेबल भी है।
\n\nअब आप अपने Rust प्रोजेक्ट को दुनिया के सामने ला सकते हैं। हैप्पी कोडिंग!