مرحباً بالجميع!
لقد كنت أعمل على إعداد نسخة متعددة المواقع من Discourse، وبينما أحرزت بعض التقدم، أواجه بعض العقبات وأحتاج حقًا إلى توجيه من شخص ما. لقد اطلعت على دليل تكوين متعدد المواقع باستخدام Docker، ولكن لا تزال لدي بعض الأسئلة:
- أين يمكنني العثور على ملف “multisite.yml” المذكور؟ لا أجده في مجلد
discourse/templatesالخاص بي. - هل أحتاج إلى إعداد خطافات لـ
after_postgresحتى لو كنت أستخدم فقط وحدة التخزين القياسية وليس قاعدة بيانات مخصصة؟ - هل يوجد قالب
app.ymlبسيط لإعداد أساسي متعدد المواقع؟ لا أتطلع إلى إضافة إضافات أو أي شيء معقد - فقط شيء مباشر للبدء.
للسياق، أقوم حاليًا بتشغيل نسخة Discourse قياسية على جهاز افتراضي GCP، ويمكن الوصول إليها عبر mamacares. ملف app.yml الخاص بي هو تقريبًا الافتراضي - لا توجد إضافات أو قاعدة بيانات مخصصة. إذا كان لدى أي شخص خبرة في هذا أو يعرف دليل بدء سريع لإعداد تكوين متعدد المواقع، فسأكون ممتنًا جدًا للمساعدة!
هذا هو ملف app.yml الحالي الخاص بي كمرجع (لقد قمت بإزالة البيانات الحساسة)
## هذا هو قالب حاوية Discourse المستقل والمتكامل
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا جدًا عند التحرير!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
## قم بإلغاء التعليق على السطر التالي لتمكين مستمع IPv6
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق على هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.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: "256MB"
## يمكن أن يحسن أداء الفرز، ولكنه يضيف استخدام الذاكرة لكل اتصال
#db_work_mem: "40MB"
## أي مراجعة Git يجب أن تستخدمها هذه الحاوية؟ (الافتراضي: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## كم عدد طلبات الويب المتزامنة التي يمكن دعمها؟ يعتمد على الذاكرة وأنويتها.
## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على وحدات المعالجة المكتشفة، أو يمكنك تجاوزها
UNICORN_WORKERS: 4
## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
## مطلوب. لن تعمل Discourse برقم IP فارغ.
DISCOURSE_HOSTNAME: 'www.mamacares.com'
## قم بإلغاء التعليق إذا كنت تريد بدء تشغيل الحاوية بنفس
## اسم المضيف (-h option) كما هو محدد أعلاه (الافتراضي "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: قائمة بالبريد الإلكتروني المفصولة بفواصل والتي ستصبح مسؤولاً ومطورًا
## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: '---------'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
# عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
# تحذير الحرف '#' في كلمة مرور SMTP يمكن أن يسبب مشاكل!
DISCOURSE_SMTP_ADDRESS: ----------
#DISCOURSE_SMTP_PORT: --------
DISCOURSE_SMTP_USER_NAME: ----------
DISCOURSE_SMTP_PASSWORD: ------------
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي صحيح)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (مطلوب من قبل بعض المزودين)
#DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com # (العنوان لإرسال الإشعارات منه)
## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## عنوان CDN HTTP أو HTTPS لهذه النسخة من Discourse (تم تكوينه للسحب)
## انظر https://meta.discourse.org/t/14857 للحصول على التفاصيل
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## معرف حساب Maxmind geolocation IP ومفتاح الترخيص لعمليات البحث عن عناوين IP
## انظر https://meta.discourse.org/t/-/173941 للحصول على التفاصيل
#DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## الحاوية 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:
#- www.mamacares.com
- www.vet.community
after_bundle_exec:
- exec: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate
## أي أوامر مخصصة لتشغيلها بعد البناء
run:
- exec: echo "Beginning of custom commands"
## إذا كنت ترغب في تعيين عنوان البريد الإلكتروني "من" لتسجيلك الأول، قم بإلغاء التعليق وتغييره:
## بعد الحصول على البريد الإلكتروني للتسجيل الأول، أعد التعليق على السطر. يحتاج إلى التشغيل مرة واحدة فقط.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
شكرًا جزيلاً، وأتطلع إلى أي نصيحة يمكنك مشاركتها!