VPS للمطورين: إعداد بيئة تطوير احترافية

Git + Docker + CI/CD + staging environment. نشرح كيف تحوّل VPS لبيئة تطوير إنتاجية — خطوة بخطوة.
لماذا VPS وليس استضافة مشتركة أو PaaS؟
كمطور، تحتاج بيئة تمنحك تحكم كامل: تثبيت أي مكتبة، تشغيل أي خدمة، ضبط أي إعداد. الاستضافة المشتركة تقيدك بـ cPanel وإعدادات محددة. منصات PaaS مثل Heroku أو Railway تخفي التفاصيل لكن بتكلفة أعلى ومرونة أقل. VPS يعطيك سيرفر Linux كامل بصلاحيات root — أنت تقرر كل شيء.
إعداد بيئة التطوير في 15 دقيقة
الخطوة 1: اختر الباقة المناسبة
| نوع المشروع | الباقة الموصى بها | السعر السنوي |
|---|---|---|
| API بسيط / مشروع شخصي | أساس (1 vCPU / 2GB) | أسعار تنافسية — الأسعار والباقات |
| تطبيق ويب متكامل | نمو (2 vCPU / 4GB) | أسعار تنافسية — الأسعار والباقات |
| عدة مشاريع + Docker | أعمال (4 vCPU / 8GB) | أسعار تنافسية — الأسعار والباقات |
| AI / ML / بيانات ضخمة | مؤسسة (8 vCPU / 16GB) | أسعار تنافسية — الأسعار والباقات |
في كلاود، التفعيل خلال 60 ثانية. تختار نظام التشغيل (Ubuntu 22.04/24.04 الأكثر شيوعاً) وتحصل على IP + كلمة مرور root فوراً.
الخطوة 2: التأمين الأساسي
أول 5 دقائق بعد التفعيل:
- حدّث النظام — apt update && apt upgrade
- أنشئ مستخدم عادي بصلاحيات sudo
- انسخ مفتاح SSH للمستخدم الجديد
- عطّل دخول root عبر SSH وعطّل الدخول بكلمة المرور
- فعّل UFW — اسمح بـ 22 و80 و443 فقط
الخطوة 3: تثبيت الأدوات الأساسية
أدوات كل مطور يحتاجها:
- Git — إدارة الكود
- curl / wget — تحميل الملفات
- htop — مراقبة الموارد
- tmux / screen — جلسات SSH متعددة
- unzip / tar — فك الضغط
إعداد بيئة حسب اللغة
Node.js
- ثبّت nvm (Node Version Manager) — يسمح بتشغيل عدة نسخ Node
- ثبّت النسخة LTS الحالية
- استخدم PM2 لتشغيل التطبيق في الخلفية وإعادة التشغيل التلقائي
Python
- لا تستخدم Python النظام — ثبّت pyenv
- أنشئ بيئة افتراضية (venv) لكل مشروع
- استخدم gunicorn أو uvicorn كـ application server
PHP (Laravel)
- ثبّت PHP 8.3 مع الإضافات المطلوبة: mbstring, xml, curl, mysql, zip, bcmath
- ثبّت Composer
- استخدم Nginx + PHP-FPM (أسرع من Apache + mod_php)
Go / Rust
- ثبّت من المصدر الرسمي (لا تعتمد على حزم المستودع — غالباً قديمة)
- اجمع (compile) التطبيق وشغّله كـ systemd service
Docker: بيئة موحدة لكل شيء
Docker يحل مشكلة "يعمل على جهازي" نهائياً. على VPS بتقنية KVM (مثل كلاود)، Docker يعمل بالكامل بدون قيود.
أساسيات Docker على VPS
- Docker لتشغيل حاويات منفردة
- Docker Compose لتشغيل عدة خدمات معاً (تطبيق + قاعدة بيانات + Redis)
- Nginx Proxy Manager أو Traefik كـ reverse proxy لعدة تطبيقات على نفس السيرفر
مثال: بيئة تطبيق كاملة
تطبيق ويب نموذجي يحتاج:
| الخدمة | الوظيفة | الذاكرة التقريبية |
|---|---|---|
| Nginx | Reverse proxy + SSL | 50MB |
| التطبيق (Node/PHP/Python) | منطق الأعمال | 200-500MB |
| PostgreSQL / MySQL | قاعدة البيانات | 500MB-2GB |
| Redis | تخزين مؤقت + جلسات | 100MB |
| الإجمالي | ~1-3GB |
هذا يعني باقة نمو (4GB) تكفي لتطبيق واحد متكامل، وباقة أعمال (8GB) تستوعب 2-3 تطبيقات.
CI/CD: النشر التلقائي
باستخدام GitHub Actions
- اربط GitHub repository بالسيرفر عبر SSH key
- أنشئ workflow يُنفذ عند كل push للفرع الرئيسي
- الخطوات: pull الكود الجديد، تثبيت التبعيات، بناء التطبيق، إعادة تشغيل الخدمة
باستخدام Webhook بسيط
إذا لا تحتاج CI/CD كامل:
- أنشئ endpoint بسيط على السيرفر يستقبل webhook من GitHub
- عند استقبال الإشعار: git pull ثم إعادة بناء وتشغيل
أدوات نشر متقدمة
| الأداة | مناسبة لـ |
|---|---|
| Deployer (PHP) | مشاريع Laravel — نشر بدون توقف |
| Capistrano | مشاريع Ruby/Rails |
| Kamal (Docker) | أي تطبيق Docker |
| Coolify | بديل مفتوح المصدر لـ Heroku (يُثبت على VPS) |
قواعد البيانات
الاختيار المناسب
| قاعدة البيانات | مناسبة لـ |
|---|---|
| PostgreSQL | تطبيقات معقدة، بيانات جغرافية، JSON |
| MySQL/MariaDB | تطبيقات ويب تقليدية، your website |
| SQLite | مشاريع صغيرة، APIs خفيفة |
| MongoDB | بيانات غير منظمة، نماذج أولية سريعة |
| Redis | تخزين مؤقت، جلسات، قوائم انتظار |
نصائح أمان قاعدة البيانات
- لا تسمح باتصالات خارجية — localhost فقط
- غيّر المنفذ الافتراضي
- أنشئ مستخدم خاص لكل تطبيق بصلاحيات محدودة
- فعّل النسخ الاحتياطي التلقائي
SSL/HTTPS مجاناً
Let's Encrypt يوفر شهادات SSL مجانية. استخدم Certbot للحصول على الشهادة وتجديدها تلقائياً. الخطوات:
- ثبّت Certbot
- اضبط DNS ليشير لعنوان IP السيرفر
- شغّل Certbot مع Nginx
- التجديد التلقائي كل 90 يوم عبر cron job
المراقبة للمطورين
| الأداة | المجانية | الوظيفة |
|---|---|---|
| Netdata | نعم | لوحة مراقبة شاملة لحظية |
| UptimeRobot | نعم (50 موقع) | مراقبة خارجية + تنبيهات |
| Sentry | نعم (محدود) | تتبع أخطاء التطبيق |
| Grafana + Prometheus | نعم | لوحات مراقبة مخصصة |
نصائح من الواقع
- استخدم Git دائماً — حتى لو أنت الوحيد. سجل كل تغيير.
- لا تعدّل الكود مباشرة على السيرفر — عدّل محلياً، ادفع لـ Git، وانشر.
- فعّل النسخ الاحتياطي من اليوم الأول — الحوادث لا تنتظر.
- سجّل كل إعداد — أنشئ ملف README أو script يعيد بناء البيئة من الصفر.
- استخدم .env للمتغيرات الحساسة — لا تضع كلمات المرور في الكود.
ابدأ الآن
سجّل في كلاود (cloud.net.sa)، اختر باقة أساس بـ أسعار تنافسية — الأسعار والباقات (أقل من 10 ريال يومياً)، وسيرفرك جاهز في 60 ثانية. KVM كامل، صلاحيات root، تخزين SSD، وزمن استجابة 8ms من الرياض. إذا احتجت مساعدة في إعداد البيئة، فريق كلاود يوفر اجتماعات توجيهية مجانية لمطوريك.
