تمت الترقية عن طريق الخطأ، والآن بعض الإعدادات مفقودة/معطلة

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

كان علي تغيير بيانات اعتماد SMTP الخاصة بي، لأن SendGrid تطلب الانتقال من المصادقة الأساسية إلى مفاتيح API.

وجدت هذا المستند: موفرو البريد الموصى بهم لـ Discourse

والذي ينص على:

لتغيير خدمة البريد الإلكتروني الحالية، قم بتشغيل ./discourse-setup أيضًا (سيؤدي هذا إلى إيقاف المنتدى عن العمل لبضع دقائق أثناء إعادة بنائه).

نفذت الأمر، وأجبت على الأسئلة كما هو متوقع، مما أدى إلى إخراج حوالي 2000 سطر إلى stdout، وانتهى بـ:

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
UPGRADE OF POSTGRES COMPLETE

Old 10 database is stored at /shared/postgres_data_old

To complete the upgrade, rebuild again using:

./launcher rebuild app
-------------------------------------------------------------------------------------

cfd4df26701b4b4cd4a4202f30a9c8165a1ba609c921bffc25f250f52fee6cbe

الآن، لم أكن أتوقع أن يؤدي هذا إلى “ترقية” أي شيء. كنت أريد فقط تغيير بيانات اعتماد SMTP. لكن الموقع لم يعد يعمل تلقائيًا، لذا قمت بما يقوله النص “لإكمال الترقية” ونفذت:

./launcher rebuild app

أدى هذا إلى تشغيل إخراج آخر يبلغ حوالي 8000 سطر إلى stdout. عاد الموقع للعمل في النهاية، لكنه لا يبدو كما كان:

  • اختفت شعاري، واستُبدل بشعار “Discourse”.
  • كانت صور الرموز التعريفية للمستخدمين معطلة. في النهاية، بدأت تعمل مرة أخرى.
  • كانت الصور في المنشورات وشعارات الفئات معطلة. لا تزال هذه لا تعمل. بحثت عن صور بأسماء ملفات مطابقة في دليل ./discourse/share وكذلك في سلة S3 الخاصة بنا (حيث يتوقع العنوان العثور عليها) لكنها غير موجودة.
  • المنشورات من فئة “الدعم” الخاصة بي، والتي كنت قد أخفاها عن صفحة “الأحدث”، أصبحت مرئية مرة أخرى على تلك الصفحة.
  • لم تعد فئة “الدعم” الخاصة بي مرئية على صفحة “الفئات”.
  • أصبحت صفحة “الفئات” الآن ذات عمودين، مع الفئات على اليسار و"الأحدث" على اليمين. أعتقد أنها كانت مجرد قائمة بالفئات من قبل.
  • تغير لون علامة + في زر + موضوع جديد من الأبيض إلى الرمادي.

في هذه المرحلة، أشك في أن بعض الإعدادات قد فُقدت، لكن جميع منشوراتي سليمة. ثم أعتقد أن Discourse قام بترقية نفسه (من أي إصدار لا أعرف، ربما العديد من الإصدارات)، وتغيرت بعض الإعدادات الافتراضية الأساسية وCSS والقوالب وما إلى ذلك، مما تسبب في المشاكل المذكورة أعلاه.

عند عرض المصدر، يمكنني رؤية أن الإصدار أصبح الآن 2.6.0.beta6 الذي تم إصداره قبل 7 أيام فقط.

لذا، أسئلتي هي:

  • هل من الطبيعي أن نضطر إلى ترقية البرنامج بالكامل بهذه الطريقة لتطبيق تغيير بسيط في الإعدادات، مثل بيانات اعتماد SMTP؟
  • كيف يمكنني تغيير الإعدادات أو تطبيق تحديثات الأمان دون ترقية البرنامج بالكامل؟
  • أين هي صوري، أو لماذا تغير عنوانها URL بطريقة جعلها غير قابلة للوصول؟
  • هل هناك أي طريقة للعودة إلى الإصدار السابق دون فقدان المنشورات الجديدة منذ حدوث كل هذا؟ لا أعرف حتى ما هو الإصدار الذي كنا نستخدمه من قبل. لدي نسخ احتياطية من Discourse على S3 (تصريف SQL مضغوط فقط).
  • هل أحتاج فقط إلى المرور عبر جميع الإعدادات والتخصيصات يدويًا لإصلاح أشياء مثل لون + موضوع جديد، وفئة “الدعم” المخفية/المرئية؟

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

شكرًا لك.

نعم. كان من الممكن تدمير الحاوية وإعادة تشغيلها لتطبيق إعدادات SMTP الجديدة، لكنك ستحتاج إلى البحث بعناية لمعرفة كيفية القيام بذلك.

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

غير واضح. عادةً لا تُفقد الصور أثناء الترقية.

لا. [quote=“mrmachine, post:1, topic:171465”]
هل علي فقط المرور عبر جميع الإعدادات والتخصيصات يدويًا لإصلاح أشياء مثل لون زر + موضوع جديد، وفئة “الدعم” المخفية/المرئية؟
[/quote]

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

لكنك لن تتمكن بعد من التراجع دون فقدان المنشورات منذ آخر نسخة احتياطية.

يجب عليك الترقية مع كل إصدار تجريبي (beta)، أو الانتقال إلى الفرع المستقر مع الإصدار المستقر التالي.

أنا أتابع هذا الأمر. كنا نخزن الصور المرفوعة على S3 ولم نختار تحميل الصور عن بُعد لتجنب الروابط المعطلة. لست متأكدًا مما إذا كان هذا ذا صلة، ولكن النقطة هي أنه كان ينبغي تخزين الصور على S3 والرجوع إليها باستخدام عناوين URL الخاصة بـ S3 في Discourse.

بعد الترقية، لم تظهر العديد من الصور. شعارات التصنيفات والصور التي رفعها المستخدمون في المنشورات. عند التحقق من S3، تبين أن أسماء الملفات المرجعة غير موجودة.

لحسن الحظ، كنا قد فعّلنا إصدارات S3، وتمكّنت من رؤية في وحدة تحكم S3 أن العديد من الصور المرجعة قد حُذفت خلال/بعد الترقية.

قمت بتعديل سكريبت بايثون وجدته (https://stackoverflow.com/a/54613767/2829685) للمرور على جميع نسخ الكائنات في حوض S3 الخاص بنا وإزالة “علامات الحذف” عن النسخة الحالية لأي ملف يحتوي على طابع زمني last_modified يساوي أو يتجاوز تاريخ الترقية.

استغرق الأمر معظم اليوم للتشغيل وأعاد استعادة حوالي 45 ألف صورة. يبدو أن Discourse ينشئ العديد من الصور المصغرة لكل صورة.

الآن عادت شعارات التصنيفات والصور التي رفعها المستخدمون في المنشورات. لكنني لا أعرف كيف يمكن أن تكون جميع هذه الصور قد حُذفت في S3 كجزء من عملية الترقية.

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