VPS पर Go एप्लिकेशन डिप्लॉय करना: उन्नत गाइड

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

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

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

परिचय: डेवलपमेंट से Go पर प्रोडक्शन-सर्वर तक

\n

आपने Go (Golang) में एक उच्च-प्रदर्शन वाला वेब एप्लिकेशन लिखा है। एक बाइनरी में कंपाइलेशन, स्टैटिक टाइपिंग, बिल्ट-इन नेटवर्किंग - ये सब Node.js या Python से बढ़त देते हैं। लेकिन "यह मेरी मशीन पर काम करता है" प्रोडक्शन के लिए कोई तर्क नहीं है। VPS पर Go एप्लिकेशन का उन्नत डिप्लॉय सिर्फ SSH के माध्यम से फ़ाइलों को कॉपी करना नहीं है। यह CI/CD पाइपलाइन सेटअप, कंटेनरीकरण, reverse proxy, सर्टिफिकेट का ऑटोमैटिक अपडेट, मॉनिटरिंग और graceful shutdown है।

\n

इस लेख में, हम Ubuntu 22.04 LTS पर Golang एप्लिकेशन के लिए एक पूर्ण production-ready स्क्रिप्ट पर चर्चा करेंगे। आप सीखेंगे कि Docker बिल्ड कैसे सेटअप करें, GitHub Actions के माध्यम से zero-downtime डिप्लॉय कैसे व्यवस्थित करें, SSL के साथ Nginx कैसे जोड़ें और Prometheus मेट्रिक्स मॉनिटरिंग कैसे सेटअप करें।

\n\n

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

\n

मान लीजिए कि आपके पास Ubuntu 22.04 के साथ एक VPS (DigitalOcean, Hetzner, Timeweb) है। सबसे पहले सिस्टम को अपडेट करें और बेसिक टूल्स का सेट इंस्टॉल करें:

\n
ssh root@your_server_ip\napt update && apt upgrade -y\napt install -y git curl htop net-tools ufw
\n

sudo-अधिकारों (बिना पासवर्ड, केवल SSH-की से) के साथ deploy यूज़र बनाएँ:

\n
adduser deploy\nusermod -aG sudo deploy\nmkdir /home/deploy/.ssh\ncp ~/.ssh/authorized_keys /home/deploy/.ssh/\nchown -R deploy:deploy /home/deploy/.ssh\nchmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys
\n

UFW फ़ायरवॉल सेटअप करें:

\n
ufw allow OpenSSH\nufw allow 80/tcp\nufw allow 443/tcp\nufw enable
\n

महत्वपूर्ण: /etc/ssh/sshd_config में root के लिए लॉगिन बंद करें (PermitRootLogin no) और SSH को रीस्टार्ट करें (systemctl restart sshd)।

\n\n

1.1 Docker और Docker Compose इंस्टॉल करना

\n

Go एप्लिकेशन के लिए कंटेनरीकरण डी-फैक्टो मानक है। आधिकारिक निर्देशों के अनुसार Docker इंस्टॉल करें:

\n
curl -fsSL https://get.docker.com -o get-docker.sh\nsh get-docker.sh\nusermod -aG docker deploy
\n

वर्जन चेक करें: docker --version। इसके बाद Docker Compose v2 (प्लगइन) इंस्टॉल करें:

\n
apt install -y docker-compose-plugin
\n\n

2. GitHub Actions और Docker के साथ CI/CD पाइपलाइन

\n

उन्नत डिप्लॉय में ऑटोमेशन शामिल है। हम इमेज बनाने और SSH के माध्यम से सर्वर पर भेजने के लिए GitHub Actions का उपयोग करेंगे, जिसके बाद नया कंटेनर चलाया जाएगा।

\n

Go प्रोजेक्ट की संरचना:

\n
myapp/\n├── main.go\n├── go.mod\n├── Dockerfile\n├── docker-compose.yml\n└── .github/workflows/deploy.yml
\n

Dockerfile (Multi-stage build):

\n
FROM golang:1.22-alpine AS builder\nWORKDIR /app\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY . .\nRUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/myapp .\n\nFROM alpine:latest\nRUN apk --no-cache add ca-certificates tzdata\nWORKDIR /root/\nCOPY --from=builder /app/myapp .\nEXPOSE 8080\nCMD ["./myapp"]
\n

docker-compose.yml (प्रोडक्शन के लिए):

\n
version: '3.8'\nservices:\n  app:\n    image: ghcr.io/your_username/myapp:latest\n    restart: always\n    ports:\n      - "127.0.0.1:8080:8080"\n    environment:\n      - DB_URL=postgres://user:pass@db:5432/mydb\n    depends_on:\n      - db\n  db:\n    image: postgres:16-alpine\n    restart: always\n    environment:\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: pass\n    volumes:\n      - pg_data:/var/lib/postgresql/data\nvolumes:\n  pg_data:
\n

GitHub Actions workflow (.github/workflows/deploy.yml):

\n
name: Deploy Go App\non:\n  push:\n    branches: [ main ]\njobs:\n  build-and-deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n                

ब्लॉग

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