إعدادات الموقع المتعدد

مرحباً يا أصدقاء، لقد حاولت تشغيل Multisite لعدة أيام الآن، لكن دون جدوى.

كونك تعمل لحسابك الخاص أمر صعب جداً في الوقت الحالي، لذا أحاول توحيد كل شيء على جهاز خادم واحد (VM).

بدأت بموقع حاوية واحد يعمل منذ فترة.

ثم نقلته خلف nginx لأتمكن من استضافة بعض مواقع WordPress على نفس المضيف. تم التعامل مع SSL هنا.

منتدى Discourse القديم يعمل بشكل جيد، لكنني أريد الآن إضافة منتدى جديد باستخدام Multisite.

لقد اتبعت هذه التعليمات: Multisite configuration with Docker

وحدّثت خطاف before_bundle_exec: باسم المضيف الجديد للمنتدى.

أعتقد أن أسئلتي هي:

  1. هل هو فقط اسم المضيف الثاني الذي يُوضع في خطاف before_bundle_exec:؟
  2. هل يُوضع اسم المضيف الأول فقط في متغير env: DISCOURSE_HOSTNAME:؟
  3. هل إعدادات SMTP في قسم env: تنطبق على جميع المواقع؟

إليك ما أملكه حالياً في ملف app.yml. أي مساعدة ستكون موضع تقدير كبير.

## هذا هو قالب حاوية Docker الخاص بـ Discourse الشامل والمستقل
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن *حذراً جداً* عند التعديل!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البادئة أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف عند الحاجة

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق عن هاتين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد لـ Discourse مشاركة منفذ مع خادم ويب آخر مثل Apache أو nginx،
## راجع https://meta.discourse.org/t/17247 للحصول على التفاصيل
#expose:
#  - "80:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## قم بتعيين db_shared_buffers إلى الحد الأقصى لـ 25% من إجمالي الذاكرة.
  ## سيتم تعيينه تلقائياً بواسطة bootstrap بناءً على الذاكرة المكتشفة، أو يمكنك التعديل
  db_shared_buffers: "1024MB"

  ## يمكن أن يحسن أداء الفرز، لكنه يضيف استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## أي إصدار Git يجب أن تستخدمه هذه الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة وأنوية المعالج.
  ## سيتم تعيينه تلقائياً بواسطة bootstrap بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك التعديل
  UNICORN_WORKERS: 4

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن يعمل Discourse مع عنوان IP مجرد.
  DISCOURSE_HOSTNAME: forum.braidholmplaygroup.co.uk 

  ## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس اسم المضيف (-h option)
  ## المذكور أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور
  ## عند التسجيل الأولي، مثال 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'foo@braidholmplaygroup.co.uk'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  ## عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
  ## تحذير: قد يتسبب الحرف '#' في كلمة مرور SMTP في مشاكل!
  DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: apikey
  DISCOURSE_SMTP_PASSWORD:bar
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)

  ## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  LETSENCRYPT_ACCOUNT_EMAIL: foo@braidholmplaygroup.co.uk

  ## عنوان CDN لهذه النسخة من Discourse (مُهيأ للسحب)
  ## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## حاوية Docker لا تحتوي على حالة؛ يتم تخزين جميع البيانات في /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## تذهب الإضافات هنا
## راجع https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
  after_postgres:
     - exec: sudo -u postgres createdb b_discourse || exit 0
     - exec:
          stdin: |
            grant all privileges on database b_discourse to discourse;
          cmd: sudo -u postgres psql b_discourse
          raise_on_fail: false

     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "alter schema public owner to discourse;"'
     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists hstore;"'
     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists pg_trgm;"'

  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
  before_bundle_exec:
    - file:
        path: $home/config/multisite.yml
        contents: |
         secondsite:
           adapter: postgresql
           database: b_discourse
           pool: 25
           timeout: 5000
           db_id: 2
           host_names:
             #- forum.braidholmplaygroup.co.uk
             - forum.tssss.org

  after_bundle_exec:
    - exec: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate

## أي أوامر مخصصة للتشغيل بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'From' لتسجيلك الأول، قم بإلغاء التعليق والتغيير:
  ## بعد الحصول على أول بريد إلكتروني للتسجيل، أعد التعليق على السطر. يجب تشغيله مرة واحدة فقط.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

نعم.

نعم.

نعم.

يبدو ذلك جيدًا من جهتي. هل قمت بإعادة البناء ورأيت ما إذا كان يعمل؟ ستحتاج بالطبع إلى إعداد وكيل nginx الخارجي للموقع الثاني تمامًا كما فعلت مع الموقع الأول.