نشر تطبيق Go على VPS: دليل خطوة بخطوة من الألف إلى الياء

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

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

ابدأ الدورة

مقدمة: لماذا Go مثالي لـ VPS، وماذا سنفعل



Go (Golang) هي لغة مصممة لتطبيقات الخادم القابلة للتوسع وعالية الأداء. التجميع في ملف ثنائي ثابت واحد يجعلها مرشحًا مثاليًا للنشر على VPS (خادم خاص افتراضي). لا تحتاج إلى تثبيت مترجم أو تبعيات على الخادم - فقط انسخ الملف وقم بتشغيله.



في هذه المقالة، سنمر بالمسار الكامل: من كتابة خادم HTTP بسيط بلغة Go إلى تشغيله في بيئة الإنتاج على VPS باستخدام systemd للتشغيل التلقائي، وNginx كوكيل عكسي، وLet's Encrypt لـ HTTPS.



ستتعلم:

  • تجميع تطبيق Go لنظام Linux
  • تحميل الملف الثنائي إلى VPS عبر SSH
  • إعداد systemd للتشغيل التلقائي
  • تثبيت وتهيئة Nginx
  • الحصول على شهادة SSL مجانية


الخطوة 1: إعداد تطبيق Go وتجميعه



إنشاء تطبيق ويب بسيط



على سبيل المثال، سنكتب خادم HTTP أدنى يستجيب بـ "Hello, VPS!". قم بإنشاء ملف main.go:



package main

import ( "fmt" "net/http")

func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, VPS!") })

fmt.Println("Server started on :8080") http.ListenAndServe(":8080", nil)}


التجميع لنظام Linux



إذا كنت تطور على Windows أو macOS، فستحتاج إلى تجميع الملف الثنائي للهندسة المستهدفة لـ VPS (عادةً linux/amd64). افتح الطرفية في مجلد المشروع ونفذ:



set GOOS=linuxset GOARCH=amd64go build -o myapp


بالنسبة لـ Linux/macOS استخدم export:



export GOOS=linuxexport GOARCH=amd64go build -o myapp


نتيجة لذلك، سيظهر ملف ثنائي myapp. تحقق من حجمه - سيكون صغيرًا (حوالي 7-10 ميجابايت)، لأن Go يقوم بالتجميع بشكل ثابت.



الخطوة 2: التحميل إلى VPS وإعداد systemd



الاتصال بالخادم وتحميل الملف



اتصل بـ VPS الخاص بك عبر SSH:



ssh root@your-server-ip


قم بإنشاء دليل للتطبيق:



mkdir -p /opt/myappcd /opt/myapp


على جهازك المحلي، قم بتحميل الملف الثنائي عبر SCP (نفذ في طرفية منفصلة):



scp myapp root@your-server-ip:/opt/myapp/


عد إلى الخادم وامنح أذونات التنفيذ:



chmod +x /opt/myapp/myapp


إنشاء خدمة systemd



للتأكد من تشغيل التطبيق تلقائيًا عند بدء تشغيل النظام وإعادة تشغيله عند حدوث أعطال، سننشئ وحدة systemd. قم بإنشاء ملف:



nano /etc/systemd/system/myapp.service


ألصق المحتوى التالي:



[Unit]Description=My Go ApplicationAfter=network.target

[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/opt/myappExecStart=/opt/myapp/myappRestart=on-failureRestartSec=5

[Install]WantedBy=multi-user.target


شرح المعاملات:

  • User و Group — المستخدم الذي سيتم تشغيل التطبيق من خلاله (يوصى بعدم استخدام root).
  • Restart=on-failure — إعادة التشغيل التلقائي عند التعطل.
  • RestartSec=5 — فترة الانتظار قبل إعادة التشغيل.


الآن نقوم بتفعيل الخدمة وتشغيلها:



systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myapp


إذا تم كل شيء بشكل صحيح، سترى الحالة active (running). تحقق من أن التطبيق يستجيب محليًا:



curl http://localhost:8080


الخطوة 3: إعداد Nginx كوكيل عكسي



الوصول المباشر إلى التطبيق عبر المنفذ 8

المدونات

توصيات الكتب