لدي منتدى صغير، thmooster.net، مبني على Discourse ولم قمت بترقيته منذ بضعة أشهر.
نقرت على “تحديث” في توصية “المسؤول” للترقية، وأُخبرت بأن عليّ إجراء الترقية من موجه الأوامر (shell prompt) بدلاً من ذلك، مع إعطائي ثلاثة أسطر للتنفيذ:
cd /var/discourse
git pull
./launcher rebuild app
نفّذت هذه الأوامر الثلاثة. فشل أمر “rebuild app” في البداية لأنني لم أكن أملك 5 جيجابايت من المساحة الحرة على خادم Linode الصغير الخاص بي، لذا أضفت مساحة قرص إضافية، وبدا أن أمر “rebuild app” اكتمل بنجاح.
لكن الموقع لم يعد يعمل.
تفحصت الأمور وأعدت تشغيل الخادم، لكن الموقع لا يزال لا يعمل، ثم قمت بمزيد من الاستكشاف.
يبدو أن واجهة nginx الأمامية تعمل بشكل صحيح، لكن عندما أحاول الوصول إلى المنتدى عبر الويب، مثل أي مستخدم عادي، أحصل على خطأ “502 Bad Gateway” من واجهة nginx.
الملف “/var/discourse/shared/standalone/log/var-log/postgres/current” مليء بأخطاء مثل:
2021-04-17 13:54:37.785 UTC [7095] FATAL: database files are incompatible with server
2021-04-17 13:54:37.785 UTC [7095] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 10.12 (Debian 10.12-2.pgdg100+1).
لدي نسخ احتياطية جيدة للمنتدى في الدليل:
/var/discourse/shared/standalone/backups/default
سأفحص رابط PostgreSQL 13 الخاص بك الآن - شكرًا لك.
هل هناك طريقة كان ينبغي لي أن أعرف بها هذا التعقيد، أو كان بإمكاني معرفته، دون أن أكون مدير نظام بدوام كامل أتابع باستمرار نشاط التقنيات الأساسية (PostgreSQL و Ruby و Linux و …) وراء Discourse؟
إذا كان الأمر كذلك، فهل يمكن إضافة سطر آخر إلى سطور التعليمات الثلاثة (cd /var/discouse; …) يقول: “تحذير: راجع أولاً هذا الرابط للحصول على معلومات أخرى قد تنطبق”؟
وإذا لم يكن الأمر كذلك، فيجب أن يكون Discourse أكثر انفتاحًا بشأن عدم ملاءمته للاستخدام العادي.
لذا فإن رابط PostgreSQL 13 المذكور أعلاه، بقدر ما ينطبق على ترقية من الإصدار 12 إلى 13، ليس بالضرورة ذا صلة، حسب علمي (وهو علم ضئيل للغاية).
أشعر بقلق شديد إزاء هذا الأمر… أشبه بمحاولة إصلاح ذخائر عسكرية حية في كهف مظلم، دون تعليمات، وبدون تدريب، بل وحتى دون التأكد من نوع الذخائر التي أتعامل معها.
“يجب عليك إعادة البناء مرة أخرى. أعتقد أنك تجاهلت رسالة حول ترقية postgres.”
جعلني أفكر في أنني يجب أن أجرب أمر “cd /var/discourse; git pull; ./launcher rebuild app” مرة أخرى… يبدو أنه يمكن تجربة هذا “إعادة البناء” عدة مرات.
لقد سجلت المخرجات هذه المرة. وأؤكد لك أنني تجاهلت معظم الرسائل في المخرجات. فعدد أسطر المخرجات الناتجة عن أمر “./launcher rebuild app” وحده يصل إلى 2020 سطرًا. سيستغرق مني شهرًا من أيام الأحد تعلم جميع البرامج التي تعمل وما تعنيه رسائل مخرجاتها. لا توجد طريقة عملية لأعرف ما إذا كنت أتجاهل شيئًا حاسمًا في تلك المخرجات.
ومع ذلك…
لقد نجح الأمر !!
عاد موقعي الإلكتروني للعمل، ويعمل بإصدار البرنامج الحالي.
إذن الدرس لهذا اليوم: إذا فشل أمر “./launcher rebuild app” في توفير موقع يعمل، جربه مرة أخرى.