परिचय: क्यों Go और VPS आपके प्रोजेक्ट के लिए परफेक्ट जोड़ी हैं
\n\nGo (Golang) एक कंपाइल्ड भाषा है जो परफॉरमेंस और सादगी के लिए बनाई गई है। डिप्लॉयमेंट में इसका सबसे बड़ा फायदा है स्टैटिक कंपाइलेशन। आपको सर्वर पर इंटरप्रेटर या वर्चुअल मशीन इंस्टॉल करने की ज़रूरत नहीं है। बस एक बाइनरी फ़ाइल अपलोड करें और चलाएं। यह Go ऐप को VPS पर डिप्लॉय करना बेहद तेज़ और भरोसेमंद बनाता है।
\n\nइस गाइड में हम पूरी प्रक्रिया कवर करेंगे: एक साधारण Go HTTP सर्वर लिखने से लेकर Ubuntu 22.04 VPS पर इसे चलाने तक। हम systemd को ऑटो-स्टार्ट के लिए, Nginx को रिवर्स प्रॉक्सी के तौर पर और Let's Encrypt को HTTPS के लिए सेट करेंगे। सभी कोड उदाहरण उपयोग के लिए तैयार हैं।
\n\n1. VPS तैयार करना और Go ऐप लिखना
\n\n1.1. सर्वर की शुरुआती सेटअप
\n\nVPS खरीदने के बाद (जैसे DigitalOcean, Timeweb या Hetzner से), SSH के ज़रिए कनेक्ट करें:
\n\nssh root@आपका_सर्वर_IP\n\nबेसिक सुरक्षा सेटअप करें:
\n\napt update && apt upgrade -y\nadduser deployer\nusermod -aG sudo deployer\n# /etc/ssh/sshd_config में रूट लॉगिन बंद करें\n# PermitRootLogin no\nsystemctl restart sshd\n\nफ़ायरवॉल (UFW) में पोर्ट 80 और 443 खोलें:
\n\nufw allow 22\nufw allow 80\nufw allow 443\nufw enable\n\n1.2. डिप्लॉय के लिए सरल Go ऐप
\n\nअपनी लोकल मशीन पर main.go फ़ाइल बनाएं:
package main\n\nimport (\n\t"fmt"\n\t"log"\n\t"net/http"\n\t"os"\n)\n\nfunc main() {\n\tport := os.Getenv("PORT")\n\tif port == "" {\n\t\tport = "8080"\n\t}\n\n\thttp.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n\t\tfmt.Fprintf(w, "Go से नमस्ते! सर्वर पोर्ट %s पर चल रहा है", port)\n\t})\n\n\thttp.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {\n\t\tw.WriteHeader(http.StatusOK)\n\t\tw.Write([]byte("OK"))\n\t})\n\n\tlog.Printf("सर्वर :%s पर शुरू हो रहा है", port)\n\tlog.Fatal(http.ListenAndServe(":"+port, nil))\n}\n\nलोकल पर टेस्ट करें:
\n\ngo run main.go\n\nब्राउज़र में http://localhost:8080 खोलें। अगर स्वागत संदेश दिखे, तो सब सही है।
2. बाइनरी बनाना और सर्वर पर अपलोड करना
\n\n2.1. Linux के लिए क्रॉस-कंपाइलेशन
\n\nअपनी लोकल मशीन पर (चाहे Windows हो या macOS) यह कमांड चलाएं:
\n\nGOOS=linux GOARCH=amd64 go build -o myapp main.go\n\n-o myapp फ़्लैग आउटपुट फ़ाइल का नाम सेट करता है। GOOS और GOARCH एनवायरनमेंट वेरिएबल टार्गेट आर्किटेक्चर (64-बिट Linux) तय करते हैं।
बिल्ड के बाद आपके पास myapp नाम की बाइनरी फ़ाइल होगी, जो लगभग 10–15 MB की होगी।
2.2. VPS पर अपलोड करना
\n\nफ़ाइल कॉपी करने के लिए scp का उपयोग करें:
scp myapp deployer@आपका_सर्वर_IP:/home/deployer/myapp\n\nया, अगर rsync का उपयोग कर रहे हैं:
\n\nrsync -avz myapp deployer@आपका_सर्वर_IP:/home/deployer/myapp\n\nसर्वर पर, बाइनरी को सिस्टम डायरेक्टरी में ले जाएं और इसे एक्ज़ीक्यूटेबल बनाएं:
\n\nsudo mv /home/deployer/myapp /usr/local/bin/myapp\nsudo chmod +x /usr/local/bin/myapp\n\n3. systemd और ऑटोमैटिक स्टार्ट की सेटअप
\n\n3.1. सर्विस फ़ाइल बनाना
\n\nSystemd हमारे ऐप को मैनेज करेगा: सिस्टम स्टार्ट पर चलाएगा, क्रैश होने पर रीस्टार्ट करेगा और लॉग इकट्ठा करेगा।
\n\n/etc/systemd/system/myapp.service फ़ाइल बनाएं:
sudo nano /etc/systemd/system/myapp.service\n\nयह कॉन्फ़िगरेशन डालें:
\n\n[Unit]\nDescription=Go एप्लिकेशन सर्वर\nAfter=network.target\n\n[Service]\nType=simple\nUser=deployer\nGroup=deployer\nWorkingDirectory=/usr/local/bin\nExecStart=/usr/local/bin/myapp\nRestart=always\nRestartSec=5\nEnvironment=PORT=8080\nEnvironment=GIN_MODE=release\n\n[Install]\nWantedBy=multi-user.target\n\nसर्विस को सक्षम करें और शुरू करें:
\n\nsudo systemctl daemon-reload\nsudo systemctl enable myapp\nsudo systemctl start myapp\n\nस्टेटस चेक करें:
\n\nsudo systemctl status myapp\n\nअगर active (running) दिखे, तो आपका Go ऐप अब एक सर्विस के रूप में चल रहा है।
4. Nginx को रिवर्स प्रॉक्सी के रूप में सेट करना
\n\n4.1. Nginx इंस्टॉल और कॉन्फ़िगर करना
\n\nNginx इंस्टॉल करें:
\n\nsudo apt install nginx -y\n\nअपने डोमेन के लिए एक कॉन्फ़िगरेशन फ़ाइल बनाएं:
\n\nsudo nano /etc/nginx/sites-available/myapp\n\nयह कॉन्फ़िगरेशन डालें:
\n\nserver {\n listen 80;\n server_name yourdomain.com www.yourdomain.com;\n\n location / {\n proxy_pass http://localhost:8080;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection 'upgrade';\n proxy_set_header Host $host;\n proxy_cache_bypass $http_upgrade;\n }\n}\n\nसाइट को सक्षम करें और Nginx को रीलोड करें:
\n\nsudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl reload nginx\n\n5. HTTPS सेटअप (Let's Encrypt SSL)
\n\nCertbot इंस्टॉल करें:
\n\nsudo apt install certbot python3-certbot-nginx -y\n\nSSL सर्टिफिकेट प्राप्त करें:
\n\nsudo certbot --nginx -d yourdomain.com -d www.yourdomain.com\n\nCertbot ऑटोमैटिकली Nginx कॉन्फ़िगरेशन को अपडेट करेगा और HTTPS को इनेबल करेगा।
\n\nनिष्कर्ष
\n\nअब आपका Go ऐप VPS पर प्रोडक्शन में चलने के लिए तैयार है! आपने सीखा कि कैसे एक Go एप्लिकेशन को बिल्ड करना, VPS पर अपलोड करना, systemd के साथ ऑटो-स्टार्ट सेट करना, Nginx को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करना और HTTPS जोड़ना है।
\n\nअगले कदम के रूप में, आप डेटाबेस कनेक्शन, API रूट्स और CI/CD पाइपलाइन जोड़ सकते हैं। हैप्पी कोडिंग!