परिचय: VPS पर Rust का उन्नत डिप्लॉय क्यों आवश्यक है
\nRust में डेवलपमेंट केवल आधा काम है। दूसरा, कम महत्वपूर्ण नहीं, हिस्सा विश्वसनीय और सुरक्षित डिप्लॉयमेंट है। बुनियादी तरीके, जैसे मैन्युअल कंपाइलेशन और cargo run के माध्यम से चलाना, प्रोडक्शन के लिए उपयुक्त नहीं हैं। उन्नत स्तर पर ऑटोमेशन, प्रोसेस आइसोलेशन, मॉनिटरिंग और उच्च उपलब्धता सुनिश्चित करना आवश्यक है।
इस लेख में, हम देखेंगे कि Docker, CI/CD (GitHub Actions), ऑटोस्टार्ट के लिए systemd और रिवर्स प्रॉक्सी के रूप में Nginx का उपयोग करके VPS पर Rust एप्लिकेशन का डिप्लॉयमेंट कैसे कॉन्फ़िगर करें। सभी कोड उदाहरण Rust और Bash में दिए गए हैं।
\n\n1. VPS और वातावरण की तैयारी
\n1.1. सर्वर की बुनियादी सेटिंग
\nमान लीजिए कि आपके पास Ubuntu 22.04 LTS पर चलने वाला VPS है। सबसे पहले पैकेज अपडेट करें और आवश्यक टूल इंस्टॉल करें:
\nsudo apt update && sudo apt upgrade -y\nsudo apt install -y curl git build-essential pkg-config libssl-dev\nrustup के माध्यम से Rust इंस्टॉल करें:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\nrustc --version # जाँच\n1.2. Docker की स्थापना
\nDocker वातावरण का आइसोलेशन और पुनरुत्पादन सुनिश्चित करेगा:
\nsudo apt install -y docker.io\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\nnewgrp docker\n1.3. Nginx की स्थापना
\nNginx रिवर्स प्रॉक्सी और लोड बैलेंसर के रूप में कार्य करेगा:
\nsudo apt install -y nginx\nsudo systemctl enable --now nginx\n\n2. Docker के साथ Rust एप्लिकेशन का कंटेनरीकरण
\n2.1. मल्टी-स्टेज बिल्ड
\nइमेज का आकार कम करने के लिए मल्टी-स्टेज बिल्ड का उपयोग करें। प्रोजेक्ट की रूट डायरेक्टरी में Dockerfile बनाएं:
# बिल्ड स्टेज\nFROM rust:1.75-slim-bookworm AS builder\nWORKDIR /app\nCOPY Cargo.toml Cargo.lock ./\nCOPY src ./src\nRUN cargo build --release\n\n# फाइनल स्टेज\nFROM debian:bookworm-slim\nRUN apt update && apt install -y ca-certificates && rm -rf /var/lib/apt/lists/*\nWORKDIR /app\nCOPY --from=builder /app/target/release/my_app .\nEXPOSE 8080\nCMD ["./my_app"]\nयहाँ my_app आपकी बाइनरी फ़ाइल का नाम है। सुनिश्चित करें कि Cargo.toml में name = "my_app" निर्दिष्ट है।
2.2. कंटेनर का बिल्ड और रन
\ndocker build -t my_app:latest .\ndocker run -d --name my_app -p 8080:8080 my_app:latest\nजाँचें कि एप्लिकेशन प्रतिक्रिया दे रहा है:
\ncurl http://localhost:8080\n\n3. ऑटोस्टार्ट और मॉनिटरिंग का कॉन्फ़िगरेशन (systemd + Docker Compose)
\n3.1. सेवाओं के प्रबंधन के लिए Docker Compose
\ndocker-compose.yml बनाएं:
version: '3.8'\nservices:\n app:\n image: my_app:latest\n restart: always\n ports:\n - "127.0.0.1:8080:8080"\n environment:\n - RUST_LOG=info\n healthcheck:\n test: ["CMD", "curl", "-f", "http://localhost:8080/health"]\n interval: 30s\n timeout: 10s\n retries: 3\nध्यान दें: ports 127.0.0.1 से बंधा है, ताकि बाहरी अनुरोध केवल Nginx के माध्यम से आएं।
3.2. सेवा प्रबंधन के लिए Systemd यूनिट
\nफ़ाइल /etc/systemd/system/my_app.service बनाएं:
[Unit]\nDescription=My Rust Application\nAfter=docker.service\nRequires=docker.service\n\n[Service]\nType=oneshot\nRemainAfterExit=yes\nWorkingDirectory=/opt/my_app\nExecStart=/usr/bin/docker compose up -d\nExecStop=/usr/bin/docker compose down\nUser=deploy\nGroup=deploy\n\n[Install]\nWantedBy=multi-user.target\nइसे सक्षम और प्रारंभ करें:
\nsudo systemctl daemon-reload\nsudo systemctl enable my_app\nsudo systemctl start my_app\n\n