يشير الرمز A 500 Internal Server Errorإلى فشل طلب من جانب الخادم، ولا يُحدد المكون الذي فشل. بالنسبة للوحة تحكم BigBlueButton Greenlight، ابدأ بالبحث عن الطلب الفاشل في سجلات تطبيق Greenlight. يُشير دليل استكشاف الأخطاء وإصلاحها الخاص بـ BigBlueButton إلى أن الخطأ 500 غالبًا ما يكون خطأً في Greenlight. يُعد هذا الاستثناء مفيدًا: إذا لم يظهر إلا على بعض أجهزة الكمبيوتر في الشبكة المحلية، وسجل السجل "خطأ في المضيف غير الآمن"، فقد يكون هناك خلل في إعدادات وكيل المتصفح.
يُعدّ Greenlight v3 الإصدار الموثّق الحالي، ويستخدم بنية نشر مختلفة عن الإصدار v2 الأقدم. يُساعدك هذا الدليل على تحديد إصدارك، وجمع الأدلة اللازمة، والتحقق من الأسباب الشائعة بترتيب آمن. يفترض هذا الدليل استخدام نشر Greenlight القائم على Docker. استخدم الأوامر بصفتك مسؤول خادم، وعدّل اسم الحاوية ومسارها إذا كان تثبيتك مختلفًا.
افهم أي مكون يُرجع الخطأ 500
Greenlight هو تطبيق الويب المستخدم لتسجيل الدخول وإدارة الغرف وبدء اجتماعات BigBlueButton. يستقبل خادم وكيل عكسي مثل Nginx طلبات المتصفح ويعيد توجيهها إلى Greenlight. يتواصل Greenlight بعد ذلك مع واجهة برمجة تطبيقات BigBlueButton ويعتمد على خدمات مثل PostgreSQL وRedis. قد ينشأ الخطأ 500 من Greenlight أو خادم الوكيل أو أحد الخدمات التابعة؛ ولن يؤدي إعادة تشغيل خدمات وسائط BigBlueButton إلى حل مشكلة قاعدة البيانات أو التطبيق.
لاحظ أولاً الإجراء الذي يُسبب الخطأ: فتح لوحة التحكم، تسجيل الدخول، تحميل قائمة الغرف، أو بدء اجتماع. سجّل مسار عنوان URL، والوقت التقريبي، وما إذا كان جميع المستخدمين متأثرين، وأي تغييرات حديثة مثل الترقية، أو تعديل نظام أسماء النطاقات (DNS)، أو تغيير الخادم الوكيل، أو تغيير بيانات الاعتماد. إذا تم تحميل الصفحة الرئيسية ولكن أحد الإجراءات يُرجع الخطأ 500، فهذا يُضيّق نطاق الطلب الذي يجب التحقيق فيه.
استعد قبل تغيير أي شيء
- تأكد مما إذا كانت الصورة
bigbluebutton/greenlight:v3من الإصدار الثاني (v2) أو إصدارًا مخصصًا. لا تُطبّق تعليمات الإصدار الثاني (v2) على الإصدار الثالث (v3).
- احتفظ بنسخة من ملف Docker Compose وملف البيئة ذي الصلة في مكان آمن قبل تعديلهما. فهما يحتويان على بيانات اعتماد.
- سجّل وقت حدوث الخطأ، وافحص فقط نافذة سجل قصيرة حوله. احجب كلمات المرور، ورموز الوصول، وأسرار واجهة برمجة التطبيقات، وعناوين البريد الإلكتروني، وروابط الاجتماعات الخاصة قبل مشاركة السجلات.
- لا تقم بتشغيل
docker compose down -vأو إزالة وحدات تخزين قاعدة البيانات أو حذف مساحة تخزين Greenlight لإعادة ضبط لوحة التحكم. قد تؤدي هذه الإجراءات إلى فقدان الحسابات أو الإعدادات أو الملفات التي تم تحميلها.
الخطوة 1: تحقق من الحاويات قيد التشغيل والتقط الاستثناء
على مضيف Docker، قم بإدراج الحاويات المتعلقة بـ Greenlight وصورها وحالتها:
sudo docker ps -a --filter name=greenlight \
--format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
في التثبيت القياسي لبرنامج Greenlight v3، يُطلق على حاوية التطبيق عادةً اسم greenlight-v3. اقرأ مخرجاتها الأخيرة في وقت حدوث العطل:
sudo docker logs --since=15m --tail=200 greenlight-v3
إذا كان تثبيتك يستخدم Compose، فقم بتشغيل الأمر docker compose psمن docker compose logs --since=15m --tail=200المجلد الذي يحتوي على ملف Compose الخاص به. قد يحتفظ تثبيت BigBlueButton بملفات الإصدار 3 في المجلد `/dev/cp` ~/greenlight-v3؛ وقد تختلف عمليات التثبيت المستقلة. استخدم الموقع الفعلي وأسماء الحاويات التي يُبلغ عنها مضيفك. بالنسبة لعمليات تثبيت الإصدار 2 الأقدم، تحقق من سجل Rails المُثبَّت، والذي يوجد عادةً log/production.logداخل مجلد تثبيت Greenlight، أو افحص /usr/src/app/log/production.logالحاوية إذا لم تكن مُثبَّتة.
ابحث عن أول استثناء عند فشل الطلب، وليس فقط عن استجابة 500 الأخيرة. تشير أخطاء الاتصال بقاعدة البيانات، وأخطاء Redis، وفشل طلبات واجهة برمجة التطبيقات، وأخطاء التحقق من الشهادات، واستثناءات Rails إلى حلول مختلفة. إذا توقف تشغيل الحاوية، فقد تظل سجلاتها متاحة عبر docker logs...
الخطوة الثانية: تحقق من اتصال Greenlight بـ BigBlueButton
عند تعطل لوحة التحكم أثناء تحميل الغرف أو بدء اجتماع، تحقق من عنوان URL الخاص بـ BigBlueButton والكلمة السرية المشتركة المستخدمة من قِبل Greenlight. في الإصدار 3، يتضمن ملف البيئة BIGBLUEBUTTON_ENDPOINTو BIGBLUEBUTTON_SECRET. يجب أن تكون نقطة النهاية هي عنوان URL الخاص بواجهة برمجة التطبيقات (API) الخاصة بنشرك، وليس عنوان مضيف مُخمّن أو عنوان URL خاص باجتماعات المتصفح فقط. إذا كنت تستخدم موازن تحميل مثل Scalelite، فاستخدم نقطة النهاية وبيانات الاعتماد المُقدمة لهذا الإعداد.
يعرض خادم BigBlueButton sudo bbb-conf --secretعنوان URL والكلمة السرية المُكوّنة. قارنها بشكل خاص مع قيم Greenlight. لا تقم بلصق الكلمة السرية في تذكرة دعم أو سجل محادثة أو دردشة عامة. قد تتسبب كلمة سرية قديمة بعد إعادة التثبيت أو تغيير بيانات الاعتماد في فشل استدعاءات واجهة برمجة التطبيقات حتى لو كان حاوية لوحة التحكم سليمة.
يُنفَّذ هذا الأمر أيضًا sudo bbb-conf --checkعلى خادم BigBlueButton. يتحقق من خدمات BigBlueButton ومشاكل التكوين الشائعة؛ ولا يُغني عن فحص سجلات Greenlight. إذا كان Greenlight مُثبَّتًا على خادم مستقل منفصل، فيجب تنفيذ هذا الأمر على خادم BigBlueButton المُثبَّت عليه bbb-conf.
الخطوة 3: تحقق من قاعدة البيانات، وRedis، والتحديثات الأخيرة
تُعرّف بيئة Greenlight v3 التجريبية اتصالات قاعدة البيانات وذاكرة التخزين المؤقت باستخدام DATABASE_URL` REDIS_URL. تأكد من تشغيل حاويات PostgreSQL وRedis، وأن القيم في بيئة التطبيق تُطابق أسماء خدمات Compose والمنافذ واسم قاعدة البيانات وبيانات الاعتماد. قد تُعيد حاوية Greenlight سليمة ظاهريًا رمز الخطأ 500 إذا تعذّر عليها الوصول إلى أحد هذه المتطلبات.
إذا بدأ الخطأ بعد الترقية، قارن علامة الصورة المنشورة وملف Compose وملف البيئة مع إجراءات الإصدار التي اتبعتها. تجنب سحب صورة عشوائية أو تغيير مخطط قاعدة البيانات يدويًا أثناء تشخيص بيئة الإنتاج. قم بعمل نسخة احتياطية من قاعدة البيانات أولًا، ثم استخدم عملية ترقية Greenlight الموثقة لتثبيتك. تحقق أيضًا من مساحة القرص: قد يمنع امتلاء وحدة التخزين عمليات الكتابة في PostgreSQL، أو كتابة السجلات، أو تحديثات تخزين الأصول.
الخطوة 4: تحقق من إعدادات الوكيل واسم المضيف والمسار الفرعي
إذا ظهر الخطأ فقط عند استخدام اسم المضيف العام، فتحقق من المسار من المتصفح عبر الخادم الوكيل العكسي إلى Greenlight. تأكد من أن الخادم الوكيل يُعيد التوجيه إلى المنفذ الداخلي الصحيح ويحافظ على رؤوس المضيف والبروتوكول المتوقعة. اختبر إعدادات الخادم الوكيل قبل إعادة تحميل Nginx sudo nginx -t، ثم راجع سجل أخطاء الخادم الوكيل عند الطابع الزمني المطابق.
يتوقع Greenlight v3 التشغيل في المسار الجذر افتراضيًا. إذا تم نشره تحت مسار مثل `//` /gl، RELATIVE_URL_ROOTفيجب أن تتطابق قواعده مع قواعد الخادم الوكيل العكسي. يشير دليل التثبيت الرسمي إلى أن تغيير جذر عنوان URL النسبي يتطلب ترقية/إعادة تهيئة من خلال عملية التثبيت؛ ولا يكفي تعيين متغير shell وحده لإصلاح عدم تطابق النشر الحالي. غالبًا ما يتسبب عدم التطابق في تعطل عمليات إعادة التوجيه أو الأصول، ولكن قد يكشف طلب الوكيل الفاشل عن نفسه كخطأ في التطبيق.
يوثق موقع BigBlueButton حالة محددة في الشبكة المحلية: إذا كانت بعض أجهزة الكمبيوتر الموجودة خلف خادم وكيل فقط تتلقى الخطأ 500، وكان سجل Greenlight يحتوي على ذلك Error::Unsafe Host Error، فتحقق من ضبط نظام Windows لتجاوز الخادم الوكيل لعناوين الشبكة المحلية أو الإنترانت. هذه مشكلة في مسار شبكة العميل، وليست سببًا لتعطيل التحقق من صحة المضيف بشكل عام.
الخطوة 5: مراجعة تغييرات المصادقة والبريد الإلكتروني
إذا حدث الخطأ 500 أثناء تسجيل الدخول، فتحقق من التغييرات الأخيرة في إعدادات OpenID Connect، أو عناوين URL لإعادة التوجيه، أو موفر الهوية. يستخدم Greenlight v3 قيمًا مثل OPENID_CONNECT_ISSUERو OPENID_CONNECT_CLIENT_IDو OPENID_CONNECT_REDIRECTعند تكوين المصادقة الخارجية. تأكد من أن عنوان URL لإعادة التوجيه يطابق عنوان URL العام لـ Greenlight، بما في ذلك أي مسار فرعي مُكوَّن، وراجع سجلات كل من Greenlight وموفر الهوية للتأكد من تطابق الطابع الزمني.
تشير وثائق Greenlight الإصدار 3 إلى أن البريد الإلكتروني مطلوب لتفعيل الميزات الأساسية للمنصة. في حال تعطل لوحة التحكم أثناء إرسال دعوة، أو التسجيل، أو إعادة تعيين كلمة المرور، أو أي إجراء آخر متعلق بالبريد الإلكتروني، يُرجى التحقق من اتصال SMTP وبيانات الاعتماد، وإعدادات TLS، وسجل التطبيق. حافظ على سرية بيانات SMTP السرية. يُعدّ التعطل المقتصر على الإجراءات المتعلقة بالبريد مؤشرًا على ضرورة التحقق من إعدادات البريد قبل تغيير بيانات اعتماد واجهة برمجة تطبيقات BigBlueButton.
أعد التشغيل فقط بعد تحديد السبب المحتمل
بعد تصحيح مشكلة مؤكدة في بيئة التشغيل أو الخادم الوكيل، أعد تشغيل خدمة Greenlight المتأثرة باستخدام ملف Compose الخاص بهذا التثبيت. على سبيل المثال، من دليل تثبيت الإصدار 3:
cd ~/greenlight-v3
sudo docker compose ps
sudo docker compose restart greenlight-v3
قد تختلف أسماء خدمات Compose عن أسماء الحاويات. إذا أشار أمر إعادة التشغيل إلى أن الخدمة غير معروفة، فافحص docker compose config --servicesخدمة Greenlight المدرجة وأعد تشغيلها، أو استخدم أمر التحديث الموثق الخاص بالنشر. تجنب إعادة تشغيل PostgreSQL أو إزالة وحدات التخزين إلا إذا أظهرت السجلات مشكلة في التبعيات وكان لديك خطة استرداد.
تحقق من الإصلاح واعرف متى يجب تصعيد المشكلة
كرر نفس الإجراء الذي فشل سابقًا، ثم تحقق من الاستجابة في المتصفح وسجل Greenlight عند الطابع الزمني الجديد. تأكد من قدرة المستخدمين على تحميل لوحة التحكم، وإذا كان الفشل الأصلي متعلقًا باجتماع، فابدأ اجتماعًا تجريبيًا. إذا bbb-conf --checkنجح الاجتماع ولكن التطبيق لا يزال يُرجع رمز الخطأ 500، فهذا يشير إلى أن المشكلة تكمن في Greenlight أو تبعياته أو الخادم الوكيل.
إذا استمرت المشكلة دون حل، يُرجى تقديم إصدار Greenlight أو علامة الصورة، ونوع النشر، ومسار عنوان URL المتأثر، ووقت حدوث العطل، والاستثناء ذي الصلة بعد تنقيحه، وحالة الحاوية، والتغييرات الأخيرة. يُرجى عدم مشاركة ملفات البيئة الكاملة، أو أسرار واجهة برمجة التطبيقات، أو كلمات مرور قواعد البيانات، أو ملفات تعريف ارتباط جلسة المستخدم، أو السجلات غير المنقحة.
استخدم دليل استكشاف أخطاء BigBlueButton وإصلاحها للتفسير الرسمي لأخطاء 500، ووثائق تثبيت وتكوين Greenlight v3 لنموذج النشر الحالي v3. يحتوي ملف بيئة Greenlight v3 التجريبي للمشروع على قائمة بمتغيرات البيئة المدعومة. يختلف Greenlight v2 عن v3، لذا استخدم الوثائق التي تتوافق مع إصدارك المُثبّت.