محاولة تثبيت إضافة أدت إلى تدمير الموقع، ولا يمكن تشغيل إعادة البناء

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

هذا ما ظهر من إعادة البناء ومن أداة الفحص (doctor)

ملخص
FAILED
--------------------
NoMethodError: undefined method `each' for nil:NilClass
Location of failure: /pups/lib/pups/config.rb:99:in `run_commands'
dfd33a9a3be65ddb9a1fd19c19e5034a44c39f46e330ccdf0533f4f66d7d0005
** FAILED TO BOOTSTRAP ** يرجى التمرير للأعلى والبحث عن رسائل خطأ سابقة، فقد يكون هناك أكثر من خطأ.
قد تساعدك أداة ./discourse-doctor في تشخيص المشكلة.
root:/var/discourse# ./discourse-doctor
DISCOURSE DOCTOR Thu Jul 16 07:53:05 UTC 2020
OS: Linux itsbx 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux



==================== مشكلة خطيرة!!!! ====================
التطبيق غير قيد التشغيل!
جاري محاولة إعادة البناء
==================== سجل إعادة البناء ====================
التأكد من أن برنامج التشغيل محدث
جلب الأصل
برنامج التشغيل محدث
إيقاف الحاوية القديمة
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
محدث بالفعل.
I, [2020-07-16T07:53:23.985444 #1]  INFO -- : Loading --stdin


FAILED
--------------------
NoMethodError: undefined method `each' for nil:NilClass
Location of failure: /pups/lib/pups/config.rb:99:in `run_commands'
2386f66f76d9c9ffbbcd02bfad9e0530683714d433bff8d70976cae6c4b8fc86
** FAILED TO BOOTSTRAP ** يرجى التمرير للأعلى والبحث عن رسائل خطأ سابقة، فقد يكون هناك أكثر من خطأ.
قد تساعدك أداة ./discourse-doctor في تشخيص المشكلة.
==================== نهاية سجل إعادة البناء ====================
فشل إعادة بناء التطبيق.

التحقق من اسم النطاق الخاص بك . . .

تم الاتصال بنجاح بموقعك.
يُنصح بإزالة أي إضافات غير قياسية وإعادة البناء.
جاري محاولة إعادة تشغيل الحاوية الحالية . . .

بدء تشغيل الحاوية الحالية
+ /usr/bin/docker start app
استجابة خطأ من الديمن: فشل برنامج تشغيل الاتصال الخارجي على نقطة النهاية app (39c7d5a80e10058bc952825fccd073af0f2ff12857895aa1046a6615d879a5a0): خطأ بدء وكيل المستخدم الأرضي: listen tcp 0.0.0.0:443: bind: العنوان مستخدم بالفعل
خطأ: فشل في تشغيل الحاويات: app
فشل إعادة تشغيل الحاوية.


==================== الإضافات ====================
          - git clone github.com/discourse/docker_manager.git

لم يتم اكتشاف أي إضافات غير رسمية.

راجع thub.com/discourse/discourse/blob/master/lib/plugin/metadata.rb للحصول على القائمة الرسمية.

========================================
**إصدار Discourse على myhost: غير موجود**
**إصدار Discourse على localhost: غير موجود**


==================== معلومات الذاكرة ====================
RAM (MB): 2041

              total        used        free      shared  buff/cache   available
Mem:           1993         144        1237           0         611        1677
Swap:          2047          76        1971

==================== فحص مساحة القرص ====================
---------- مساحة قرص نظام التشغيل ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        49G   11G   38G  22% /

==================== معلومات القرص ====================
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3980448C-AF15-4833-A022-C759F0D2D80A

Device      Start       End   Sectors  Size Type
/dev/vda1  227328 104857566 104630239 49.9G Linux filesystem
/dev/vda14   2048     10239      8192    4M BIOS boot
/dev/vda15  10240    227327    217088  106M Microsoft basic data

مدخلات جدول التقسيمات غير مرتبة حسب ترتيب القرص.

==================== نهاية معلومات القرص ====================

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

حسناً، بعد محاولة إعادة التشغيل وتعديل الأمور لساعات، جربت أخيراً الأمر التالي:

./launcher start app

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

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

يبدو أنه بدأ فقط صورة قديمة باستخدام الأمر ./launcher start app.

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

عذراً، لقد واجهتُ حالة طارئة ولم أستطع متابعة هذا الموضوع.

لم ينجح إعادة البناء، وقد حاولت مرة أخرى اليوم ولم ينجح أيضاً. الموقع يعمل بشكل جيد بعد تشغيل “./launcher start app”، لكن أي محاولة لإعادة البناء تفشل، بالإضافة إلى أخطاء تظهر من أداة discourse doctor. يمكنني نشر السجل الذي يقدمه لي إذا كان ذلك سيساعد، لكن من الواضح أن هناك شيئاً ما لا يزال خاطئاً، وأنا قلق من أن يؤدي ذلك إلى مشكلة في وقت لاحق.

يبدو أن لديك خطأ في التنسيق في ملف yml الخاص بك.

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

ما أفعله عادةً عند إضافة مكون إضافي هو نسخ/لصق سطر مكون إضافي موجود وتعديل عنوان URL الخاص بـ GitHub. بهذه الطريقة تقلل من احتمال إتلاف شيء ما.

هذا ما افترضته، وفي البداية كان خاطئًا، لكنني راجعت الموقع http://www.yamllint.com/ لإصلاح الأخطاء الناتجة عن وضع نص الإضافة في الأماكن الخاطئة في الأصل، وقد عاد لي بأنه سليم تمامًا. لقد تحققت منه عدة مرات خلال العملية (كلًا من الأجزاء المحددة والنص بالكامل)، وقد أكد أنه صحيح. إلا إذا كان هذا الموقع غير دقيق لسبب ما، وهو أمر ممكن تمامًا، فأنا لست خبيرًا فيه إلى هذا الحد.

هذا ما أراه عندما أحاول إعادة البناء، وهذا ما يظهر عند تشغيل discourse doctor (كلاهما قبل خمس دقائق تقريبًا). لقد أزلت المعلومات الشخصية، لكنها في السجل الفعلي موجودة وصحيحة بالكامل.

إعادة بناء التطبيق

التأكد من أن المُشغّل محدث
جلب الأصل (origin)
المُشغّل محدث
إيقاف الحاوية القديمة

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    محدث بالفعل.
    I, [2020-07-23T22:58:14.812604 #1] INFO – : جاري تحميل --stdin

فشل

NoMethodError: لا توجد طريقة each لـ nil:NilClass
موقع الفشل: /pups/lib/pups/config.rb:99:in `run_commands’
1a575aa2a169fcb4a9bbb0874c55d3fd01ee1e7368ff58e2099c9602f6c32109
** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل خطأ سابقة، فقد يكون هناك أكثر من خطأ.
قد يساعد ./discourse-doctor في تشخيص المشكلة.

discourse-doctor

DISCOURSE DOCTOR الخميس 23 يوليو 22:59:22 ت ع م 2020
نظام التشغيل: Linux itsbx 4.15.0-111-generic #112-Ubuntu SMP الخميس 9 يوليو 20:32:34 ت ع م 2020 x86_64 x86_64 x86_64 GNU/Linux

تم العثور على containers/app.yml

==================== إعدادات YML ====================
DISCOURSE_HOSTNAME=جيد
SMTP_ADDRESS=جيد
DEVELOPER_EMAILS=جيد
SMTP_PASSWORD=جيد
SMTP_PORT=587
SMTP_USER_NAME=جيد
LETSENCRYPT_ACCOUNT_EMAIL=جيد

==================== معلومات Docker ====================
إصدار Docker: Docker version 19.03.8, build afacb8b7f0

عمليات Docker (docker ps -a)

معرف الحاوية الصورة الأمر تم إنشاؤه الحالة المنافذ الأسماء
343a1aa3c05c local_discourse/app “/sbin/boot” منذ 7 أيام انتهت (5) منذ دقيقة تقريبًا app

==================== مشكلة خطيرة!!! ====================
التطبيق لا يعمل!
محاولة إعادة البناء
==================== سجل إعادة البناء ====================
التأكد من أن المُشغّل محدث
جلب الأصل (origin)
المُشغّل محدث
إيقاف الحاوية القديمة

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    محدث بالفعل.
    I, [2020-07-23T22:59:41.894064 #1] INFO – : جاري تحميل --stdin

فشل

NoMethodError: لا توجد طريقة each لـ nil:NilClass
موقع الفشل: /pups/lib/pups/config.rb:99:in `run_commands’
439734a2cd69755d8351bbdadd9756cb573577d7f1b306aedaafa1c7d4bc29cf
** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل خطأ سابقة، فقد يكون هناك أكثر من خطأ.
قد يساعد ./discourse-doctor في تشخيص المشكلة.
==================== نهاية سجل إعادة البناء ====================
فشل إعادة بناء التطبيق.

التحقق من اسم النطاق الخاص بك . . .

نجح الاتصال بالموقع الإلكتروني.
يجب عليك على الأرجح إزالة أي إضافات غير قياسية وإعادة البناء.
محاولة إعادة تشغيل الحاوية الحالية . . .

بدء تشغيل الحاوية الحالية

  • /usr/bin/docker start app
    خطأ في استجابة البرنامج: فشل السائق في برمجة الاتصال الخارجي على نقطة النهاية app (100c15324a128a2b007d8b89e29fe0f455585fd8c7d99855ef87bb4f17892b4b): خطأ عند بدء تشغيل وكيل المستخدم الأرضي: listen tcp 0.0.0.0:443: bind: العنوان مستخدم بالفعل
    خطأ: فشل في بدء الحاويات: app
    فشل إعادة تشغيل الحاوية.

==================== الإضافات ====================

لم يتم اكتشاف أي إضافات غير رسمية.

انظر discourse/lib/plugin/metadata.rb at main · discourse/discourse · GitHub للحصول على القائمة الرسمية.

========================================
إصدار Discourse على الموقع الإلكتروني: غير موجود
إصدار Discourse على localhost: غير موجود

==================== معلومات الذاكرة ====================
الذاكرة العشوائية (RAM) بالميغابايت: 2041

المجموع المستخدم الحر المشترك مخزن مؤقت/ذاكرة متاح
الذاكرة العشوائية: 1993 140 1310 0 542 1695
مساحة التبادل: 2047 72 1975

==================== فحص مساحة القرص ====================
---------- مساحة قرص نظام التشغيل ----------
نظام الملفات الحجم المستخدم المتاح النسبة% mounted on
/dev/vda1 49G 13G 37G 26% /

==================== معلومات القرص ====================
القرص /dev/vda: 50 GiB، 53687091200 بايت، 104857600 قطاع
الوحدات: قطاعات بـ 1 * 512 = 512 بايت
حجم القطاع (المنطقي/الفيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/المثالي): 512 بايت / 512 بايت
نوع تسمية القرص: gpt
مُعرّف القرص: 3980448C-AF15-4833-A022-C759F0D2D80A

القرص البداية النهاية القطاعات الحجم النوع
/dev/vda1 227328 104857566 104630239 49.9G نظام ملفات Linux
/dev/vda14 2048 10239 8192 4M تمهيد BIOS
/dev/vda15 10240 227327 217088 106M بيانات أساسية من Microsoft

مدخلات جدول الأقسام غير مرتبة حسب القرص.

==================== نهاية معلومات القرص ====================

أول ما ألاحظه هو أنه يقول “مشكلة خطيرة، التطبيق لا يعمل”. و"إصدار Discourse على الموقع الإلكتروني وعلى localhost غير موجود". افتراضي (غير المستنير) هو أن ما تعنيه هذه العبارات هو المشكلة.

كما أدى ذلك إلى تعطل موقعي للتو عندما قمت بتشغيل إعادة البناء، وقمت بتشغيل “بدء التطبيق” لإصلاحه مرة أخرى.

حسناً، لا يبدو أن الأمر مشكلة في التنسيق، لكنني لا أستطيع تحديد ما قد يكون السبب.

إذا كان ملف app.yml يسبب قلقًا، فأعتقد أنه الأفضل البدء من جديد بملف app.yml نظيف

rm /var/discourse/containers/app.yml
cd /var/discourse
cp samples/standalone.yml containers/app.yml
nano containers/app.yml

بعد ذلك، يمكنك إعادة البناء عندما يتم التحقق من كل شيء.

هذا عمل بشكل مثالي. بوضوح، عندما كان يُبلغ بأن ملف YAML صحيح… لم يكن كذلك.

ثم واجهت مشكلة مؤقتة في عدم إرسال رسائل البريد الإلكتروني، ولكن عندما ذهبت وتحققت مرة أخرى من ملف YAML الجديد، أدركت أنني أخطأت في إعداد البريد الإلكتروني (أنا دائمًا أنسى أنني قمت بتعيينه إلى @mg. على Mailgun)، لذا تم إصلاح ذلك خلال خمس دقائق.

آه، شكرًا جزيلاً لك. لم يعد لدي خوف من حدوث دمار وشيك في أي وقت الآن.