VPS पर Rust एप्लिकेशन डिप्लॉय करें: A से Z तक पूरी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय

\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\n

1. सर्वर और एनवायरनमेंट तैयार करना

\n\n

कोड डिप्लॉय करने से पहले, ज़मीन तैयार करनी होगी। हम Ubuntu 22.04 LTS का उपयोग करेंगे, लेकिन ये निर्देश Debian के लिए भी काम करेंगे।

\n\n

सर्वर से कनेक्ट करें और बेसिक सेटअप करें

\n\n

SSH के ज़रिए अपने VPS से कनेक्ट करें:

\n\n
ssh root@आपका-सर्वर-आईपी
\n\n

पैकेज अपडेट करें और एक नया यूज़र बनाएं (root के रूप में काम करना अच्छा अभ्यास नहीं है):

\n\n
apt update && apt upgrade -y\nadduser deployer\nusermod -aG sudo deployer
\n\n

नए यूज़र के लिए SSH कीज़ सेट करें ताकि हर बार पासवर्ड न डालना पड़े।

\n\n

सर्वर पर Rust इंस्टॉल करना

\n\n

सबसे भरोसेमंद तरीका आधिकारिक rustup स्क्रिप्ट का उपयोग करना है। deployer यूज़र पर स्विच करें और यह चलाएं:

\n\n
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
\n\n

इंस्टॉलेशन के बाद, shell को रीलोड करें या यह चलाएं:

\n\n
source $HOME/.cargo/env
\n\n

वर्जन चेक करें:

\n\n
rustc --version
\n\n

प्रोडक्शन बिल्ड के लिए, हमें स्टैटिक लिंकिंग की ज़रूरत होगी (ताकि बाइनरी बिना अतिरिक्त लाइब्रेरी के किसी भी Linux पर चले)। musl-tools इंस्टॉल करें:

\n\n
sudo apt install musl-tools -y\nrustup target add x86_64-unknown-linux-musl
\n\n

2. बाइनरी बनाना और सर्वर पर भेजना

\n\n

एप्लिकेशन को अपनी लोकल मशीन (या CI/CD में) बिल्ड करना और फिर तैयार बाइनरी को सर्वर पर कॉपी करना बेहतर है। यह तेज़ है और VPS पर लोड नहीं डालता।

\n\n

प्रोडक्शन वर्जन बिल्ड करना

\n\n

अपने लोकल कंप्यूटर पर, प्रोजेक्ट फोल्डर में यह चलाएं:

\n\n
cargo build --release --target x86_64-unknown-linux-musl
\n\n

यह एक स्टैटिकली लिंक्ड बाइनरी बनाएगा जिसमें glibc की कोई डिपेंडेंसी नहीं होगी। साइज़ बड़ा होगा, लेकिन यह किसी भी Linux पर चलेगा।

\n\n

टेस्ट के लिए Actix-web पर एक सरल वेब सर्वर का उदाहरण (फ़ाइल src/main.rs):

\n\n
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 का उपयोग करें:

\n\n
scp ./target/x86_64-unknown-linux-musl/release/आपका_प्रोजेक्ट deployer@आपका-सर्वर-आईपी:/home/deployer/
\n\n

सर्वर पर, बाइनरी को /usr/local/bin में ले जाएं:

\n\n
sudo mv /home/deployer/आपका_प्रोजेक्ट /usr/local/bin/my-rust-app\nsudo chmod +x /usr/local/bin/my-rust-app
\n\n

3. ऑटो-स्टार्ट के लिए systemd सेटअप करना

\n\n

एप्लिकेशन को सिस्टम स्टार्ट पर चलाने, क्रैश के बाद रीस्टार्ट करने और बैकग्राउंड में चलाने के लिए, हम एक systemd सर्विस बनाएंगे।

\n\n

सर्विस फ़ाइल बनाएं:

\n\n
sudo nano /etc/systemd/system/rust-app.service
\n\n

निम्नलिखित कॉन्फ़िग डालें (deployer को अपने यूज़र से बदलें):

\n\n
[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\n
sudo systemctl enable rust-app\nsudo systemctl start rust-app
\n\n

स्टेटस चेक करें:

\n\n
sudo systemctl status rust-app
\n\n

4. Nginx को Reverse Proxy के रूप में सेटअप करना

\n\n

अपने Rust एप्लिकेशन को पोर्ट 80/443 पर चलाने, SSL/TLS हैंडल करने और लोड बैलेंसिंग के लिए, Nginx को reverse proxy के रूप में सेट करें।

\n\n

Nginx इंस्टॉल करें:

\n\n
sudo apt install nginx -y
\n\n

एक नया Nginx कॉन्फ़िगरेशन फ़ाइल बनाएं:

\n\n
sudo nano /etc/nginx/sites-available/rust-app
\n\n

निम्नलिखित कॉन्फ़िग डालें:

\n\n
server {\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\n
sudo 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 प्रोजेक्ट को दुनिया के सामने ला सकते हैं। हैप्पी कोडिंग!

ब्लॉग

पुस्तक अनुशंसाएँ