خطأ في الإعداد مع Redis منفصل

يوجد خادم قاعدة بيانات نصف كسول يعمل بنظام PostgreSQL داخل الشبكة المحلية وأردت استخدامه لـ Discourse أيضًا. السبب في ذلك هو أن خادم الويب يتعرض لضغط أكبر بكثير من خادم قاعدة البيانات المذكور سابقًا، والذي لا يزال لديه الكثير من الموارد/الإمكانات غير المستخدمة. كان إعادة توجيه PostgreSQL الخاص بـ Discourse سهلاً للغاية، باتباع بعض المواضيع في هذا المنتدى (مثال). كلما حاولت فعل الشيء نفسه لـ Redis على الرغم من ذلك:

  • التعليق على - "templates/redis.template.yml"
  • تعيين DISCOURSE_REDIS_HOST بدلاً من ذلك

أحصل دائمًا على:

Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 582 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1

كلما حاولت إعادة البناء باستخدام launcher rebuild app

هل هذه مشكلة معروفة؟ هل قام أي شخص بتشغيل Discourse بنجاح مع Redis غير حاوي؟

هذا كل ما تحتاجه بالفعل. هل يمكنك لصق خطأ إعادة البناء الكامل؟ ربما تحتاج إلى كلمة مرور، أو شهادة TLS إلزامية، أو نطاق غير قابل للوصول. يجب أن يكون أي من هذه الأمور واضحًا في سجل إعادة البناء.

إعجاب واحد (1)

هذا كل شيء تقريبًا. هناك بعض التحذيرات في أعلى السجل:

warning " @mixer/parallel-prettier@2.0.3" has unmet peer dependency "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" has unmet peer dependency "lodash@>=4".
warning " > babel-plugin-debug-macros@0.4.0-pre1" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-3fff36d0-9fd8-4d1a-ac4c-d10694a59627 > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-3fff36d0-9fd8-4d1a-ac4c-d10694a59627 > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-3fff36d0-9fd8-4d1a-ac4c-d10694a59627 > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@uppy/core@^3.1.2".

لكنها موجودة حتى عند إعادة البناء باستخدام Redis المعبأ في حاويات.

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return <Process::Status: pid 581 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2533af220cc44d8c77bc12c17ed7635dee49ba7f280[...]

تحديث:

وجدت سطورًا معلمة كـ INFO بدلاً من خطأ وقد يكون هذا هو السبب على ما أعتقد:

I, [2023-04-06T18:44:02.460059 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-04-06T18:44:04.581741 #1]  INFO -- : docker_manager is already at latest compatible version

I, [2023-04-06T18:44:04.581929 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
Discourse requires Redis 6.2.0 or up
I, [2023-04-06T18:44:05.937604 #1]  INFO -- :

و Ubuntu 22.04.2 LTS الحديث جدًا يوفر:

Package: redis-server
Architecture: amd64
Version: 5:6.0.16-1ubuntu1

آه.. لا توجد فرصة لاستخدام هذا الإصدار، صحيح؟

أعتقد أن Discourse يستخدم بعض أوامر Redis التي تم تقديمها فقط مع الإصدار 6.2.
يمكنك أيضًا تثبيته باستخدام مستودع APT الرسمي لـ Redis:
https://redis.io/docs/getting-started/installation/install-redis-on-linux/

3 إعجابات

نعم، هذا بالضبط ما أفعله، شكرًا لك. كنت أتمنى فقط أن يتم تمييز هذه الرسالة على أنها خطأ (ERROR) بدلاً من معلومات (INFO) (من بين العديد من المعلومات الأخرى)، وأن تتوقف على الفور. لقد أضعت الكثير من الوقت في تصحيح جميع أنواع الأشياء ولم ألاحظ هذا السطر

لا يستخدم Redis الكثير من الموارد ولا يمكنك مشاركته مع خوادم متعددة. سأستخدم فقط خادم Redis الخاص بـ Discourse الذي كان يعمل بالفعل.