لقد قمت مؤخرًا بترحيل صورة خادم تحتوي على Discourse مثبت بواسطة Docker.
يمكنني تشغيل كل شيء، ولكن أحتاج إلى إعادة إصدار شهادة SSL.
نظرًا لأن الخادم القديم كان يحتوي على SSL مُعد، فإنني أتبع اقتراح هذا الدليل وأقوم بتشغيل ./launcher rebuild app
يقوم هذا بدوره بسحب Docker وتحديث العديد من الأشياء. الصورة الحالية هي Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e
في المرة الأولى التي قمت فيها بتشغيله، ظهرت لي رسالة ترقية Postgres، لذلك قمت بتشغيل ./launcher rebuild app مرة أخرى كما هو موجه.
الآن يستمر في الفشل في كل مرة، وأعتقد أن ذلك بسبب هذا الخطأ مع إصدار غير كافٍ من Ruby مثبت.
ERROR: Error installing bundler:
bundler-2.5.3 requires Ruby version >= 3.0.0. The current ruby version is 2.7.2.137.
إليك المخرجات الكاملة
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 304 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}
2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
كنت أعتقد أن Docker سيقوم بتحديث إصدار Ruby حسب الحاجة؟
لقد حاولت تسجيل الدخول يدويًا إلى الحاوية وتثبيت RVM، وتفعيل Ruby v3+ ولكنني ما زلت أواجه نفس الخطأ.
أنا تائه بعض الشيء في هذه المرحلة، وأتساءل ما إذا كان الإصدار المثبت قديمًا جدًا بحيث لا يمكن ترقيته باستخدام ./launcher؟
الأمر ليس صعبًا. يمكنك ببساطة عمل نسخة احتياطية، أو القيام بـ نقل موقع Discourse إلى VPS آخر باستخدام rsync. ليس لديك ما تخسره بما أن موقعك الحالي يبقى سليمًا. إنها الطريقة الأكثر أمانًا للمضي قدمًا.
لقد قمت بتحديث كل ما يمكنني تحديثه، بما في ذلك إصدار Ubuntu للخادم وتأكدت من أن لدي ruby v3.1 قيد التشغيل.
المشكلة هي أنني أشك في أن إصدار ruby المطلوب في الحاوية هو الذي يتحكم فيه docker، ولا يمكنني تحديثه.
ولكن، عندما قمت باستعادة النسخة الاحتياطية من الموقع القديم، لا يبدو أنها استعيدت بشكل صحيح والآن صفحة تسجيل الدخول لا تعمل. بالنظر إلى وحدة تحكم JavaScript، هناك خطأ Discourse is not defined كلما نقرت على أزرار تسجيل الدخول/التسجيل. أعتقد أنه بسبب الاختلاف الكبير في الإصدارات، فإن استعادة بسيطة لنسخة احتياطية 2.6.0 إلى تثبيت نظيف 3.3.0 ليست ممكنة.
نقل كل شيء إلى خادم جديد لا يعمل بالنسبة لي، حيث لا يمكنني تشغيل ./launcher rebuild app دون أن يمنعني خطأ Ruby هذا في كل مرة.
شكرا على المعلومات، للأسف عندما أحاول الوصول إلى /safe-mode يتم إعادة توجيهي مرة أخرى إلى عنوان URL /login.\n\nأعتقد أنني سأحاول إعادة التثبيت والبدء من جديد
لقد استخدمت صورة الخطاب الرسمية ولكنني أفترض أن ذلك يثبت أحدث إصدار بغض النظر عما إذا كان تجريبيًا. أو هل هناك طريقة يمكنني من خلالها تحديد إصدار مستقر أو إصدار معين؟
نعم يمكنك ذلك. قم بتحرير ملف app.yml في تثبيت جديد قبل بناء discourse (نظرًا لأنه لا يمكنك الرجوع إلى إصدار أقدم). اختر العلامة من GitHub. اضطررت للقيام بذلك منذ بعض الوقت عندما اضطررت إلى الاستعادة إلى إصدار قديم قبل الترقية إلى أحدث إصدار.
الآن أقوم بإنشاء صورة للإصدار العامل قبل الترقية في حالة حدوث خطأ ما.