إذا أظهر Nextcloud تحذيرًا يفيد بأن قفل الملفات للمعاملات غير مُفعّل أو مُعطّل، فقد تكون عمليات الملفات أقل أمانًا ضد الكتابة المتزامنة وعمليات النقل المتقطعة. الحل المعتاد هو تهيئة مخزن قيم مفتاحية مدعوم مثل Redis أو Valkey للقفل. حدد أولًا كيفية تثبيت Nextcloud، ثم قم بتهيئة خدمة التخزين المؤقت وNextcloud معًا؛ إذ أن تثبيت Redis وحده لا يزيل التحذير.
يشير دليل إدارة Nextcloud الحالي إلى أن قفل المعاملات يستخدم قاعدة البيانات افتراضيًا. يمكن استخدام قاعدة البيانات كخادم خلفي، لكن ذلك يزيد من حمل قاعدة البيانات. يمكن لـ Redis أو Valkey توفير خادم خلفي مخصص للقفل. يختلف نص التحذير باختلاف إصدار Nextcloud: تشير الوثائق الحالية إلى أن "قفل ملفات المعاملات مُعطّل، وقد يؤدي ذلك إلى مشاكل في تزامن العمليات". تحذير ذاكرة التخزين المؤقت منفصل ولا يُشير إلى نفس المشكلة. راجع دليل قفل ملفات المعاملات الرسمي ومرجع تحذيرات صفحة الإدارة .
قبل تغيير الخادم
تفترض هذه الخطوات أنك مسؤول عن إدارة مضيف Nextcloud. تستخدم الأوامر أدناه نظامي Debian أو Ubuntu مع تثبيت حزم تقليدي؛ تختلف أسماء الحزم وأسماء الخدمات وإصدارات PHP ومسارات التكوين في توزيعات Linux الأخرى. إذا كنت تستخدم Nextcloud AIO أو Docker أو Snap أو TrueNAS أو صورة من مزود خدمة استضافة، فاتبع تعليمات التثبيت وإعادة تشغيل الخدمات الخاصة بذلك النظام. قد لا يؤدي تثبيت حزم PHP على المضيف إلى تغيير بيئة PHP داخل الحاوية أو الجهاز.
- ابحث عن جذر موقع Nextcloud الإلكتروني ومساره النشط
config/config.php.
- قم بعمل نسخة احتياطية محمية من هذا الملف قبل تعديله. فقد يحتوي على بيانات اعتماد قاعدة البيانات ومعلومات سرية أخرى.
- تأكد مما إذا كان Nextcloud يستخدم خادم ويب واحداً أم عدة خوادم. يتطلب الإعداد متعدد العقد خادم Redis/Valkey مشتركاً واحداً أو مجموعة خوادم يمكن الوصول إليها من كل عقدة من عقد Nextcloud.
- خطط لفترة صيانة قصيرة إذا كان المستخدمون يعتمدون على تحميل الملفات دون انقطاع.
الخطوة 1: تأكيد التحذير ونوع التثبيت
سجّل الدخول كمسؤول وافتح إعدادات الإدارة ، ثم راجع نظرة عامة على تحذيرات الأمان والإعداد. دوّن الرسالة كما هي. إذا ذكرت الصفحة فقط أنه لم يتم تكوين ذاكرة تخزين مؤقتة، فهذا يتطلب فحصًا مختلفًا؛ قم بتكوين ذاكرة تخزين مؤقتة محلية مثل APCu حسب الحاجة، ولكن لا تفترض أنها ستوفر تأمين المعاملات. تشير وثائق Nextcloud إلى ضرورة تفعيل إعدادات ذاكرة التخزين المؤقتة بشكل صريح config.php.
في نظام لينكس التقليدي، استخدم سطر الأوامر لتحديد مسار التثبيت وفحص ملف الإعدادات دون طباعة البيانات السرية في سجل طرفية مشترك. على سبيل المثال، من الخادم:
cd /var/www/nextcloud
ls -l config/config.php
استبدل /var/www/nextcloudالمسار بمسارك الفعلي. بالنسبة للحاويات، حدد الحاوية وإعداداتها المثبتة بدلاً من تعديل ملف على جانب المضيف لا تستخدمه النسخة قيد التشغيل.
الخطوة الثانية: تثبيت وتشغيل مخزن القيم المفتاحية
في نظامي Debian أو Ubuntu، يستخدم خادم Redis التقليدي عادةً خدمة Redis وامتداد PHP Redis. قم بتثبيت الحزم التي تتوافق مع إصدار PHP المستخدم من قبل خادم الويب.
sudo apt update
sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server
sudo systemctl status redis-server
يجب أن يُظهر مُخرَج الحالة أن الخدمة نشطة. تأكد من أن بيئة تشغيل PHP التي تُشغِّل Nextcloud قادرة على تحميل إضافة Redis. في التثبيت القياسي، php -m | grep -i redisيُمكنك إجراء فحص سريع عبر واجهة سطر الأوامر، ولكن قد تستخدم واجهة سطر الأوامر PHP وواجهة الويب PHP إصدارات أو ملفات تهيئة مختلفة. إذا كانت الوحدة غير موجودة في بيئة تشغيل الويب، فقم بتثبيت أو تفعيل الحزمة المُطابقة وأعد تشغيل PHP-FPM أو خادم الويب.
يوفر Nextcloud الإصدار 34.0.2 والإصدارات الأحدث أيضًا KeyValueCacheواجهة خلفية مدمجة لمخازن البيانات المتوافقة مع Redis. لا يتطلب ذلك إضافة PHP Redis. قد يكون هذا مفيدًا عندما لا تستطيع بيئة الاستضافة تثبيت وحدات PHP، ولكنه مع ذلك يتطلب تشغيل خدمة Redis أو Valkey. يوثق دليل التخزين المؤقت للذاكرة الحالي لـ Nextcloud كلا الطريقتين. اختر أحد تكوينات الواجهة الخلفية أدناه بدلًا من إضافة كليهما.
الخطوة 3: ضبط خاصية القفل في Nextcloud
عدّل المصفوفة النشطة config/config.phpوأضف العناصر المحددة داخلها $CONFIG. حافظ على صيغة PHP واستخدام الفواصل. لا تُنشئ مصفوفة تكوين ثانية أو تُكرّر المفاتيح. احتفظ بإعدادات التخزين المؤقت الحالية إلا إذا كنتَ متأكدًا من سبب الحاجة إلى تغييرها.
الخيار أ: Redis مع إضافة PHP Redis
استخدم هذا الخيار عندما يكون وقت تشغيل PHP الخاص بالويب phpredisمُثبّتًا عليه الامتداد المدعوم. يمكن لخادم Redis محلي يستمع على المنفذ 6379 استخدام تكوين كهذا:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'timeout' => 0.0,
],
إذا كان Redis يتطلب مصادقة، فقم بضبط كلمة المرور الصحيحة config.phpوتأمين صلاحيات الملف. لا تعرض Redis للعامة. اجعله مرتبطًا بالمضيف المحلي أو بشبكة خاصة محمية، واستخدم مقبس Unix عند الاقتضاء.
الخيار ب: ذاكرة تخزين مؤقتة للقيم الرئيسية باستخدام Redis أو Valkey
استخدم هذا الخيار عندما يدعم إصدار Nextcloud الخاص بك الموفر المدمج وتفضل عدم تثبيت إضافة PHP Redis. بالنسبة لخدمة محلية تستمع على المنفذ 6379، إليك أبسط مثال:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => '127.0.0.1',
'port' => 6379,
],
],
أضف إعدادات المصادقة، وTLS، والمقبس، وSentinel، أو المجموعة الموثقة إذا كانت خدمتك تستخدمها. لا تنسخ بيانات الاعتماد من مثال. للاطلاع على المعلمات التفصيلية والبنى المدعومة، استخدم مرجع تكوين ذاكرة التخزين المؤقت الرسمي .
الخطوة 4: التحقق من الاتصال وإعدادات الخادم المتعدد
يجب أن يتمكن Nextcloud من الوصول إلى خادم التخزين المؤقت المُهيأ باستخدام نفس المضيف والمنفذ والمقبس وبيانات الاعتماد الخاصة بالخدمة. من الأخطاء الشائعة ضبط ذلك localhostفي كل عقدة ويب لـ Nextcloud بينما يعمل Redis على مضيف واحد منفصل فقط. في بيئة متعددة الخوادم، يجب تهيئة جميع عقد الويب لاستخدام نفس خادم أو مجموعة Redis. يجب تقييد الوصول إلى الشبكة لعقد Nextcloud وحماية Redis باستخدام قواعد المصادقة وجدار الحماية المناسبة.
بالنسبة لمقبس يونكس، تأكد من أن حساب PHP/web-server لديه صلاحية قراءة وكتابة المقبس. تختلف تغييرات الأذونات أو المجموعات باختلاف نظام التشغيل، لذا اتبع وثائق Redis/Valkey والتوزيعة بدلاً من تطبيق أذونات عامة مثل إمكانية الكتابة للجميع. قد يؤدي رفض الاتصال أو خطأ المصادقة أو خطأ في أذونات المقبس إلى منع Nextcloud من استخدام موفر القفل حتى في حال وجود مفتاح التكوين.
الخطوة 5: أعد تشغيل الخدمات الصحيحة
بعد حفظ الإعدادات، أعد تشغيل خدمة Redis إذا تغيرت إعداداتها، ثم أعد تشغيل بيئة تشغيل PHP التي تُشغّل Nextcloud. على سبيل المثال، قد يتطلب تثبيت Apache إعادة تشغيل Apache، بينما يتطلب تثبيت PHP-FPM إعادة تشغيل خدمة PHP-FPM المطابقة. تتضمن أسماء الخدمات أرقام إصدارات PHP في بعض التوزيعات. مع الحاويات، أعد إنشاء الخدمة ذات الصلة أو أعد تشغيلها باستخدام الطريقة المدعومة في النشر. تجنب إعادة تشغيل الخدمات غير ذات الصلة بشكل عشوائي على خادم الإنتاج.
إذا أعاد Nextcloud خطأً في التكوين أو بناء الجملة، فاستعد النسخة الاحتياطية وتحقق من وجود فاصلة مفقودة، أو علامة اقتباس غير متطابقة، أو مفتاح مكرر، أو تعديل خاطئ config.php. يجب أن تبقى إعدادات مصفوفة PHP ضمن بنية التكوين الحالية.
الخطوة 6: التحقق من الإعدادات واختبار عمليات الملفات
قم بتحديث نظرة عامة على المسؤول وتحقق مما إذا كان تحذير قفل الملفات للمعاملات قد اختفى. إذا قمتَ بتكوين ذاكرة تخزين مؤقت محلية وما زلتَ ترى تحذيرًا متعلقًا بذاكرة التخزين المؤقت، فتحقق من ذلك بشكل منفصل؛ إذ توصي Nextcloud باستخدام APCu للتخزين المؤقت المحلي في العديد من عمليات النشر أحادية الخادم، بينما يتولى Redis إدارة القفل والتخزين المؤقت الموزع. لا تُضِف Redis كذاكرة تخزين مؤقت محلية افتراضيًا، خاصةً في تكوين متعدد الخوادم.
يمكنك أيضًا فحص إعدادات القفل الفعّالة باستخدام أداة سطر الأوامر الخاصة بـ Nextcloud. شغّل الأداة occمن مجلد Nextcloud باستخدام حساب خادم الويب؛ في Debian/Ubuntu، يكون هذا الحساب عادةً www-data:
sudo -u www-data php occ config:system:get memcache.locking
يجب أن تتطابق القيمة مع الواجهة الخلفية التي اخترتها، مثل \OC\Memcache\Redisأو \OC\Memcache\KeyValueCache. إذا لم يتمكن الأمر من العثور على الإعداد، فتحقق من المسار ومستخدم التنفيذ وملف التكوين النشط. يشرح دليل OCC الرسمي كيفية تشغيل أوامر الإدارة.
أخيرًا، حمّل ملف اختبار صغيرًا، وأعد تسميته، ثم نزّله، وتأكد من قدرة تطبيق سطح المكتب أو الهاتف المحمول على مزامنة التغيير. لا تحاكي هذه الفحوصات جميع أحمال العمل المتزامنة، ولكنها تؤكد استمرار عمل عمليات الملفات العادية بعد التغيير. بالنسبة للخوادم المشغولة أو ذات المجموعات، راقب سجل Nextcloud وتوافر Redis/Valkey أثناء الاستخدام العادي. إذا استمر التحذير، فتحقق من أن بيئة تشغيل PHP للويب تحتوي على الامتداد عند استخدام الخيار أ، وأن مضيف ذاكرة التخزين المؤقت قابل للوصول، وأن بيانات الاعتماد وأذونات المقبس صحيحة، وأن جميع العُقد تشترك في نفس الواجهة الخلفية.
ما يفعله قفل الملفات للمعاملات - وما لا يفعله
يساعد قفل المعاملات على منع تلف الملفات عند تداخل العمليات، ويتعامل مع المعاملات المتقطعة، وينسق التغييرات التي تشمل الملفات المشتركة ووحدات التخزين الخارجية. لا يحجز هذا القفل مستندًا بحيث لا يمكن تحريره إلا من قبل شخص واحد، ولا يعرض من يقوم بالتحرير أيضًا، ولا يدمج التعديلات المتزامنة. تعامل مع التحذير على أنه مشكلة في إعدادات الخادم، ثم اختبر عمليات التحميل والمزامنة بشكل طبيعي بعد تهيئة النظام. لتفعيل خاصية التحرير التعاوني، استخدم تطبيقًا مصممًا للتأليف المشترك بدلًا من الاعتماد على أقفال الملفات.