هذا دليل how-to لإعداد المتغيرات البيئية في تثبيت Discourse مستضاف ذاتيًا.
مستوى المستخدم المطلوب: مسؤول
تلعب المتغيرات البيئية دورًا حاسمًا في تكوين مثيل Discourse الخاص بك. يمكنها تخزين بيانات حساسة مثل مفاتيح API وكلمات مرور قاعدة البيانات، مما يجعل تثبيتك أكثر أمانًا ومرونة. في Discourse، يتم تعيين المتغيرات البيئية في ملف app.yml ضمن إعداد حاوية Docker الخاصة بك.
إضافة المتغيرات البيئية إلى ملف .yml (YAML) أمر مباشر. إليك مثال أساسي:
# هذا ملف YAML يحتوي على متغيرات بيئية
env:
VARIABLE_NAME: "Variable Value"
ANOTHER_VARIABLE: "Another Value"
في سياق حاوية Docker الخاصة بـ Discourse، يتم تخزين المتغيرات البيئية في قسم env من ملف app.yml الخاص بك.
إليك مثال لملف app.yml:
## هذا هو قالب حاوية Docker الشامل والمستقل لـ Discourse
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
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"
## ما هي منافذ 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"
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## كم عدد طلبات الويب المتزامنة التي يتم دعمها؟ يعتمد على الذاكرة وأنوى وحدة المعالجة المركزية.
## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك تجاوزها
UNICORN_WORKERS: 3
## TODO: اسم النطاق الذي ستستجيب له مثيل Discourse هذا
DISCOURSE_HOSTNAME: 'discourse.example.com'
## قم بإلغاء التعليق إذا كنت تريد بدء تشغيل الحاوية بنفس
## اسم المضيف (-h option) كما هو محدد أعلاه (الافتراضي "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: قائمة بالبريد الإلكتروني مفصولة بفواصل ستصبح مسؤولاً ومطورًا
## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (إلزامي)
DISCOURSE_SMTP_PORT: 587 # (اختياري)
DISCOURSE_SMTP_USER_NAME: user@example.com # (اختياري)
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword # (اختياري)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي صحيح)
## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## عنوان CDN لمثيل Discourse هذا (تم تكوينه للسحب)
#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_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## أي أوامر مخصصة لتشغيلها بعد البناء
run:
- exec: echo "Beginning of custom commands"
## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'من' لتسجيلك الأول، قم بإلغاء التعليق والتغيير:
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## بعد الحصول على البريد الإلكتروني الأول للتسجيل، أعد التعليق على السطر. يحتاج إلى التشغيل مرة واحدة فقط.
- exec: echo "End of custom commands"
لنبدأ بإضافة المتغيرات البيئية إلى موقعك! ![]()
التعليمات التالية مكتوبة لـ تثبيت Discourse القياسي
تسجيل الدخول إلى الخادم الخاص بك
استخدم أداة مثل PuTTY أو الطرفية على أنظمة Unix-like لتسجيل الدخول عبر SSH إلى الخادم الخاص بك.
ssh username@your-server-ip
الانتقال إلى دليل Discourse
بمجرد حصولك على الوصول إلى الخادم الخاص بك، انتقل إلى الدليل الذي يحتوي على إعداد حاوية Docker الخاصة بـ Discourse، وعادة ما يكون موجودًا في /var/discourse.
cd /var/discourse
فتح ملف app.yml
ستحتاج إلى فتح ملف app.yml في محرر نصوص. لهذا المثال، سنستخدم nano.
nano containers/app.yml
إضافة المتغيرات البيئية الخاصة بك
في ملف app.yml، ستجد قسم env. هذا هو المكان الذي يمكنك فيه إضافة المتغيرات البيئية الخاصة بك.
env:
DISCOURSE_HOSTNAME: 'discourse.example.com'
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: user@example.com
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword
على سبيل المثال، إذا كنت ترغب في تعيين المتغير البيئي DISCOURSE_ENABLE_CORS إلى true لتمكين مشاركة الموارد عبر الأصول (CORS)، فستضيف السطر التالي إلى قسم env:
env:
DISCOURSE_ENABLE_CORS: "true"
...
المسافة البادئة والتنسيق مهمان هنا، لذا تأكد من الحفاظ على المسافة البادئة الصحيحة (مسافتان) للسطر الجديد.
بمجرد تعديل متغيراتك، احفظ الملف وأغلقه.
إعادة بناء حاوية Discourse
أخيرًا، ستحتاج إلى إعادة بناء حاوية Docker الخاصة بـ Discourse لتطبيق التغييرات. يمكنك القيام بذلك باستخدام الأمر التالي:
./launcher rebuild app
بدلاً من ذلك، لتحديث المتغيرات البيئية لحاوية قيد التشغيل دون إعادة البناء، يمكنك أيضًا استخدام:
./launcher destroy app
./launcher start app
بعد اكتمال عملية إعادة البناء، ستكون المتغيرات البيئية المحدثة متاحة لتطبيق Discourse الخاص بك! ![]()