VPS पर Go ऐप डिप्लॉय करें: पूरी स्टेप-बाय-स्टेप गाइड

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

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

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

परिचय: क्यों Go और VPS आपके प्रोजेक्ट के लिए परफेक्ट जोड़ी हैं

\n\n

Go (Golang) एक कंपाइल्ड भाषा है जो परफॉरमेंस और सादगी के लिए बनाई गई है। डिप्लॉयमेंट में इसका सबसे बड़ा फायदा है स्टैटिक कंपाइलेशन। आपको सर्वर पर इंटरप्रेटर या वर्चुअल मशीन इंस्टॉल करने की ज़रूरत नहीं है। बस एक बाइनरी फ़ाइल अपलोड करें और चलाएं। यह Go ऐप को VPS पर डिप्लॉय करना बेहद तेज़ और भरोसेमंद बनाता है।

\n\n

इस गाइड में हम पूरी प्रक्रिया कवर करेंगे: एक साधारण Go HTTP सर्वर लिखने से लेकर Ubuntu 22.04 VPS पर इसे चलाने तक। हम systemd को ऑटो-स्टार्ट के लिए, Nginx को रिवर्स प्रॉक्सी के तौर पर और Let's Encrypt को HTTPS के लिए सेट करेंगे। सभी कोड उदाहरण उपयोग के लिए तैयार हैं।

\n\n

1. VPS तैयार करना और Go ऐप लिखना

\n\n

1.1. सर्वर की शुरुआती सेटअप

\n\n

VPS खरीदने के बाद (जैसे DigitalOcean, Timeweb या Hetzner से), SSH के ज़रिए कनेक्ट करें:

\n\n
ssh root@आपका_सर्वर_IP
\n\n

बेसिक सुरक्षा सेटअप करें:

\n\n
apt 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\n
ufw allow 22\nufw allow 80\nufw allow 443\nufw enable
\n\n

1.2. डिप्लॉय के लिए सरल Go ऐप

\n\n

अपनी लोकल मशीन पर main.go फ़ाइल बनाएं:

\n\n
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\n
go run main.go
\n\n

ब्राउज़र में http://localhost:8080 खोलें। अगर स्वागत संदेश दिखे, तो सब सही है।

\n\n

2. बाइनरी बनाना और सर्वर पर अपलोड करना

\n\n

2.1. Linux के लिए क्रॉस-कंपाइलेशन

\n\n

अपनी लोकल मशीन पर (चाहे Windows हो या macOS) यह कमांड चलाएं:

\n\n
GOOS=linux GOARCH=amd64 go build -o myapp main.go
\n\n

-o myapp फ़्लैग आउटपुट फ़ाइल का नाम सेट करता है। GOOS और GOARCH एनवायरनमेंट वेरिएबल टार्गेट आर्किटेक्चर (64-बिट Linux) तय करते हैं।

\n\n

बिल्ड के बाद आपके पास myapp नाम की बाइनरी फ़ाइल होगी, जो लगभग 10–15 MB की होगी।

\n\n

2.2. VPS पर अपलोड करना

\n\n

फ़ाइल कॉपी करने के लिए scp का उपयोग करें:

\n\n
scp myapp deployer@आपका_सर्वर_IP:/home/deployer/myapp
\n\n

या, अगर rsync का उपयोग कर रहे हैं:

\n\n
rsync -avz myapp deployer@आपका_सर्वर_IP:/home/deployer/myapp
\n\n

सर्वर पर, बाइनरी को सिस्टम डायरेक्टरी में ले जाएं और इसे एक्ज़ीक्यूटेबल बनाएं:

\n\n
sudo mv /home/deployer/myapp /usr/local/bin/myapp\nsudo chmod +x /usr/local/bin/myapp
\n\n

3. systemd और ऑटोमैटिक स्टार्ट की सेटअप

\n\n

3.1. सर्विस फ़ाइल बनाना

\n\n

Systemd हमारे ऐप को मैनेज करेगा: सिस्टम स्टार्ट पर चलाएगा, क्रैश होने पर रीस्टार्ट करेगा और लॉग इकट्ठा करेगा।

\n\n

/etc/systemd/system/myapp.service फ़ाइल बनाएं:

\n\n
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\n
sudo systemctl daemon-reload\nsudo systemctl enable myapp\nsudo systemctl start myapp
\n\n

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

\n\n
sudo systemctl status myapp
\n\n

अगर active (running) दिखे, तो आपका Go ऐप अब एक सर्विस के रूप में चल रहा है।

\n\n

4. Nginx को रिवर्स प्रॉक्सी के रूप में सेट करना

\n\n

4.1. Nginx इंस्टॉल और कॉन्फ़िगर करना

\n\n

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

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

अपने डोमेन के लिए एक कॉन्फ़िगरेशन फ़ाइल बनाएं:

\n\n
sudo nano /etc/nginx/sites-available/myapp
\n\n

यह कॉन्फ़िगरेशन डालें:

\n\n
server {\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\n
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl reload nginx
\n\n

5. HTTPS सेटअप (Let's Encrypt SSL)

\n\n

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

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

SSL सर्टिफिकेट प्राप्त करें:

\n\n
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
\n\n

Certbot ऑटोमैटिकली Nginx कॉन्फ़िगरेशन को अपडेट करेगा और HTTPS को इनेबल करेगा।

\n\n

निष्कर्ष

\n\n

अब आपका Go ऐप VPS पर प्रोडक्शन में चलने के लिए तैयार है! आपने सीखा कि कैसे एक Go एप्लिकेशन को बिल्ड करना, VPS पर अपलोड करना, systemd के साथ ऑटो-स्टार्ट सेट करना, Nginx को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करना और HTTPS जोड़ना है।

\n\n

अगले कदम के रूप में, आप डेटाबेस कनेक्शन, API रूट्स और CI/CD पाइपलाइन जोड़ सकते हैं। हैप्पी कोडिंग!

ब्लॉग

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