لقد قمت مؤخرًا بتثبيت Discourse على خادم VPS يعمل بنظام Ubuntu Focal Fossa، وهو يعمل بشكل ممتاز، إلا أنني أعاني من بعض الغرابة في عناوين URL.
إليك السلوك الذي ألاحظه (في متصفح Safari). لقد أنشأت سجلات A باسم @ و WWW و * لدى مسجّل النطاق الخاص بي.
example.com [يعرض صفحة "مرحبًا بك في nginx"] فشل
www.example.com [يعيد التوجيه إلى https://example.com] نجاح
http://example.com [يعرض صفحة "مرحبًا بك في nginx"] فشل
http://www.example.com [يعيد التوجيه إلى https://example.com ويعمل بشكل جيد] نجاح
https://example.com [يعمل كما هو متوقع، ولا يعيد التوجيه] نجاح
https://www.example.com [يظهر خطأ برسالة المتصفح "هذه الاتصال ليس آمنًا"] فشل
أود أن يكون التثبيت الخاص بي في الجذر/القمّة، لذا أدخلت example.com أثناء الإعداد.
مرحبًا @Falco، شكرًا لك على ردك. إلى علمي لا، صورة مزود VPS تُسمى ببساطة “Focal Fossa Clean OS”، وأعتقد أن هذا يعني أنها لا تحتوي على أدوات من جهات خارجية.
هذا مجرد إعداد مباشر من الصندوق باستخدام مسار التثبيت “30 دقيقة” المنشور.
sudo su
wget -qO- https://get.docker.com/ | sh
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
./discourse-setup
بالتأكيد، شكرًا لك. هل قد يتسبب امتلاك نطاق بـ TLD غريب في أي مشاكل؟ (إنه .community).
## هذا قالب حاوية 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"
## ما هي منافذ 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: "768MB"
## يمكن أن يحسن أداء الفرز، لكنه يزيد من استخدام الذاكرة لكل اتصال
#db_work_mem: "40MB"
## أي إصدار Git يجب أن تستخدم هذه الحاوية؟ (الافتراضي: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة وأنوية المعالج.
## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك تجاوز ذلك
UNICORN_WORKERS: 8
## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
## مطلوب. لن يعمل Discourse مع عنوان IP عاري.
DISCOURSE_HOSTNAME: example.com
## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس اسم النطاق
## (-h option) كما هو محدد أعلاه (الافتراضي "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور
## عند التسجيل الأولي، مثال 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'email@gmail.com'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
## مطلوب عنوان SMTP واسم مستخدم وكلمة مرور
# تحذير: قد يتسبب الحرف '#' في كلمة مرور SMTP في حدوث مشاكل!
DISCOURSE_SMTP_ADDRESS: smtp.postmarkapp.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: username
DISCOURSE_SMTP_PASSWORD: "password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (مطلوب من بعض المزودين)
## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
LETSENCRYPT_ACCOUNT_EMAIL: email@gmail.com
## عنوان CDN http أو https لهذه النسخة من Discourse (مُعد للاستخراج)
## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## مفتاح عنوان IP للتحديد الجغرافي من Maxmind
## راجع https://meta.discourse.org/t/-/137387/23 للحصول على التفاصيل
#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_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## أي أوامر مخصصة للتشغيل بعد البناء
run:
- exec: echo "Beginning of custom commands"
## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'From' لأول تسجيل، قم بإلغاء التعليق وتغييره:
## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. يجب تشغيله مرة واحدة فقط.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
و
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
465fbf1c3fb8 local_discourse/app "/sbin/boot" 47 minutes ago Up 46 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
حسنًا، أنا بالتأكيد أحمق. جربت من هاتفي عبر شبكة 4G (للتحقق من DNS المحلي)، فعملت جميع عناوين URL تلك بشكل جيد. ثم أعدت الاتصال بشبكة WiFi، فعملت جميعها بشكل جيد أيضًا. لذا قمت بمسح ذاكرة التخزين المؤقت لمتصفح Safari على سطح المكتب، وفجأة… يعمل كل شيء هناك أيضًا.
يجب أن يكون الأمر مرتبطًا بمرحلة الاختبار الأولي للمضيف، ولم يتم تفريغ الذاكرة المؤقتة منذ ذلك الحين. شكرًا جزيلاً لمساعدتك في استكشاف المشكلة وحلها، واعتذر عن إضاعة وقتك.