إعداد Discourse على Azure

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

1) إنشاء مجموعة موارد

قبل إنشاء الجهاز الافتراضي (VM)، دعنا ننشئ مجموعة موارد. هنا ستُخزن كل شيء متعلق بموقع Discourse الخاص بك، مثل أقراص تخزين الجهاز الافتراضي، والشبكة، ومجموعات الأمان، وتخزين الكائنات (blob storage)، وغيرها. لإنشاء مجموعة موارد، انقر على علامة الزائد الخضراء واختر “مجموعة موارد”، ثم املأ حقل “اسم مجموعة الموارد”، واختر “الاشتراك” الخاص بك، و"موقع مجموعة الموارد"، ثم اضغط على “إنشاء”.

2) إنشاء جهاز افتراضي Linux

سنقوم بإنشاء جهاز افتراضي Ubuntu 16.04 LTS لهذا الدليل. للقيام بذلك، انقر مرة أخرى على علامة الزائد الخضراء ثم ابحث عن “Ubuntu Server 16.04 LTS”، وسيظهر كأحد الأجهزة الافتراضية المتاحة.

اختره، ثم تأكد من أن نموذج النشر مضبوط على “مدير الموارد” (Resource Manager)، ثم انقر على “إنشاء”.

3) إعداد الإعدادات الأساسية

الآن يجب أن تكون في تبويب “الأساسيات” ضمن “إنشاء جهاز افتراضي”. املأ جميع الحقول المطلوبة لإعداد الجهاز الافتراضي. اختر مجموعة موارد “discourse” التي أنشأناها سابقًا، امنح جهازك اسمًا مثل “discourse”، واختر المنطقة التي ترغب في استخدامها.

لا تزال في نفس تبويب “الأساسيات”، ستحتاج إلى اختيار حجم الجهاز الافتراضي. الافتراضي هو “Standard D2s v3” الذي يحتوي على 8 جيجابايت من الذاكرة ويتكلف 71.42 دولارًا شهريًا، لذا تأكد من اختيار “تغيير الحجم” واختيار حجم جهاز افتراضي مناسب لاحتياجاتك.

أقل حد مطلوب هو اختيار خيار “B1ms” مع 2 جيجابايت من ذاكرة الوصول العشوائي (RAM). خيار “B1s” على الرغم من أنه يُعلن عنه بوجود 1 جيجابايت، إلا أنك تحصل فعليًا على حوالي 800 ميجابايت فقط على مستوى نظام التشغيل، ولا يتبقى ما يكفي لتشغيل Discourse بشكل جيد. سيكلف خيار “B1ms” 17.11 دولارًا شهريًا.

الآن املأ اسم مستخدم Linux، وقم برفع مفتاح SSH العام. بديلًا عن ذلك، يمكنك إعداد تسجيل الدخول باستخدام كلمة المرور، لكن يُفضل استخدام مفتاح SSH.

الآن نحتاج إلى التأكد من توفر وصول الويب و SSH إلى الجهاز عن طريق اختيار زر الاختيار “السماح بالمنافذ المحددة” واختيار HTTP و HTTPS و SSH من قائمة “تحديد المنافذ الواردة”. بعد اكتمال الإعداد، من الجيد تقييد وصول SSH إلى عنوان IP الخاص بك فقط.

اختر “مراجعة + إنشاء”. تحقق من أن كل شيء على ما يرام في صفحة الملخص ثم اضغط على “إنشاء”. سيستغرق إنشاء الجهاز الافتراضي عدة دقائق.

4) الاتصال بالجهاز الافتراضي عبر SSH

سنحتاج إلى وصول سطر الأوامر لإعداد مساحة التبديل (swap) وتثبيت Discourse. بمجرد إنشاء الجهاز الافتراضي، يجب أن تتمكن من تحديده من بوابة Azure، وستظهر عنوان IP العام على شاشة “نظرة عامة”. افتح طرفيتك (terminal) واتصل بالجهاز الافتراضي عبر SSH باستخدام اسم المستخدم الذي حددناه في الخطوة 3 من هذا الدليل.

إذا لم تكن متأكدًا كيفية الاتصال عبر SSH، يمكنك استخدام “وحدة التحكم التسلسلية” (Serial console) داخل بوابة Azure عن طريق اختيار الجهاز الافتراضي، ثم في أسفل التنقل على اليسار، اختر “وحدة التحكم التسلسلية”.

ستفتح نافذة طرفية حيث يمكنك إدخال اسم المستخدم وكلمة المرور اللذين حددتهما قبل إنشاء الجهاز الافتراضي. إذا لم تكن متأكدًا من كلمة المرور، يمكنك استخدام خيار “إعادة تعيين كلمة المرور”.

يجب أن تكون الآن في طرفية حيث يمكنك كتابة الأوامر:

5) إعداد مساحة التبديل (Swap)

