رغم أنني كنت أعتزم تمامًا التخلي عن Discourse نظرًا لغياب تام للوثائق الحالية التي لا تركز بشكل مفرط على CentOS/Nginx، إلا أن فردًا كريمًا للغاية وصبورًا في DigitalOcean ردّ على موضوع أنشأته هناك، وبعد بعض المحاولات والأخطاء، ساعد في إعداد دليل بسيط وواضح للمستخدمين المحتملين لـ Discourse الذين يواجهون نفس الظروف التي واجهتها.
كمرجع سريع، تلك الظروف هي:
تثبيت Discourse على نفس الخادم مع Apache | باستخدام Ubuntu 18.04 | DigitalOcean
شكرًا لـ Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (الإجابة الأولى)
المتطلبات المسبقة
- لضمان السلامة، تأكد من عمل نسخة احتياطية من Droplet الخاص بك، حتى تتمكن في حال حدوث أي خطأ من العودة إلى نسخة عاملة
- اتصل عبر SSH بدروبلتك
- تثبيت Apache، ويمكنك اتباع الخطوات حول كيفية القيام بذلك هنا:
الخطوة 1 - تثبيت Docker
لتثبيت Docker، يرجى اتباع الخطوات هنا:
الخطوة 2 - تحميل Discourse
أولاً، أنشئ مجلدًا لتخزين ملفات Discourse فيه:
mkdir /var/discourse
بعد ذلك، استنسخ صورة Docker الرسمية لـ Discourse إلى /var/discourse.
git clone https://github.com/discourse/discourse_docker.git /var/discourse
الخطوة 3 - تكوين Discourse للاستماع على المنفذ 8080
سنستخدم قالب standalone.yml الذي يتضمن جميع الخدمات الضرورية مثل PostgreSQL و Redis وغيرها.
انسخ ملف العينة باستخدام الأمر التالي:
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
بعد ذلك، عدّل الملف باستخدام محررك المفضل. افتح /var/discourse/containers/app.yml وحدّث المنافذ في السطرين 23 و24:
## which TCP/IP ports should this container expose?
expose:
- "8080:80" # fwd host port 8080 to container port 80 (http)
- "8443:443" # fwd host port 8443 to container port 443 (http)
أيضًا، إذا لم تكن لديك شهادة SSL بعد، تأكد من التعليق على السطر 16:
#- "templates/web.ssl.template.yml"
فقط أضف رمز # في بداية السطر - "templates/web.ssl.template.yml، وإلا فلن يبدأ Discourse.
الخطوة 4 - إعداد Discourse
تغيير المجلد:
cd /var/discourse
ثم، ابدأ Discourse (وبما أن هذه هي المرة الأولى التي تبدأ فيها الخدمة، فسيتم تهيئة التطبيق مع التغييرات الجديدة الموجودة في ملف app.yml):
./discourse-setup
ملاحظة: تأكد من تقديم إعدادات خادم البريد الصالحة، وإلا فقد يفشل الإعداد.
الخطوة 5 - إعداد Apache
في /etc/apache2/sites-available/، أنشئ ملفًا جديدًا باسم forum.example.com.conf وأضف محتوى Vhost التالي:
<VirtualHost *:80>
ServerName forum.example.com
ServerAlias www.forum.example.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- فعّل Vhost باستخدام الأمر التالي:
a2ensite forum.example.com
- فعّل Mod Proxy:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- أعد تشغيل Apache:
systemctl restart apache2
وبعد ذلك، ستكون قادرًا على الوصول إلى Discourse مباشرة عبر اسم النطاق الخاص بك.
ملاحظة 1: عند تثبيت Discourse، قد يتم الكتابة فوق ملف app.yml وسيتم إلغاء التعليق على السطرين 16/17 (SSL). ستحتاج إلى تعليق هذين السطرين مرة أخرى ثم إعادة بناء التطبيق (لا تنسَ تغيير المجلد): ./launcher rebuild app
ملاحظة 2: SSL غير مفعّل لـ Discourse مع هذا الدليل. ومن غير المستغرب أنه لا يبدو أن هناك أي وثائق حول تمكين SSL من Let’s Encrypt إذا كان لديك بالفعل مفعّل في Apache. إذا صادف أحد ما حلاً لهذه المشكلة، يرجى التواصل معنا.