परिचय: Go VPS के लिए क्यों आदर्श है, और हम क्या करेंगे
\n\nGo (Golang) एक ऐसी भाषा है जो स्केलेबल और उच्च-प्रदर्शन वाले सर्वर एप्लिकेशन के लिए बनाई गई है। एक स्थिर बाइनरी फ़ाइल में कंपाइलेशन इसे VPS (वर्चुअल प्राइवेट सर्वर) पर डिप्लॉय करने के लिए एक आदर्श उम्मीदवार बनाता है। आपको सर्वर पर इंटरप्रेटर या डिपेंडेंसी स्थापित करने की आवश्यकता नहीं है — बस फ़ाइल कॉपी करें और चलाएं।
\n\nइस लेख में, हम पूरी प्रक्रिया से गुज़रेंगे: Go पर एक सरल HTTP सर्वर लिखने से लेकर इसे VPS पर प्रोडक्शन में चलाने तक, जिसमें ऑटो-स्टार्ट के लिए systemd, रिवर्स प्रॉक्सी के रूप में Nginx और HTTPS के लिए Let's Encrypt का उपयोग शामिल है।
\n\nआप सीखेंगे:
\n- \n
- Linux के लिए Go एप्लिकेशन कंपाइल करना \n
- SSH के माध्यम से बाइनरी फ़ाइल को VPS पर अपलोड करना \n
- स्वचालित स्टार्टअप के लिए systemd कॉन्फ़िगर करना \n
- Nginx इंस्टॉल और कॉन्फ़िगर करना \n
- मुफ़्त SSL प्रमाणपत्र प्राप्त करना \n
चरण 1: Go एप्लिकेशन तैयार करना और कंपाइलेशन
\n\nएक सरल वेब एप्लिकेशन बनाना
\n\nउदाहरण के लिए, हम एक न्यूनतम HTTP सर्वर लिखेंगे जो "Hello, VPS!" का जवाब देता है। main.go फ़ाइल बनाएं:
package main\n\nimport (\n "fmt"\n "net/http"\n)\n\nfunc main() {\n http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n fmt.Fprintf(w, "Hello, VPS!")\n })\n\n fmt.Println("Server started on :8080")\n http.ListenAndServe(":8080", nil)\n}\n\nLinux के लिए कंपाइलेशन
\n\nयदि आप Windows या macOS पर डेवलप कर रहे हैं, तो आपको VPS की लक्ष्य आर्किटेक्चर (आमतौर पर linux/amd64) के लिए बाइनरी कंपाइल करनी होगी। प्रोजेक्ट फ़ोल्डर में टर्मिनल खोलें और निष्पादित करें:
\n\nset GOOS=linux\nset GOARCH=amd64\ngo build -o myapp\n\nLinux/macOS के लिए export का उपयोग करें:
export GOOS=linux\nexport GOARCH=amd64\ngo build -o myapp\n\nपरिणामस्वरूप, myapp नामक एक बाइनरी फ़ाइल दिखाई देगी। इसका आकार जांचें — यह छोटा होगा (लगभग 7-10 MB), क्योंकि Go स्थिर रूप से सब कुछ कंपाइल करता है।
चरण 2: VPS पर अपलोड करना और systemd कॉन्फ़िगरेशन
\n\nसर्वर से कनेक्ट करना और फ़ाइल अपलोड करना
\n\nSSH के माध्यम से अपने VPS से कनेक्ट करें:
\n\nssh root@आपका-सर्वर-आईपी\n\nएप्लिकेशन के लिए एक डायरेक्टरी बनाएं:
\n\nmkdir -p /opt/myapp\ncd /opt/myapp\n\nस्थानीय मशीन पर, SCP के माध्यम से बाइनरी अपलोड करें (एक अलग टर्मिनल में निष्पादित करें):
\n\nscp myapp root@आपका-सर्वर-आईपी:/opt/myapp/\n\nसर्वर पर वापस जाएं और निष्पादन अनुमति दें:
\n\nchmod +x /opt/myapp/myapp\n\nsystemd सेवा बनाना
\n\nएप्लिकेशन को सिस्टम स्टार्टअप पर स्वचालित रूप से शुरू करने और विफलता पर पुनरारंभ करने के लिए, हम एक systemd यूनिट बनाएंगे। फ़ाइल बनाएं:
\n\nnano /etc/systemd/system/myapp.service\n\nनिम्नलिखित सामग्री डालें:
\n\n[Unit]\nDescription=My Go Application\nAfter=network.target\n\n[Service]\nType=simple\nUser=www-data\nGroup=www-data\nWorkingDirectory=/opt/myapp\nExecStart=/opt/myapp/myapp\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\n\nपैरामीटर का स्पष्टीकरण:
\n- \n
UserऔरGroup— वह उपयोगकर्ता जिससे एप्लिकेशन चलेगा (root की अनुशंसा नहीं की जाती है)। \n Restart=on-failure— क्रैश होने पर स्वचालित पुनरारंभ। \n RestartSec=5— पुनरारंभ से पहले विराम। \n
अब सेवा को सक्रिय और प्रारंभ करें:
\n\nsystemctl daemon-reload\nsystemctl enable myapp\nsystemctl start myapp\nsystemctl status myapp\n\nयदि सब कुछ सही ढंग से किया गया है, तो आप active (running) स्थिति देखेंगे। जांचें कि एप्लिकेशन स्थानीय रूप से जवाब दे रहा है:
curl http://localhost:8080\n\nचरण 3: रिवर्स प्रॉक्सी के रूप में Nginx कॉन्फ़िगरेशन
\n\nपोर्ट 8 के माध्यम से एप्लिकेशन तक सीधी पहुंच