كل جهاز افتراضي Azure يأتي مع قرص مؤقت منفصل عن قرص نظام التشغيل، وعادة ما يكون موصولًا بـ /dev/sdb1. يجب التأكد من إعداد مساحة التبديل على هذا القرص المؤقت وليس على قرص نظام التشغيل، لأن:

هذا القرص التخزيني المؤقت موجود على الجهاز المادي الذي يستضيف جهازك الافتراضي، وبالتالي يمكن أن يكون له معدلات إدخال/إخراج أعلى (IOPS) وزمن استجابة أقل مقارنة بالتخزين الدائم مثل قرص البيانات. - فهم القرص المؤقت على أجهزة Azure الافتراضية

قم بتعديل ملف /etc/waagent.conf وحدّث السطور التالية:

ResourceDisk.Format=y
ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=2048

ملاحظة: إذا كان لديك بالفعل مساحة تبديل مُعدة على قرص نظام التشغيل (ربما لأن ./discourse-setup قام بإعدادها لك)، يمكنك إيقافها عن طريق وضع علامة تعليق على سطر /swapfile في ملف /etc/fstab.

إذا لم تكن متأكدًا كيفية تعديل ملف /etc/waagent.conf باستخدام محرر سطر أوامر مثل vim، يمكنك ببساطة نسخ ولصق الأمر التالي في طرفيتك والضغط على Enter:

sudo sed -i '/ResourceDisk.Format=n/c\\ResourceDisk.Format=y' /etc/waagent.conf && sudo sed -i '/ResourceDisk.EnableSwap=n/c\\ResourceDisk.EnableSwap=y' /etc/waagent.conf && sudo sed -i '/ResourceDisk.SwapSizeMB=0/c\\ResourceDisk.SwapSizeMB=2048' /etc/waagent.conf

قد يطلب منك إدخال كلمة المرور إذا كانت هذه هي المرة الأولى التي تشغل فيها أمر sudo.

ثم أعد تشغيل الجهاز الافتراضي باستخدام sudo shutdown -r now.

للتحقق من عمل مساحة التبديل، سجل الدخول مرة أخرى إلى جهازك الافتراضي واكتب swapon --show، ويجب أن ترى شيئًا مثل:

root@azure:~# swapon --show
NAME          TYPE SIZE USED PRIO
/mnt/swapfile file   2G 0B   -2

لاحظ أن ملف التبديل يقع داخل /mnt، وهذا جيد لأن هذا هو القرص المؤقت لدينا.

يمكنك أيضًا كتابة free -h ورؤية شيء مثل:

root@azure:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        174M        1.5G        3.0M        172M        1.5G
Swap:          2.0G          0B        2.0G

يجب أن يحتوي عمود “total” على قيمة لمساحة التبديل، مما يعني أنها قد تم إعدادها.

6) تثبيت Discourse

الآن بعد إنشاء جهاز Linux الافتراضي على Azure وإعداد قسم التبديل، حان الوقت لاتباع دليل التثبيت السحابي الرسمي.

7) تثبيت إضافة تخزين الكائنات (Blob Storage) الخاصة بـ Azure (اختياري)

الآن بعد تثبيت Discourse، يمكنك اتباع تعليمات التثبيت في موضوع إضافة تخزين الكائنات الخاصة بـ Azure. سيسبب تثبيت وتفعيل هذه الإضافة في تخزين الصور التي يرفعها المستخدمون في تخزين الكائنات بدلاً من جهاز Linux الافتراضي، مما يساعد على تحسين الأداء بالإضافة إلى منع امتلاء قرص نظام التشغيل.

33 إعجابًا

The meta discourse thread Discourse installation on Azure not reachable was also helpful for me in conjunction with this one.

3 إعجابات

هل من الممكن تشغيل Discourse على Azure كتثبيت بدون خادم؟ Docker-first، بدون جهاز افتراضي أساسي؟

غير مدعوم أو موثق جيدًا، ولكنه يجب أن يكون ممكنًا.

استخدم مشغل المستخدم لبناء وتمهيد صورة ودفعها إلى مستودع. ثم استخدم المشغل لمعرفة البيئة التي يبدأ بها. ثم استخدم تلك المعلومات لبدء تشغيلها. لقد فعلت ذلك لـ AWS من قبل.

حتى أن المشغل2 غير موثق، وأعتقد أنه موجود في مستودع discourse_docker ولكني لم أره يناقش خارج التعليقات في github.

إذا كنت ترغب في المساعدة ولديك ميزانية، فيرجى الاتصال بي أو النشر في Marketplace.

لدي ميزانية أردت استثمارها ولكن هذا باستخدام مواردي ومواهبي الداخلية.

هل يمكننا الحصول على بعض الدعم من فريق Discourse إذا كنا سنقوم بتشغيله كإثبات مفهوم (PoC)؟