العزل
Rudel نظام تراكب تحدده الطلبات. يستخدم الطلب المحدد جداول قاعدة بيانات البيئة المعزولة وملفات قالبها، مع الاستمرار في العمل عبر تثبيت المضيف WordPress.
معزول لكل بيئة
جداول WordPress
تحصل كل بيئة معزولة على بادئة جداول مُنشأة: بادئة المضيف متبوعة بأول سبعة أحرف سداسية عشرية من MD5 الخاص بمعرّف البيئة.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
يبدّل Rudel بادئة جداول WordPress قبل اكتمال إقلاع WordPress، لذا يقرأ كل استعلام في طلب البيئة المعزولة النسخ الخاصة بها ويكتب فيها.
المستخدمون
تُستنسخ جدولا users وusermeta مع بقية الجداول. تبدأ البيئة المعزولة بمستخدمي المضيف وكلمات مروره وقت الإنشاء؛ وبعد ذلك لا يؤثر إنشاء المستخدمين أو تغييرهم أو حذفهم في البيئة المعزولة على المضيف، كما لا تنتقل تغييرات المضيف إليها.
ملفات القالب النشط
يُنسخ القالب المحدد إلى مجلد البيئة المعزولة:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
إذا كان القالب قالبًا ابنًا، ينسخ Rudel القالب الأب أيضًا للحفاظ على صحة علاقة القوالب. وتعرض البيئة المعزولة دائمًا القالب المسجل عند إنشائها؛ ولا يؤثر تبديل القوالب داخلها.
مشترك مع المضيف
- نواة WordPress
- ملفات الإضافات
- ملفات الوسائط المرفوعة
تُثبّت الإضافة التي تُثبّت أو تُحدّث على المضيف أو تُحدّث لكل بيئة معزولة. وتُخزّن الإضافات النشطة في جدول الخيارات، لذا تكون حالة التفعيل مستقلة لكل بيئة. تُحفَظ الملفات المرفوعة من داخل البيئة المعزولة في مجلد الرفع الخاص بالمضيف. وهذا يجعل إنشاء البيئات المعزولة سريعًا ويتجنب استبدال WP_CONTENT_DIR على مستوى النظام.
أبقِ Rudel نفسه نشطًا داخل كل بيئة معزولة. يعمل حظر البريد وتراكب القالب من الإضافة، كما أن تعطيلها أثناء تحديد بيئة معزولة يزيل سطر التمهيد من wp-config.php المشترك أيضًا، ما يوقف تحديد البيئات المعزولة في التثبيت بأكمله (المسألة #13).
تحديد بيئة معزولة
تحدد طلبات HTTP بيئة معزولة عبر:
- ترويسة
X-Rudel-Environment(الاسم البديل القديمX-Rudel-Sandbox) - ملف تعريف الارتباط
rudel_environment(الاسم البديل القديمrudel_sandbox)
لا يضبط Rudel ملف تعريف الارتباط ولا يمحوه. احذفه للعودة إلى المضيف؛ ويربط عنصر Sandbox في شريط الإدارة بعنوان المضيف URL مع إبقاء ملف تعريف الارتباط كما هو (المسألة #10).
تحدد أوامر WP-CLI بيئة معزولة عبر:
- متغير البيئة
RUDEL_ENVIRONMENT - قيمة
--urlيبدأ مضيفها بمعرّف البيئة المعزولة، مثل--url=http://alpha-3be7.example.test
لا يتطلب المحدِّد مصادقة. فأي عميل يستطيع الوصول إلى الموقع ويرسل معرّف بيئة معزولة صالحًا سيصل إلى تلك البيئة، كما يسهل تخمين المعرّفات (اسم وأربعة أحرف سداسية عشرية). لا تعتبر تحديد البيئة المعزولة حدًا للتحكم في الوصول؛ واحمِ المضيف العام على مستوى خادم الويب أو الشبكة.
القيم الافتراضية للطلب
بالنسبة إلى الطلب المحدد، ينفذ Rudel ما يلي:
- يحظر البريد الصادر عبر مرشح
pre_wp_mail - يضبط
WP_TEMP_DIRعلى مجلدtmpالخاص بالبيئة المعزولة - يضبط
WP_CACHE_KEY_SALTعلى قيمة خاصة بالبيئة المعزولة لفصل مفاتيح التخزين المؤقت للكائنات الدائمة - يتيح تسجيل
WP_DEBUGللبيئة المعزولة، ومفاتيح المصادقة والأملاحdebug.logالمشتقة من معرّفها
لا يعرّف التمهيد كل ثابت من هذه الثوابت إلا إذا لم يكن wp-config.php قد عرّفه من قبل. يعرّف التثبيت القياسي لـ wp-config.php الثابت WP_DEBUG وكل المفاتيح والأملاح، لذا تستخدم طلبات البيئات المعزولة في مثل هذا التثبيت إعداد تصحيح الأخطاء ومفاتيح المضيف وأملاحه (المسألة #4). ولأن المستخدمين يُستنسخون أيضًا، قد تكون ملفات تعريف الارتباط لتسجيل الدخول إلى المضيف صالحة في البيئة المعزولة.
بيانات وقت التشغيل
تبقى بيانات وقت تشغيل Rudel في جداول MySQL الخاصة بالمضيف ضمن WordPress:
wp_rudel_environments
wp_rudel_worktrees
هذه الجداول هي المصدر المعتمد لبيانات Rudel. تحتوي مجلدات البيئة على الملفات والمنتجات المُدارة، لا على حالة سجل وقت التشغيل.