تحديث WorkUp بأمان
0

القاعدة الذهبية

لا تُحدّث أبداً بدون نسخة احتياطية طازجة أولاً. راجع دليل النسخ الاحتياطي وخذ نسخة كاملة (قاعدة البيانات + مجلد files) الآن، قبل أن تكمل قراءة هذا الدليل حتى. كل الخطوات التالية تفترض أن عندك هذه النسخة جاهزة.
1

طريقة التحديث حسب كيف حصلت على الملفات

هناك طريقتان شائعتان لامتلاك نسخة من WorkUp على السيرفر: عبر Git، أو برفع ملفات يدوياً. الطريقة تُحدّد كيف تُحدّث.
1

إذا كان المشروع مرتبطاً بـ Git

cd /var/www/html/WorkUp
git status   # تأكد أنه لا توجد تعديلات محلية غير محفوظة
git pull origin main

git pull يسحب كل التعديلات الجديدة تلقائياً ويدمجها بالملفات الموجودة. إن ظهرت رسالة "conflict" (تعارض)، توقف واطلب مساعدة قبل المتابعة — هذا يعني أن نفس الملف تم تعديله محلياً وبالتحديث الجديد معاً.

2

إذا كنت ترفع الملفات يدوياً (بدون Git)

لا تستبدل المجلد بأكمله دفعة واحدة! بعض الملفات يجب ألا تُلمَس أبداً لأنها تحتوي إعداداتك الخاصة:

لا تستبدل هذين الملفين أبداً بنسخة جديدة: includes/config.php (بيانات قاعدة بياناتك) و.htaccess (مسار include_path الخاص بسيرفرك). كذلك لا تلمس مجلد files/ (صور ومرفقات حقيقية للموظفين).

ارفع فقط الملفات/المجلدات الفعلية المتغيّرة بالتحديث (يخبرك بها من أرسل لك التحديث عادة)، عبر FileZilla أو scp، مع استثناء الملفات أعلاه صراحة.

2

هل يحتاج التحديث تعديل قاعدة البيانات؟

خبر جيد: معظم الميزات داخل WorkUp مبنية بحيث "تُنشئ جداولها بنفسها تلقائياً" عند أول استخدام (دوال داخلية اسمها ensureSchema) — لا تحتاج أنت لتنفيذ أي أمر SQL يدوياً في أغلب الحالات. لكن إن أُرفق مع التحديث ملف باسم مشابه لـ update.sql أو تعليمات صريحة بـ"شغّل هذا الاستعلام"، نفّذه هكذا:
3

تنفيذ ملف تحديث قاعدة بيانات (فقط إن طُلب منك ذلك صراحة)

mysql -u workup_user -p workup < update.sql

لا تُنفّذ هذا الأمر "تحسباً" بدون سبب — فقط عندما تعرف تحديداً أن هناك ملف تحديث لقاعدة البيانات مرفق مع النسخة الجديدة من الكود.

3

اختبار سريع بعد كل تحديث

4

قبل أن تُعلن "خلاص انتهينا"، جرّب هذا

افتح صفحة تسجيل الدخول (abma وempma) وتأكد أنها تظهر بشكل طبيعي.
سجّل دخول بحساب حقيقي وتصفّح صفحة أو صفحتين رئيسيتين.
راقب سجل أخطاء أباتشي أثناء التصفح: sudo tail -f /var/log/apache2/error.log
افتح تطبيق الموبايل وتأكد أنه لا يزال يتصل بشكل طبيعي (خصوصاً بعد أي تحديث يمس ملفات api/).
4

خطة التراجع (Rollback)

ظهرت مشكلة بعد التحديث؟ لا داعي للذعر. إليك كيف ترجع لآخر نسخة سليمة كانت تعمل.
5

التراجع حسب الطريقة المستخدمة

مع Git: ارجع لآخر نقطة كانت تعمل (commit سابق):

git log --oneline -5   # شاهد آخر 5 تحديثات ومعرّف كل واحد
git reset --hard رقم_الكوميت_السابق

مع الرفع اليدوي: إن كنت أخذت نسخة من الملفات القديمة قبل الاستبدال (يُفضّل دائماً أخذ نسخة قبل أي تحديث يدوي)، أعد رفعها كما كانت.

في الحالتين: إن كان التحديث قد لمس قاعدة البيانات، استعد نسخة قاعدة البيانات الاحتياطية التي أخذتها قبل التحديث (راجع دليل الاستعادة).

5

قائمة تحقق قبل أي تحديث

أخذت نسخة احتياطية كاملة (قاعدة بيانات + files) قبل البدء.
تعرف بالضبط أي ملفات لا يجب استبدالها (config.php، .htaccess، files/).
تعرف إن كان التحديث يتطلب تنفيذ ملف SQL إضافي أم لا.
اخترت وقتاً هادئاً للتحديث (ليس أثناء ساعات ذروة استخدام الموظفين).
تعرف كيف تتراجع (Rollback) لو ظهرت مشكلة.
التحديث الجيد هو التحديث المُمِل: نسخة احتياطية، تحديث هادئ، اختبار سريع. بدون مفاجآت.
التحديثات WorkUp