بعد أن يستقر تطبيقك على خادم VPS، تبدأ مرحلة جديدة: كيف تُحدَّث هذه التطبيقات عشرات المرات شهريًا دون أن يتحول كل تحديث إلى عملية محفوفة بالمخاطر؟ يبدأ الأمر عادةً باتصال SSH وسحب الشيفرة وإعادة تشغيل الخدمة وانتظار النتيجة. يحوّل خط أنابيب CI/CD على خادم VPS هذه السلسلة إلى مسار واحد مُختبَر وقابل للتكرار ومسجَّل. مع كل دفعة إلى المستودع (Git) يُنفَّذ الفحص، ثم البناء، ثم النشر عبر سكربت لا يكتبه أحد على عجل في نهاية الأسبوع. نعرض هنا بنية مرجعية محايدة تجاه الأدوات، والأخطاء التي تكلّف وقتًا حقيقيًا، وتكلفة كل خيار من خيارات التوزيع.
ما الذي يصبح على عاتقك عندما يعمل خط الأنابيب على خادمك
في المنصات المُدارة بالكامل تكون المكاملة المستمرة خدمةً مضمنة: تدفع الشيفرة فيُبنى كل شيء تلقائيًا. أما على خادم VPS فأنت ترث الآلية كاملة. وهذا ليس عيبًا، بل هو ما يجعل خط الأنابيب قابلًا للتنبؤ والتدقيق، لكن ينبغي أن تعرف ما الذي لم يبقَ مسؤولية غيرك.
- المشغّل (runner) ملكك. تستهلك عمليات البناء المعالج والذاكرة على شكل دفعات، وهذا النمط من الحمل لا علاقة له بحركة الزوار، وتخصيص الموارد لأحدهما لا يعني تخصيصها للآخر.
- الأسرار في عهدتك. مفاتيح النشر ورموز الواجهات البرمجية وكلمات مرور قواعد البيانات: إنشاؤها وتخزينها وتدويرها وإلغاؤها أصبح إجراءً داخليًا لديك.
- القرص يمتلئ. تتراكم الآثار الناتجة عن البناء وطبقات الحاويات والإصدارات القديمة بهدوء إلى أن يفشل البناء بسبب قسم ممتلئ.
- الاسترجاع مسؤوليتك. لن يعيد أحدٌ قبلك النسخة السابقة. وإن لم يكن الأمر جاهزًا قبل الحادث الأول، فسيُكتب أثناء الحادث على حساب الوقت.
- قابلية التتبع محلية. سجلات البناء وتاريخ النشر والإصدار العامل في الإنتاج تبقى على الجهاز، وعليك حفظها ونسخها احتياطيًا.
بنية مرجعية من أربع مراحل
أبقِ المراحل منفصلة، فتصبح كل واحدة قابلة للاستبدال دون المساس بالأخرى.
1. المستودع والمُشغِّل
يبقى مستودع Git مصدر الحقيقة. والمُشغِّل هنا حدث: دفعة إلى الفرع الرئيسي، أو وسم إصدار، أو طلب دمج معتمد. قاوم الرغبة في البناء عند كل فرع، فخط الأنابيب الذي يعمل باستمرار يستهلك المعالج ويغرق الأعطال الحقيقية في الضجيج.
2. المشغّل: أين تُنفَّذ المهام فعلًا
يستقبل المشغّل المهمة وينفّذها. والقرار البنيوي يتعلق بمكانه: على خادم التطبيق نفسه، أو على جهاز مستقل. المشاركة أقل تكلفة وتناسب فريقًا صغيرًا، أما الفصل فيُبعد عمليات البناء عن حركة المستخدمين، ويصبح مهمًا من أول مرة يستهلك فيها البناء الذاكرة التي يحتاجها التطبيق.
3. البناء: أثر قابل للنشر لا نسخة عمل
البناء السليم لا يترك نسخة عمل تصل إلى الإنتاج. بل ينتج أثرًا (artifact) — أرشيفًا أو مجلد إصدار أو صورة حاوية — موسومًا برقم الإصدار أو بالالتزام (commit). يتسلّم الإنتاج هذا الأثر ولا ينفّذ أبدًا سحبًا أعمى للشيفرة. بهذا تعرف بالضبط ما يعمل الآن، ويمكنك إعادة بناء النسخة نفسها بشكل مطابق.
4. النشر: SSH وسكربت متقارب
يجري النشر عبر SSH بمفتاح مخصّص وسكربت متقارب (idempotent): تشغيله مرة أو عشر مرات يؤدي إلى الحالة نفسها دون آثار جانبية. يوقف الخدمة بلطف، وينسخ، ويُفعّل، ويتحقق، ثم يقرّر الإبقاء أو الرجوع. لا نسخ ولصق يدويًا.
النشر دون توقف عبر الإصدارات الذرية
الحيلة قديمة وما زالت الخيار الافتراضي الأفضل: لا تكتب فوق التطبيق في مكانه أبدًا. يحصل كل نشر على مجلد مؤرَّخ خاص به، ثم يقوم رابط رمزي (symlink) بالتحويل في عملية واحدة.
- بناء الأثر ووضعه في
/srv/app/releases/2026-11-07-1. - تثبيت الاعتماديات وتنفيذ ترحيلات قاعدة البيانات داخل ذلك المجلد، دون اتصال بالحركة الحيّة.
- توجيه الرابط الرمزي
currentإلى الإصدار الجديد، في عملية ذرية واحدة. - إعادة تحميل خدمة التطبيق (PHP-FPM أو وحدة systemd أو حاوية) دون إيقاف خادم الويب.
- استدعاء مسار فحص الحالة (health endpoint) والتحقق من رمز الاستجابة ومن الإصدار المُعلن.
- عند الفشل، إعادة الرابط إلى الإصدار السابق وإعادة التحميل مرة أخرى.
- الاحتفاظ بثلاثة إلى خمسة إصدارات أخيرة وحذف الأقدم.
يغطي هذا المخطط الغالبية العظمى من عمليات النشر، لكنه لا يجعل الترحيل المُدمِّر آمنًا: حذف عمود يبقى حذف عمود. قسّم هذه التغييرات إلى ثلاث خطوات: إضافة العمود الجديد، ثم نشر شيفرة تكتب في العمودين، ثم إزالة القديم في إصدار لاحق.
الأسرار والحسابات والصلاحيات
يحمل خط الأنابيب مفاتيح الإنتاج، لذلك يُعامَل كوصول متميّز لا كسكربت راحة.
- حساب نشر مخصّص، دون صدفة تفاعلية إن أمكن، وليس
rootأبدًا. - مفتاح SSH واحد لكل خط أنابيب، مخزَّن مشفّرًا أو محميًا بعبارة مرور، وقابل للإلغاء بأمر واحد.
- لا أسرار في مستودع Git، ولا حتى في التزام حذفته، فالتاريخ يُقرأ من جديد.
- ملف متغيّرات بيئة لا يقرأه إلا حساب النشر، مثل
/etc/app/envبصلاحيات 600. - مشغّل معزول إن كانت عمليات البناء تنفّذ شيفرة من مساهمين خارجيين.
- جدول تدوير للرموز، وإلغاء فوري عند مغادرة أي متعاون.
هناك تفصيل يلحق بالفرق متأخرًا: سجلات البناء. ضبط المتغيّرات المحجوبة يُخطئ فيه كثيرون، والرمز الذي يظهر مرة واحدة في سجل يبقى مكشوفًا. اقرأ سجلًا كاملًا قبل أن تفتح الوصول إلى السجلات لكل الفريق.
كم خادم VPS يحتاج خط الأنابيب؟
هذه توزيعات واقعية مع خطط VPS NVMe الخمس من Open Vista وأسعارها المنشورة. تتضمن كل خطة عنوان IPv4 مخصّصًا، ونطاق تردديًا غير محدود، ونسخًا احتياطيًا تلقائيًا، وحماية من هجمات DDoS، وإشرافًا على مدار الساعة، ودعمًا ستة أيام في الأسبوع، وتسليمًا في أقل من 15 دقيقة بعد الطلب.
| التوزيع | ما يحتويه | الخطة | دولار/شهر | درهم دون ضريبة/شهر |
|---|---|---|---|---|
| كل شيء على خادم واحد | التطبيق وقاعدة البيانات والمشغّل | VPS-4G Avancé — 2 vCPU، 4 غيغابايت، 80 غيغابايت NVMe | 39.99 | 378.22 |
| مشغّل مخصّص | البناء والاختبارات معزولة عن الحركة | VPS-1G Démarrage — 1 vCPU، 1 غيغابايت، 30 غيغابايت NVMe | 9.99 | 94.48 |
| خادم التطبيق | التطبيق وقاعدة البيانات والوكيل العكسي | VPS-2G Business — 1 vCPU، 2 غيغابايت، 40 غيغابايت NVMe | 19.99 | 189.06 |
| الاختبار والإنتاج | بيئتان مع المشغّل | VPS-5G Ultra — 3 vCPU، 5 غيغابايت، 100 غيغابايت NVMe | 49.99 | 472.80 |
الحساب لا يقوم على عدد الأنوية المعلن. عملية بناء تدوم ثلاث دقائق وتستهلك نصف غيغابايت في الذروة لا تحتاج الجهاز نفسه الذي يحتاجه تجميع كامل للأصول. ابدأ صغيرًا، وقِس الذاكرة في الذروة أثناء البناء، ثم انتقل إلى خطة أكبر: الانتقال إلى تهيئة أعلى يتم دون ترحيل مؤلم. التفاصيل الكاملة على صفحة خطط VPS، والأسعار بالدرهم تتبع عُرف الموقع، 1 USD ≈ 9.46 MAD، على صفحة الأسعار.
الاسترجاع والإشراف والنسخ الاحتياطي
لا ينتهي النشر عند انتهاء السكربت. ثلاثة مؤشرات تحسم قرار الإبقاء على الإصدار: رمز استجابة مسار فحص الحالة، ونسبة الأخطاء في سجلات التطبيق خلال الدقائق العشر التالية، ووسيط زمن الاستجابة. إذا تدهور أحدها، فيجب أن يكون الاسترجاع أمرًا واحدًا لا اجتماعًا. واحتفظ أيضًا بمقابلة الإصدارات بالالتزامات، فاليوم الذي يعود فيه حادث إلى إصدار محدد ستوفّر ساعات.
على مستوى البنية التحتية، تتضمن خطط VPS النسخ الاحتياطي التلقائي والإشراف على مدار الساعة، مع اتفاقية مستوى خدمة (SLA) بنسبة 99.9% على البنية التحتية. تغطي هذه الاتفاقية جاهزية الجهاز لا صحة شيفرتك، والتمييز بينهما يستحق أن يُقال بوضوح لفريقك ولعملائك.
الأسئلة الشائعة (FAQ)
هل أحتاج خادمًا منفصلًا للمشغّل؟
ليس في البداية. على خادم VPS بذاكرة 2 إلى 4 غيغابايت يتعايش المشغّل مع التطبيق ما دامت عمليات البناء قصيرة والذاكرة مضبوطة. افصله بمجرد أن يسبب البناء تباطؤًا ملحوظًا أو أخطاء نفاد ذاكرة على خادم الإنتاج.
هل يكفي سكربت SSH بسيط للنشر دون توقف؟
نعم، مع الإصدارات الذرية والرابط الرمزي: التحويل لحظي وإعادة تحميل التطبيق تستغرق ثوانٍ. الانقطاعات تأتي غالبًا من ترحيلات قاعدة البيانات أو من خدمة أُعيد تشغيلها دون طابور انتظار، ونادرًا من التحويل نفسه.
أين أخزّن أسرار خط الأنابيب؟
في خزانة الأسرار الخاصة بأداة التكامل إن توفّرتها، وإلا في ملف متغيّرات بيئة بصلاحيات ضيقة على الخادم وخارج مستودع Git. وفي الحالتين يبقى حساب النشر المخصّص والمفتاح القابل للإلغاء هما الأساس.
كيف أعود إلى الإصدار السابق؟
بإعادة الرابط الرمزي إلى الإصدار السابق ثم إعادة تحميل الخدمة. ولهذا السبب تحديدًا نبقي عدة إصدارات على القرص: بدونها يصبح الاسترجاع عملًا يدويًا تحت الضغط.
الخطوة التالية: خادم VPS يمكن الاعتماد عليه للنشر
لا يحتاج خط الأنابيب المفيد إلى منصة غريبة ولا إلى ميزانية كبيرة: مستودع، ومشغّل، وسكربت نشر متقارب، وإجراء استرجاع. وما تبقى مسألة انضباط، والانضباط أقل كلفة من الحوادث. تُسلَّم خطط VPS NVMe من Open Vista في أقل من 15 دقيقة، مع وصول root، وعنوان IPv4 مخصّص، ونسخ احتياطي تلقائي، وإشراف على مدار الساعة — وهو ما يكفي لتشغيل التكامل المستمر والإنتاج على جهاز واحد، أو على جهازين إن فضّلت إبعاد البناء عن الحركة.
قارن التهيئات الخمس على صفحة خطط VPS، ثم تحقق من الأسعار بالدرهم على صفحة الأسعار. وإن كنت مترددًا بين مشغّل مخصّص وتوزيع كل شيء على خادم واحد، صف لنا بنيتك التقنية: الحسم يعتمد على الذاكرة في الذروة لا على عدد الأنوية المعلن.