نشر تطبيق Go على VPS: دليل خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا نشر تطبيق Go على VPS بسيط وفعال

تشتهر لغة Go (Golang) بأدائها العالي وبساطتها. واحدة من المزايا الرئيسية للغة هي التجميع في ملف ثنائي ثابت واحد لا يتطلب تثبيت بيئات تشغيل إضافية على الخادم. وهذا يجعل نشر تطبيق Go على VPS سريعًا وموثوقًا بشكل لا يصدق. في هذه المقالة، سنشرح دورة النشر الكاملة: من إعداد الخادم إلى تكوين الـ reverse proxy و HTTPS. ستحصل على قائمة مهام جاهزة يمكن استخدامها لأي مشروع Go.



1. إعداد VPS وتثبيت البرامج الضرورية

قبل تحميل الكود، تحتاج إلى تجهيز الخادم. من المفترض أن لديك VPS مع Ubuntu 22.04 أو 24.04. اتصل عبر SSH وقم بتحديث النظام.

sudo apt update && sudo apt upgrade -y

تثبيت Go على الخادم

على الرغم من أن Go يتم تجميعه في ملف ثنائي، إلا أن الخادم قد يحتاج إلى مترجم للبناء. سنقوم بتثبيت أحدث إصدار:

wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gzexport PATH=$PATH:/usr/local/go/binecho 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

تحقق من التثبيت: go version.



تثبيت Git و Nginx

ستحتاج إلى Git لاستنساخ المستودع، و Nginx للـ reverse proxy والملفات الثابتة.

sudo apt install git nginx -y


2. بناء وتشغيل تطبيق Go

سنشرح العملية باستخدام مثال خادم HTTP بسيط. قم بإنشاء ملف main.go:

package main

import (\t"fmt"\t"net/http")

func handler(w http.ResponseWriter, r *http.Request) {\tfmt.Fprintf(w, "Hello from Go on VPS!")}

func main() {\thttp.HandleFunc("/", handler)\tfmt.Println("Server started on :8080")\thttp.ListenAndServe(":8080", nil)}

قم ببناء الملف الثنائي لنظام Linux (حتى لو كنت تعمل على Windows/Mac):

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

الآن قم بتحميل الملف الثنائي إلى الخادم. استخدم SCP أو Rsync:

scp myapp user@your-server-ip:~/

على الخادم، اجعل الملف قابلاً للتنفيذ وقم بتشغيله:

chmod +x ~/myapp./myapp &

تحقق من العمل: curl http://localhost:8080. إذا رأيت "Hello from Go on VPS!" — فكل شيء يعمل.



3. إعداد systemd للتشغيل التلقائي

التشغيل اليدوي ليس ممارسة جيدة. استخدم systemd لضمان تشغيل التطبيق عند بدء تشغيل النظام وإعادة تشغيله في حالة حدوث أعطال.

قم بإنشاء ملف الخدمة:

sudo nano /etc/systemd/system/myapp.service

أضف التكوين:

[Unit]Description=Go Application ServiceAfter=network.target

[Service]Type=simpleUser=www-dataWorkingDirectory=/home/userExecStart=/home/user/myappRestart=alwaysRestartSec=5

[Install]WantedBy=multi-user.target

استبدل /home/user بمسارك. قم بتفعيل الخدمة وتشغيلها:

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp

الآن سيعمل تطبيق Go الخاص بك كخدمة خلفية (daemon).



4. إعداد Nginx كـ reverse proxy و HTTPS

لجعل التطبيق متاحًا عبر النطاق ومن خلال المنفذ 443، سنقوم بإعداد Nginx.

تكوين reverse proxy

قم بإزالة التكوين الافتراضي وأنشئ التكوين الخاص بك:

sudo rm /etc/nginx/sites-enabled/defaultsudo nano /etc/nginx/sites-available/myapp

أضف:

server {    listen 80;    server_name yourdomain.com www.yourdomain.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_h

المدونات

توصيات الكتب