الإعدادات تعود تلقائيًا

لدي مثيل Discourse يعمل منذ أسبوع ويظهر بعض الأعراض الغريبة التي لا أستطيع حلها، جزئياً لأن السجلات لا تُظهر أي شيء مفيد على الإطلاق.

أبرز الأعراض هو أنه إذا ذهبت إلى الإعدادات وقمت بتغيير إعداد ما، ثم نقرت على علامة الصح الخضراء، فسيتم قبول التغيير ويبدو كل شيء على ما يرام. لكن إذا قمت بعد ذلك بتحديث صفحة الإعدادات، فهناك احتمال كبير أن تظهر الإعداد القديم أو الجديد. وإذا واصلت التحديث، فستظهر أحياناً إعداداً معيناً وأحياناً آخر.

والأمر أسوأ من ذلك، فالحالة لا تقتصر على شاشة الإعدادات فحسب، بل إن وظائف الخادم نفسه تبدو وكأنها تتغير أحياناً. فعلى سبيل المثال، إذا حاولت رفع شعار جديد، فقد يظهر أحياناً الشعار القديم وأحياناً الشعار الجديد.

وللإجابة على السؤال البديهي: لا، أنا لا أشغل عدة مثيلات خلف موزع أحمال، بل مثيل واحد فقط.

ولست متأكداً مما إذا كان هناك ارتباط، لكنني لاحظت أيضاً أن إضافة Discourse Math لا تعمل بشكل صحيح. فبينما تظهر المعادلات بشكل صحيح في المعاينة، إلا أنه بمجرد نشرها، لا يبدو أن JavaScript يُدرج، وبالتالي لا يتم عرضها بشكل صحيح. إن مشكلة الرياضيات ليست الأولوية هنا، لكنني أذكرها هنا في حال كانت توفر أي أدلة إضافية.

أنا عالق حقاً هنا، ومع ظهور السجلات بشكل طبيعي، لست متأكداً حتى مما يجب أن أنشره للحصول على المساعدة. أي أفكار ستكون موضع تقدير كبير.

هذا يشير إلى تثبيت معطّل بشكل جدي. قم بإزالة جميع الإضافات التابعة لجهات خارجية وأعد البناء.

حاولت ذلك دون جدوى. على الأرجح هناك مشكلة في طريقة التثبيت أو شيء من هذا القبيل.

أنا مطور أيضًا، هل لديك أي فكرة عما قد يكون معطلاً في عملية التثبيت ويسبب هذا؟ هل هناك أي تلميح حول مكان البدء في التصحيح وحل المشكلات؟

كيف تقوم بالتثبيت؟ هل تستخدم الدليل الرسمي المقدم على GitHub؟

في الأصل، اتبعت هذه العملية. للأسف، لا تدعم معظم بيئات الإنتاج على مستوى المؤسسة المتاحة لدي. تعمل معظم الأطر وتطلق وتنشر الحاويات. وبسبب طبيعة نهج التثبيت القياسي، لا يمكن العمل في هذه الأدوات والبيئات.

لذلك، أحاول تحسين/إصلاح العملية لتتمكن من التثبيت في أي مكان يدعم النشر القائم على Docker القياسي. ورغم أن هذا الجهد يعمل إلى حد كبير، إلا أن المشكلة التي نشرتُها في الأصل هي ما أواجه صعوبة فيها.

بمجرد أن أتمكن من جعلها تعمل، سأقوم بطبعها بالتأكيد للآخرين. لقد قضيتُ العام الماضي في انتظار دعم Discourse لنظام Docker القياسي، لكنني قررتُ أن أقوم بالمساهمة بنفسي. لقد اقتربتُ جدًا، لكنني آمل أن يتمكن شخص لديه خبرة أكبر مني من إخباري أين أبحث.

هل يمكنكم المساعدة من فضلكم؟ حتى مجرد تلميح حول المكان الذي يجب البحث فيه أو تصحيح الأخطاء فيه، أو أي أفكار، ستكون موضع تقدير كبير.

هل أنت متأكد من أن الطلب يصل بشكل صحيح؟ ماذا ترى في تبويب الشبكة في أدوات المطور؟

السلوك الذي تصفه نموذجي لبيئة تحدث فيها أخطاء على جانب جافا سكريبت.

شكرًا لك، قد يكون هذا مفيدًا جدًا. نظرًا لأن إضافة MathJax بدت تعمل بشكل متقطع ثم تتوقف، يبدو أن المشكلة مرتبطة بـ JavaScript.

لقد دخلت للتو وحاولت تعيين إعداد بعد مسح ذاكرة التخزين المؤقت، مع الحرص على مراقبة تبويب الشبكة. لم تظهر أي أخطاء قبل أو بعد تغيير الإعداد (على الرغم من أن الخطأ قد ظهر).

