توقف طويل في التثبيت القياسي للأمر : cd /var/www/discourse && su discourse -c 'bundle install --retry 3 --jobs 4'

أهلاً يا رفاق! أنا مستخدم جديد لـ discourse من الصين، وقد واجهت مشكلة غريبة في التثبيت القياسي.
بعد تنفيذ الأمر ./discourse-setup، توقف جهازي الطرفي لفترة طويلة (أكثر من 20 دقيقة).

I, [2023-06-04T07:47:29.161469 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle config --local deployment true'
I, [2023-06-04T07:47:29.544117 #1]  INFO -- : 
I, [2023-06-04T07:47:29.544260 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle config --local without "development test"'
I, [2023-06-04T07:47:29.725190 #1]  INFO -- : You are replacing the current local value of without, which is currently "test:development"
I, [2023-06-04T07:47:29.725290 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle install --retry 3 --jobs 4'

لقد بحثت عن أسئلة مشابهة في منتدياتنا، مثل https://meta.discourse.org/t/local-installation-of-discourse-on-centos-7/150548، والتي أشارت إلى أنها قد تكون مشكلة شبكة. ربما فقط لأن خادمي في الصين، وأواجه مشكلة في الشبكة، لكنني اختبرت عبر wget https://rubygems.org/، وقد نجح الأمر.

لا أعرف ماذا أفعل، شكراً لردكم.

حسنًا، إنها بالفعل مشكلة شبكة، لأن خادمي موجود في الصين
لقد وجدت الحلول، سأنسخها هنا باللغة الصينية


التثبيت في بيئة محلية في الصين Discoursehttps://my.cn/2021/02/17/Discourcs-setup-on-cvm-ecs/

تتم ترقية وصيانة إصدارات Discourse بناءً على GitHub، و Discourse نفسه مكتوب بلغة Ruby.

هناك مشكلة في بطء الوصول إلى المواقع الخارجية عند استخدام خوادم مثل CVM و Lightweight Server من Tencent Cloud و ECS من Alibaba Cloud، ويرجع ذلك أساسًا إلى عمليات تحديد المعدل لدعم مستودعات git المحلية.

عند استنساخ Discourse المستضاف على GitHub، يمكنك تسريع الوصول إلى GitHub عن طريق استبدال رابط الاستنساخ github.com بـ github.com.cnpmjs.org، على سبيل المثال:

استبدل git clone https://github.com/discourse/discourse_docker.git بـ git clone https://github.com.cnpmjs.org/discourse/discourse_docker.git

بالإضافة إلى ذلك، عند تشغيل ./discourse-setup، سيقوم برنامج التثبيت أيضًا بتثبيت بعض المشاريع الإضافية في Docker،

على سبيل المثال: gem update، ويتطلب أيضًا إضافة مرآة Ruby.

يمكنك تعديل ملف التكوين لإضافة عنوان مرآة Ruby، والملفات الرئيسية المعنية هي docker.git

بالإضافة إلى ذلك، عند تشغيل ./discourse-setup، سيقوم برنامج التثبيت أيضًا بتثبيت بعض المشاريع الإضافية في Docker،

على سبيل المثال: gem update، ويتطلب أيضًا إضافة مرآة Ruby.

يمكنك تعديل ملف التكوين لإضافة عنوان مرآة Ruby، والملفات الرئيسية المعنية هي

discourse/templates/web.template.yml
discourse/containers/app.yml

ابحث عن المكان الذي يتم فيه استدعاء gem update في الملفات المذكورة أعلاه وأضف العبارة التالية لتهيئة مرآة الموقع قبلها:

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem update bundler

بالنسبة لـ bundle، يمكنك استخدام bundle config mirror.https://rubygems.org https://gems.ruby-china.com لإضافة موقع مرآة.

التعديلات الرئيسية هي كما يلي:

diff --git a/templates/web.template.yml b/templates/web.template.yml
index 28fb22d..bb0010c 100644
--- a/templates/web.template.yml
+++ b/templates/web.template.yml
@@ -86,6 +86,9 @@ run:
       cd: $home
       hook: code
       cmd:
+        - git remote -v
+        - git remote set-url origin https://github.com.cnpmjs.org/discourse/discourse.git
+        - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
         - git reset --hard
         - git clean -f
         - git remote set-branches --add origin master
@@ -145,6 +148,7 @@ run:
       hook: web
       cmd:
         # ensure we are on latest bundler
+        - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
         - gem update bundler
         - find $home ! -user discourse -exec chown discourse {} \\+

@@ -152,6 +156,9 @@ run:
       cd: $home
       hook: bundle_exec
       cmd:
+        - su discourse -c 'gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/'
+        - su discourse -c 'gem update bundler'
+        - su discourse -c 'bundle config mirror.https://rubygems.org https://gems.ruby-china.com'
         - su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test developme

   - exec:
...skipping...

حول إعداد البريد الإلكتروني

عادة ما يحتاج المنتدى إلى خادم بريد إلكتروني لإرسال رموز التحقق المختلفة ورسائل تسجيل الدخول أو استعادة كلمة المرور أو وظائف التنبيهات.

يمكن لبريد الشركات المجاني من Netease (ym.163.com) تلبية هذا الاحتياج، ويمكن أيضًا استخدام بريد QQ مع تمكين خدمة SMTP، وبالطبع يمكنك أيضًا شراء بريد مدفوع.

يتم تمكين خدمة SMTP افتراضيًا لبريد الشركات المجاني من Netease، وفيما يلي مثال لإعداد app.yml: يبدو أن Discourse لا يوفر طريقة اتصال تدعم SSL، لذا سنستخدم خدمة SMTP مباشرة هنا. لاحظ أنه يجب تعطيل وظيفة start_tls بشكل صريح.

  DISCOURSE_SMTP_ADDRESS: smtp.ym.163.com
  DISCOURSE_SMTP_PORT: 25
  DISCOURSE_SMTP_USER_NAME: mail@getblog.cn
  DISCOURSE_SMTP_PASSWORD: "password"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: getblog.cn    # (required by some providers)

بالإضافة إلى ذلك، يجب ألا يكون عنوان البريد الإلكتروني لمسؤول الموقع هو نفسه DISCOURSE_SMTP_USER_NAM، وإلا فقد لا تتلقى رسائل التسجيل.

تثبيت نظام منتديات/BBS Discourse باستخدام Docker (Nginx)

إذا كنت في البر الرئيسي للصين، فستحتاج إلى تسريع المرآة. ابحث عن كتلة templates في ملف التكوين وأضف مرآة محلية templates/web.china.template.yml:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/sshd.template.yml"
  - "templates/web.template.yml"
  - "templates/web.china.template.yml"

من الواضح أن هذا يرجع إلى bundle install. هذه العملية ستستغرق وقتًا طويلاً حتى لو كان الخادم في الخارج، ناهيك عن أنك ستواجه بعض المقاومة المعروفة.
كن حذرًا بشأن نفس المشكلة عند تشغيل yarn install لاحقًا.

من الأفضل عدم وضع الخادم في الصين، لأن استنساخ discourse من github قد يؤدي إلى حدوث خطأ…


For developers in China: Apparently this problem is due to bundle install . Even if the server is deployed in a foreign country, this operation will take a long time. Not to mention you’ll run into some well-known resistance.
Be careful about the same problem when yarn install later.

It’s better not to put the server in China, because even cloning discourse from github may give you an error…

شكرا على الرد!

الخادم لديه وكيل، ويمكنه الوصول إلى GitHub بشكل طبيعي، ويمكن لـ gem/bundle العثور على دروس لتغيير المصادر المحلية، ويمكن الآن نشره بشكل طبيعي (ولكنه عالق مرة أخرى بسبب عدم كفاية الذاكرة :face_holding_back_tears:)

أود أيضًا الحصول على خادم خارجي، لكنه مكلف للغاية :face_holding_back_tears:

https://www.bugcatt.com/archives/2529

بعض الخوادم في الصين أغلى من الخوادم الخارجية (نعم، أنت يا علي كلاود)، هذا يعتمد على الشركة المصنعة.
انتظر، هل اخترت حقًا علي كلاود… يا إلهي

استخدمت جهاز طالب (2 نواة 2 جيجا) :sweat_smile:
لا يمكنني تحمل تكلفة الخادم ذي المواصفات الأعلى

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.