مرحبًا،
أحاول إعداد سلة تخزين (bucket) في Backblaze للاستخدام في النسخ الاحتياطي فقط.
اتبعت الإرشادات من: REQ: Support S3 backup to a service like Backblaze - #4 by frold
كما راجعت المنشور المرتبط “استخدام تخزين الكائنات لرفع الملفات - نسخ S3”.
في ملف app.yml أضفت:
DISCOURSE_S3_REGION: "s3.us-west-002"
DISCOURSE_S3_INSTALL_CORS_RULE: false
DISCOURSE_S3_ENDPOINT: https://s3.us-west-002.backblazeb2.com
DISCOURSE_S3_ACCESS_KEY_ID: xxxxxxxxxxxxxxxxxxxx
DISCOURSE_S3_SECRET_ACCESS_KEY: xxxxxxxxxxxxxxxxxxxxxxx
DISCOURSE_S3_BACKUP_BUCKET: bucket/backups
DISCOURSE_BACKUP_LOCATION: s3
أعدت إنشاء سلة تخزين جديدة بضبطها على عامّة وجعلت اسمها كله بحروف صغيرة بعد قراءة: Set up file and image uploads to S3.
في Backblaze، أنشأت مفتاح تطبيق (App key) جديدًا يسمح فقط بالوصول إلى سلة Discourse؛ وهو يملك إذنًا لعرض أسماء جميع السلات.
في صفحة النسخ الاحتياطي داخل Discourse، تظهر وجه حزين/صفحة معطلة. تُظهر السجلات ما يلي:
فشل في سرد نسخ S3: فشل التحقق من التوقيع
التتبع الخلفي:
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:83:in `rescue in unsorted_files'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:72:in `unsorted_files'
/var/www/discourse/lib/backup_restore/backup_store.rb:23:in `files'
/var/www/discourse/app/controllers/admin/backups_controller.rb:22:in `block (2 levels) in index'
actionpack-6.1.3.1/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
/var/www/discourse/app/controllers/admin/backups_controller.rb:11:in `index'
actionpack-6.1.3.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.1.3.1/lib/abstract_controller/base.rb:228:in `process_action'
actionpack-6.1.3.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.1.3.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.1.3.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:383:in `block in with_resolved_locale'
i18n-1.8.10/lib/i18n.rb:314:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:383:in `with_resolved_locale'
activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport-6.1.3.1/lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack-6.1.3.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack-6.1.3.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-6.1.3.1/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport-6.1.3.1/lib/active_support/notifications.rb:203:in `block in instrument'
activesupport-6.1.3.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.1.3.1/lib/active_support/notifications.rb:203:in `instrument'
actionpack-6.1.3.1/lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack-6.1.3.1/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord-6.1.3.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-6.1.3.1/lib/abstract_controller/base.rb:165:in `process'
actionview-6.1.3.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-2.3.1/lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method'
actionpack-6.1.3.1/lib/action_controller/metal.rb:190:in `dispatch'
actionpack-6.1.3.1/lib/action_controller/metal.rb:254:in `dispatch'
actionpack-6.1.3.1/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack-6.1.3.1/lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack-6.1.3.1/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
actionpack-6.1.3.1/lib/action_dispatch/routing/mapper.rb:49:in `serve'
actionpack-6.1.3.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-6.1.3.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-6.1.3.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-6.1.3.1/lib/action_dispatch/routing/route_set.rb:842:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.3/lib/rack/head.rb:12:in `call'
actionpack-6.1.3.1/lib/action_dispatch/http/permissions_policy.rb:22:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:355:in `call'
rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-6.1.3.1/lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack-6.1.3.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster-2.9.6/lib/logster/middleware/reporter.rb:43:in `call'
railties-6.1.3.1/lib/rails/rack/logger.rb:37:in `call_app'
railties-6.1.3.1/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:23:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.3/lib/rack/method_override.rb:24:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
actionpack-6.1.3.1/lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler-2.3.1/lib/mini_profiler/profiler.rb:373:in `call'
message_bus-3.3.4/lib/message_bus/rack/middleware.rb:61:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:177:in `call'
railties-6.1.3.1/lib/rails/engine.rb:539:in `call'
railties-6.1.3.1/lib/rails/railtie.rb:207:in `public_send'
railties-6.1.3.1/lib/rails/railtie.rb:207:in `method_missing'
rack-2.2.3/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.3/lib/rack/urlmap.rb:58:in `each'
rack-2.2.3/lib/rack/urlmap.rb:58:in `call'
unicorn-6.0.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.0.0/lib/unicorn/http_server.rb:732:in `worker_loop'
unicorn-6.0.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.0.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.0.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'
أعتقد أنني أفهم كل مكونات العملية وخطواتها، لكنني لا أعرف الخطوات التالية لتصحيح هذا الخطأ.
معرف المفتاح والمفتاح نفسه يتكونان من أحرف وأرقام فقط، بدون “+” أو رموز أخرى… ومع ذلك، هل يجب وضعهما بين علامتي اقتباس؟
أي اقتراحات ترحيب بها!