إحدى الأسباب التي تجعل من غير المنطقي أن التغيير لا يصل على الإطلاق هو السلوك. أقوم بتغيير ما، ثم أقوم بتحديث الصفحة ويبدو أن التغيير قد عُدّ إلى حالته السابقة. لكن إذا واصلت فقط تحديث الصفحة (دون محاولة إجراء التغيير مرة أخرى)، فإن التغيير يظهر في حوالي نصف الحالات. في كل مرة أقوم فيها بتحديث الصفحة، هناك احتمال بنسبة 50% بأن يظهر الإعداد القديم مقابل الإعداد الجديد.

كما عثرت على الخطأ التالي في وحدة التحكم، لكنني أعتقد أنه غير ذي صلة؟

لم يتم العثور على widget actions-summary-item في السجل

جرّب وضع الأمان ببساطة للتخلص من جميع الإضافات بسرعة.

هل لديك حاويات ويب متعددة قيد التشغيل؟

لقد جربت هذا كما فعلت من قبل، ولم ينجح. لكنني أشك في أنني كنت حقًا في وضع الأمان. ذهبت إلى /safe-mode وحصلت على الحوار لإدخال وضع الأمان، فقبلته. لكن ما لاحظته هو أن موضوع Material Design الذي أستخدمه لا يزال ظاهرًا. لذا، بينما اعتقدت أنني في وضع الأمان، ربما لم أكن كذلك حقًا؟

بغض النظر، استمرت المشكلة.

لا أعتقد أنه يفعل ذلك… :wink:

حاويتان: واحدة لـ Sidekiq والأخرى لـ Discourse الأساسية. توجد نسخة واحدة فقط من هذا الزوج. أقوم بتشغيل PostgreSQL و Redis كخدمات مستضافة على أجهزة منفصلة.

أوه، عذرًا، كان هذا سؤالًا بديهيًا قد أجبت عنه بالفعل.

تعديل: ربما لا يكون هذا هو السبب أيضًا، لكن واجهت مشكلة مشابهة عندما كنت أستخدم قاعدة بيانات Redis كانت مستخدمة بواسطة عملية أخرى.

أعتقد أنني أدركت لماذا لم يكن الوضع الآمن يعمل. كان يتم إيقافه عند التحديث.

لقد جربت للتو في الوضع الآمن، والمشكلة لا تزال قائمة.

وأن استدعاء واجهة برمجة التطبيقات يعيد 200؟

يعتمد ذلك على ما تقصده. في علامة التبويب “Network” ضمن أداة “Inspect” للتصحيح، يظهر كل شيء برمز 200، بينما تحتوي وحدة التحكم فقط على الخطأ الذي ذكرته أعلاه (على الأرجح غير ذي صلة). في سجلات Docker، عندما أذهب إلى إعداد الإعداد، أرى ما يلي مما يؤكد نجاح العملية. ومع ذلك، عند تحديث صفحة الإعداد، يظهر إعداد ld بنسبة 50% من الوقت، بينما يظهر الإعداد الجديد بنسبة 50% من الوقت.

> 2019-08-20T13:14:15.960335498Z Started PUT "/admin/site_settings/categories_topics" for 213.127.19.53 at 2019-08-20 13:14:15 +0000
> 2019-08-20T13:14:15.968667966Z Processing by Admin::SiteSettingsController#update as */*
> 2019-08-20T13:14:15.968951769Z   Parameters: {"categories_topics"=>"25", "id"=>"categories_topics"}
> 2019-08-20T13:14:15.978407541Z   Rendering text template
> 2019-08-20T13:14:15.978607623Z   Rendered text template (0.0ms)
> 2019-08-20T13:14:15.978834745Z Completed 200 OK in 10ms (Views: 0.6ms | ActiveRecord: 0.0ms)
> 2019-08-20T13:18:39.821498901Z [ N 2019-08-20 13:18:39.8209 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 6157, application /opt/bitnami/discourse (production)
> 2019-08-20T13:18:59.866033984Z [ N 2019-08-20 13:18:59.8655 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 5973, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:04.848923491Z [ N 2019-08-20 13:19:04.8484 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 6018, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:08.900933057Z [ N 2019-08-20 13:19:08.9004 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 5995, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:09.499349110Z [ N 2019-08-20 13:19:09.4989 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 6041, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:29.645095032Z Creating scope :open. Overwriting existing method Poll.open.

إذن كيف تم التثبيت؟ إذا لم تكن تستخدم التثبيت القياسي، فما هي طريقة التثبيت والحزمة التي تستخدمها؟

أوجع… bitnami…

ما هي أنواع العمليات التي يتم الإشارة إليها؟

لم يستخدم التثبيت القياسي، على الرغم من أنني استخدمته كدليل للتعلم منه. في الأساس، كان عليّ كتابة/تعديل ملفات Docker لجعلها تعمل مع Docker Compose. ثم، بمجرد عمل Docker Compose محليًا، قمت بتحويله إلى صيغته JSON حتى يمكن استخدامه مع أدوات AWS CLI.

لذا، فإن عملية التثبيت تختلف اختلافًا كبيرًا عن التثبيت القياسي.