مرحباً، أحاول تمكين النسخ الاحتياطي لـ S3 على خادم Min.IO. عندما أقوم بتغيير app.yml إلى ما أعتقد أنه يعكس التوثيق، ثم أقوم بإعادة البناء، عند الانتهاء كل ما أحصل عليه في المتصفح هو النقاط الملونة الأربعة في منتصف الشاشة. عندما أنظر في وحدة التحكم أحصل على؛
Uncaught ReferenceError: I18n is not defined
at admin?v=103a67b2358b…86c5a58d96d4e91:1:1
wizar d?v=ab2295f1774…85b733472935c34a0:1
Uncaught ReferenceError: I18n is not defined
at wizard?v=ab2295f1774…b733472935c34a0:1:1
على خادم Min، قمت بإعداد المنطقة، ثم حاوية عامة تسمى ‘assets’، ثم حاوية خاصة تسمى ‘discourse-data’، وبالطبع بيانات اعتماد مطابقة. لقد جربت بدون علامات اقتباس حول المتغيرات فقط في حالة لأن بعض الأمثلة تفعل ذلك - لا تغيير.
إذا قمت بتغيير هذه وإعادة التشغيل، فإنها لا تبدو أنها تأخذ. أحتاج إلى إعادة بناء لتفعيلها مما يجعل دورة الاختبار مؤلمة للغاية. سيكون الأمر أسهل قليلاً إذا كانت هذه الحقول متاحة في إعدادات المسؤول، وهو ما يبدو أنها كانت تاريخياً، أو على الأقل تظهر على لقطات شاشة بعض الأشخاص (؟)
إذا قمت بالتعليق على جميع إدخالات _S3 في app.yml وأعدت البناء، فإنه يعمل بشكل جيد. (ليس لدي النسخ الاحتياطي مهيأ) (عناوين ENDPOINT و CDN تحل محليًا إلى عنوان IP الصحيح)
كان إعداد كل شيء آخر، بما في ذلك الاشتراكات، سهلاً للغاية، لكنني اصطدمت بجدار مع هذا. هل لدى أي شخص فكرة عما أفعله بشكل خاطئ؟
هل تريد النسخ الاحتياطي فقط على S3؟ إذا كان الأمر كذلك، فأنت تحتاج فقط إلى المفاتيح ودلو النسخ الاحتياطي.
لقد قمت بتكوينه لجميع الأصول في S3، ولكنك على الأرجح أغفلت الجزء الموجود في أعلى التعليمات الذي يحتوي على مهام rake لتجميع الأصول مسبقًا ودفعها إلى S3.
مرحباً، شكراً لك على ذلك، سأقوم بتجربة شيئين الآن؛
إعادة البناء باستخدام ACCESS و SECRET و BACKUP_BUCKET (وأفترض أن نقطة النهاية؟)
محاولة إضافة مهام الـ rake وإعادة البناء
أنت على حق في أنني كنت أرغب في البيانات فقط في البداية، ولكن ربما كنت سأنتقل إلى الأصول بمجرد أن يعمل شيء ما.
كل هذا قيل، تفسيري (الضعيف جداً) للتوثيق الذي يجعل الموقع ميتاً فعلياً، يبدو أنه قد يكون مشكلة للمبتدئين. لست متأكداً لماذا يبلغت وحدة التحكم عن I18n كمشكلة، ولكنه يبدو كتعديل بسيط في الكود شيء مثل؛
if (I18n && I18n.xxx)
بدلاً من؛
if (I18n.xxx)
قد يحمي المبتدئين من تدمير مواقعهم .. هل يجب أن أبحث وأحاول تقديم طلب سحب (PR)، أم أن هذا شيء قد ينظر إليه شخص لديه خبرة أكبر؟ يسعدني أن أجرب، ولكن لا أريد إضاعة وقتي إذا لم يكن مفيداً ..؟
حسنًا، لقد أحرزت تقدمًا طفيفًا، والإعدادات المبسطة تسمح الآن بعرض الصفحة، ومع ذلك، أحصل الآن على “طلب سيئ” من الخادم. أقوم باختبار تخزين S3 من جهاز Discourse باستخدام أداة “mc” الخاصة بـ Min.io ويبدو أنها تعمل بشكل جيد ويمكنني سرد الدلاء .. ومع ذلك، في السجلات، أحصل على؛
فشل في سرد النسخ الاحتياطي من S3: Aws::S3::Errors::BadRequest
و
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:140:in `rescue in unsorted_files'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:131:in `unsorted_files'
/var/www/discourse/lib/backup_restore/backup_store.rb:23:in `files'
لقد حرصت على نسخ ولصق الإعدادات من app.yml في تكوين “mc” للتأكد من عدم وجود أخطاء إملائية .. لذا، أنا في حيرة من أمري للحظة. قد أحاول مرة أخرى غدًا …
\u003e إنه يحاول سرد محتويات الحاوية.
\u003e لست بحاجة إلى مهمة rake التي تتعلق بالأصول.
حسنًا، شكرًا على مساعدتك، لقد لاحظت ذلك، ومع ذلك فهو لا يساعد حقًا. لقد جربت Min.io وجربت SeaweedFS، وكلاهما قمت بتكوينهما محليًا إلى النقطة التي تمكنت فيها من كتابة ملف إلى S3 باستخدام أداة سطر الأوامر من جهاز Discourse، ولا يبدو أن أيًا من الخيارين يريد العمل من داخل Discourse. بعد مراجعة الوقت المستغرق، أعتقد أنه إذا كانت النسخ الاحتياطية متصلة بالإنترنت و S3، يمكنني أن أرى كيف أن خيار النسخ الاحتياطي مباشرة إلى S3 رائع، ومع ذلك إذا كانت نسخك الاحتياطية “خارج السحابة”، وتحتاج إلى محاكاة تخزين S3 فقط لاستخدام الخيار، بالنسبة لي أصبح الأمر مكلفًا للغاية من حيث الوقت.
بالمناسبة، لاحظت أن شخصًا ما يقول إن CloudFlare S3 يعمل الآن، وهو ما قد يكون جيدًا لبعض الأشخاص. يبدو أن CloudFlare قد أضاف 10 جيجابايت من S3 إلى طبقتها المجانية، ومع ذلك بالنسبة لي عادةً ما تكون نسخي الاحتياطية خارج السحابة على خادم نسخ احتياطي لـ Borg.
ما قمت به بدلاً من ذلك هو إضافة جهاز المضيف لـ Discourse إلى شبكة VPN الخاصة بالنسخ الاحتياطي، وتثبيت borg و borgmatic التي تغطي /var/discourse/shared/standalone/backups و /var/discourse/shared/standalone/log على المضيف، ثم إضافة هذا إلى cron بعد 30 دقيقة من جدولة النسخ الاحتياطي المحلي.
س: هل يمكنك توضيح ما إذا كانت النسخ الاحتياطية المحلية تغطي كل شيء، أم أنني بحاجة إلى المزيد لتغطية التحميلات؟ (هل مهام rake الإضافية مخصصة لـ S3 فقط؟)
شخصي المتشكك لا يثق بمقدمي الخدمات السحابية مع كل من الأنظمة الحية والنسخ الاحتياطية. في كل مرة أعتقد فيها أنني ربما أقلق كثيرًا، أذكر نفسي بالوقت الذي ذهبت فيه إلى موقع عميل استجابة لـ خادمي لا يعمل لأجد أنه قد ضربته صاعقة - داخل غرفة الخادم.
نعم فعلت. أنا سعيد جدًا بالاعتراف بأنني ربما ارتكبت أخطاء ولم أقرأ / أحتفظ بكل شيء، لكن البحث عن المستندات المناسبة لم يكن أحدها ..
./launcher destroy app;./launcher start app
حسنًا، هذا مفيد للمستقبل، كنت أحاول إيقاف / بدء التشغيل، ولست على دراية بكيفية قيام Docker ببناء متغيرات البيئة عند التشغيل.
إذا كنت ستضع الأصول هناك وليس فقط النسخ الاحتياطي، فلا تفوت مهمة rake التي تدفع الأصول إلى هناك.
بالتأكيد، كانت هذه هي النقطة التي كنت مرتبكًا بشأنها بعض الشيء، سأضيفها. كنت أتساءل فقط لماذا لن تكون هذه جزءًا من النسخ الاحتياطي الافتراضي، وأعلم أن هناك مشكلة في المساحة، ولكن توقعي سيكون أن الناس بشكل عام يريدون نسخة احتياطية من كل محتواهم؟ (وبما أن معظم الناس لا يبدو أنهم يتحققون من محتوياتهم، فإن الخطأ في جانب كل شيء ربما يكون أكثر أمانًا؟)
حسنًا، لقد جربتها على نسختي التجريبية أولاً (!) .. قمت بنسخ ولصق سطرين من الوثائق .. هل هناك شيء قديم في مكان ما؟
I, [2023-09-04T18:39:51.544973 #1] INFO -- : cd /var/www/discourse/plugins & sudo -E -u discourse bundle exec rake s3:upload_assets
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/rake)
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/definition.rb:524:in `materialize': Could not find css_parser-1.16.0, oj-3.16.1, rotp-6.3.0, globalid-1.2.0, google-protobuf-3.24.2-x86_64-linux in locally installed gems (Bundler::GemNotFound)
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/definition.rb:197:in `specs'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/definition.rb:254:in `specs_for'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/runtime.rb:18:in `setup'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler.rb:162:in `setup'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/setup.rb:23:in `block in <top (required)>'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/ui/shell.rb:159:in `with_level'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/ui/shell.rb:111:in `silence'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/setup.rb:23:in `<top (required)>'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:56:in `require_relative'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:56:in `kernel_load'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
from /usr/local/bin/bundle:25:in `load'
from /usr/local/bin/bundle:25:in `<main>'
I, [2023-09-04T18:39:52.163459 #1] INFO -- :
I, [2023-09-04T18:39:52.164462 #1] INFO -- : Terminating async processes
إذا كانت ملفات التحميل الخاصة بك موجودة على S3، فأنت تعتمد على مدير S3 لجعله يعمل، لذلك لا تحتاج إلى نسخ احتياطية. يوجد إعداد مخفي لتنزيل الأصول من S3 وتضمينها في النسخ الاحتياطي، ولكنك بالتأكيد لا تريد القيام بذلك.
ممم، لقد لاحظت سابقًا أن شخصًا آخر تحدث عن وضع الأشياء في القسم الخاطئ، ثم ذهبت و فعلت الشيء نفسه على أي حال، يا إلهي (!)\n\nلذلك بعد القراءة بعناية أكبر، ما زلت أواجه مشكلة، لدي:\nyaml\nhooks:\n after_code:\n - exec:\n cd: $home/plugins\n cmd:\n - git clone https://github.com/discourse/docker_manager.git\n - git clone https://github.com/discourse/discourse-whos-online\n - git clone https://github.com/discourse/discourse-solved.git\n - git clone https://github.com/discourse/discourse-reactions.git\n - git clone https://github.com/discourse/discourse-subscriptions.git\n - git clone https://github.com/discourse/discourse-topic-voting.git\n - git clone https://github.com/discourse/discourse-calendar.git\n - git clone https://github.com/sylque/discourse-home-page.git\n - git clone https://github.com/sylque/discpage.git\n - git clone https://github.com/discourse/discourse-onboarding-banner.git\n\n after_assets_precompile:\n - exec:\n cd: $home\n cmd:\n - sudo -E -u discourse bundle exec rake s3:upload_assets\n - sudo -E -u discourse bundle exec rake s3:expire_missing_assets\n\nيقول الصق في app.yml في قسم hooks .. هل يبدو هذا صحيحًا أم أنني ما زلت في المكان الخطأ؟ الخطأ الذي أحصل عليه الآن هو:\n\nFAILED\n--------------------\nPups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #<Process::Status: pid 1845 exit 1>\nLocation of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'\nexec failed with the params {\"cd\"=>\"$home\", \"cmd\"=>[\"sudo -E -u discourse bundle exec rake s3:upload_assets\", \"sudo -E -u discourse bundle exec rake s3:expire_missing_assets\"]}\nbootstrap failed with exit code 1\n\nأنا أبحث في السجلات لمزيد من التفاصيل ولكنني لا أرى شيئًا. للأسف لم أقم بالبرمجة في Ruby لذا لا أعرف حقًا ما الذي أنظر إليه / أبحث عنه، أي أفكار؟\n\nملاحظة؛ نصح بتشغيل ./discourse-doctor، والذي قمت به، ولكنه لم يخبرني بشيء مختلف ..