لدي تثبيت للإصدار 2.5.0.beta4.
كان من المقرر ترقيته ولكنه تعطل أثناء العملية ولم يعد موقعي يعمل.
لدي جميع الملفات وقاعدة البيانات وما إلى ذلك. كان ذلك عبر دوكر على أوبونتو 16.
ما هي خياراتي لإصلاح هذا؟
ليس لدي أي فكرة عندما يتعلق الأمر بالصدفة، لذلك سأضطر إلى أن أجعل شخصًا ما يقوم بذلك نيابة عني، لكنني بحاجة إلى معرفة ما يجب أن أتطلع إلى القيام به دون إطلاق النار في الظلام.
أي مساعدة ستكون موضع تقدير.
هل يمكنك تقديم بعض التفاصيل الإضافية، هل يتم تحميل الحاوية (docker ps)؟ هل هناك أي رسائل خطأ/سجلات قد تشير إلى الطريق؟ هل تستضيف ذاتيًا أم على مضيف طرف ثالث؟
مرحباً مايك، شكراً على الرد، إليك ما أحصل عليه.
عندما أقوم بتشغيل ./discourse-docto أحصل على هذا الخطأ:
+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e
RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e
RUBY_GC_HEAP_INIT_SLOTS=400000 -e
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e
DISCOURSE_DB_SOCKET=/var/run/postgresql -e
DISCOURSE_DB_HOST= -e
DISCOURSE_DB_PORT= -e
LETSENCRYPT_DIR=/shared/letsencrypt -e
DISCOURSE_FORCE_HTTPS=true -e
DISCOURSE_HOSTNAME=discuss.domain -e
DISCOURSE_DEVELOPER_EMAILS=info@domain -e
DISCOURSE_SMTP_ADDRESS=mail3.domain -e
DISCOURSE_SMTP_PORT=587 -e
DISCOURSE_SMTP_USER_NAME=xxx@domain -e
DISCOURSE_SMTP_PASSWORD=xxx -e
LETSENCRYPT_ACCOUNT_EMAIL=info@domain -h
Ubuntu-1804-bionic-64-minimal-app -e
DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:8d:5a:f6:a3:11 local_discourse/app /sbin/boot
Unable to find image 'local_discourse/app:latest' locally
docker: Error response from daemon: pull access denied for local_discourse/app, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
Failed to restart the container.
نفس الخطأ عند محاولة تشغيل /launcher rebuild app
docker هو أحدث إصدار
أرى أيضًا هذا الخطأ في سجل الطبيب:
فشل
--------------------
Pups::ExecError: cd /var/www/discourse & find /var/www/discourse ! -user discourse -exec chown discourse {} \+ فشل مع العودة #<Process::Status: pid 1929 exit 1>
موقع الفشل: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
فشل التنفيذ مع المعلمات {"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 {} \\\\+"]}
فشل التمهيد برمز الخروج 1
** فشل التمهيد ** يرجى التمرير لأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من رسالة واحدة.
./discourse-doctor قد يساعد في تشخيص المشكلة.
f4d0b782e3d1c3deccb5e3d6c186a08ebbaaea22ed37d19a2ff07b7688c83926
ما نوع الترقية التي كنت تقوم بها؟ سأتحقق من ملف app.yml بحثًا عن الأخطاء الإملائية ثم أقوم بإعادة بناء كاملة مرة أخرى.
إصدار Docker الخاص بك قديم جدًا، وهذا يحدث لأن نظام Ubuntu الخاص بك قديم جدًا.
هل لديك نسخة احتياطية؟ قم بتشغيل جهاز افتراضي خاص جديد على Ubuntu 22 وقم باستعادته.
ليس لدي نسخة احتياطية، فقط لقطة من الخادم الافتراضي الخاص عندما كان يعمل آخر مرة، لكنها لا تُحمّل بعد الاستعادة.
Docker version 23.0.3, build 3e7cbfd
ملف app.yml على ما يرام، تم التحقق منه على https://www.yamllint.com
الخطأ يتعلق بهذا السطر في المشغل:
cidbootstrap=cids/"$config"_bootstrap.cid
local_discourse=local_discourse
image="discourse/base:2.0.20230409-0052"
docker_path=`which docker.io 2> /dev/null || which docker`
git_path=`which git`
local_discourse=local_discourse
هل هناك طريقة للحصول على البيانات أو النسخ الاحتياطي في هذا الموقف؟
يجب أن تكون ملفات قاعدة البيانات متاحة. على خادم الإنتاج الخاص بك، تكون في /var/discourse/shared/standalone/postgres_data، وقد تكون في مكان مشابه لديك.
أقترح إجراء نسخة احتياطية كاملة للنظام على خادم آخر قبل المتابعة، خاصةً جميع الدلائل الموجودة تحت دليل ‘discourse’.
في غياب نسخة احتياطية حالية (بما فيه الكفاية)، سأقوم بإنشاء خادم جديد باستخدام إصدار أحدث من Ubuntu (وبالتالي Docker) ثم نسخ جميع الدلائل الموجودة تحت أشجار discourse إليه، بما في ذلك جميع ملفات postgres. (لم أضطر إلى القيام بذلك على خادم discourse بعد، لكنني قمت بإدارة قواعد بيانات postgres لمدة 20 عامًا وإذا كانت ملفات قاعدة البيانات سليمة، فإن ذلك يساعد في إعادة إنشاء/إعادة بناء الأشياء.)
هل مر وقت طويل منذ تحديث هذا النظام؟ إذا كانت الإجابة على هذا السؤال ‘نعم’، فقد تكون هناك تعقيدات في محاولة نسخ الملفات الموجودة تحت دلائل discourse إلى خادم جديد، لأن هذه ليست الطريقة الصحيحة للقيام بذلك؛ النسخة الاحتياطية لـ discourse تحتوي على أكثر بكثير من مجرد ملفات قاعدة بيانات postgresql. (لهذا السبب أحاول إجراء نسخة احتياطية حتى قبل الترقية الصغيرة، على الرغم من أنني أعترف بأنني لا أفعل ذلك دائمًا.)
من المحتمل أن تكون أحدث نسخة احتياطية لـ discourse موجودة في دليل مشابه لهذا:
/var/discourse/shared/standalone/backups/default
مرحباً مايك، شكراً على ردودك، إنها محل تقدير كبير.
فشل الترقية وفي مرحلة ما توقف تجديد شهادة SSL تلقائياً، لذلك أثناء محاولة القيام بكل هذا، انتهى بي الأمر بهذا السيناريو.
أنا أجرب هذا، أحاول إعادة بناء التطبيق ولكنني أواجه مشكلة عدم وجود مساحة كافية، لدي 15 جيجابايت مستخدمة بواسطة discourse لسبب ما.
بخلاف إعادة البناء، هل هناك طريقة لبدء discourse مثل أمر بدء؟
شكراً مرة أخرى.
ربما لديك العديد من صور الحاويات عالقة.
سيؤدي تشغيل ‘docker images’ إلى سردها. على نظام الإنتاج الخاص بي، على سبيل المثال، يسرد 7 صور، كل منها بحجم 3.5 جيجابايت تقريبًا، لذا فإن هذا يضيف بعض المساحة، ويظهر نظام العزل الخاص بي أكثر من 20 منها. يمكنك حذف بعض هذه الصور لتحرير بعض المساحة، أو نسخها إلى خادم منفصل إذا كانت لديك مساحة متاحة عليها.
أفترض أن ‘docker ps’ لا يعرض حاوية قيد التشغيل.
هل حاولت تشغيل حاوية أقدم لمعرفة ما إذا كان ذلك سيؤدي إلى تشغيل الموقع؟ بعد ذلك، يمكنك أخذ نسخة احتياطية.
أعتقد أن Launcher يجب أن يعمل لهذا الغرض، وأعتقد أنه يخدم بشكل كبير واجهة أمامية لأوامر docker ولكنه قد يؤدي أيضًا مهام أخرى ضرورية لتشغيل discourse.
مرحباً مايك، يوجد حاوية واحدة فقط هناك بشكل مثير للاهتمام. تمكنت من تحرير مساحة عن طريق مسح السجلات وما إلى ذلك. لكن لم يحالفني الحظ. هناك مشكلة أخرى لا أستطيع العثور عليها. سأتبع تعليماتك الأخرى لمعرفة ما إذا كان بإمكاني تشغيله باستخدام طرق يدوية، على سبيل المثال، نسخ الملفات وقاعدة البيانات إلى إصدار أحدث.
عندما أقوم بتشغيل docker run، أحصل على:
docker run discourse
Unable to find image 'discourse:latest' locally
docker: Error response from daemon: pull access denied for discourse, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
ماذا يحدث إذا حاولت تشغيل؟
./launcher start app
يعطي التالي:
.....truncated
Unable to find image 'local_discourse/app:latest' locally
/usr/bin/docker: Error response from daemon:
pull access denied for local_discourse/app,
repository does not exist or may require 'docker login': denied:
requested access to the resource is denied.
ما الذي تحصل عليه من ‘docker images’؟
واحد فقط:
discourse/base 2.0.20230409-0052 08afe7103ce8
يمكنني إعادة إنتاج رسائل الخطأ التي تحصل عليها تقريبًا من خلال اللعب بصورة أقدم، ولكن حتى الآن لم أجد طريقة لإجبار تلك الصورة على التحميل.
لست متأكدًا مما يمكنني اقتراحه في هذا الوقت.
مرحباً مايك، الحل الذي قدمته سابقاً والذي تم تحديده كحل قد قام بفرز الأمر إلى حد ما. تم نسخ جميع الملفات إلى خادم افتراضي خاص جديد وعملت بعد بعض التغييرات.
شكراً للجميع على المساعدة.
يسرني أنك وجدت حلاً، ويسعدني أنني تمكنت من المساعدة. تأكد من أخذ نسخ احتياطية بانتظام. ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.