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

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


التثبيت في بيئة محلية في الصين 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"