Markdown JS مع اثنين من البروتوكولات

الإصدار: 2.7.0.beta1
التثبيت: discourse-docker

مرحبًا بالجميع،

لا أعرف كيف أصف هذا بشكل أفضل، لكن حزمة markdown-it JS في تثبيت discourse لدينا لا تعمل بشكل صحيح. بطريقة ما، يتم إضافة بروتوكول إضافي “https” إلى عنوان URL لجافا سكريبت (يتم تقديمه عبر CDN ويتم حفظه في سلة S3 الخاصة بنا).

لقد أضفت لقطة شاشة.
image

جميع الموارد الأخرى تعمل بشكل صحيح.

هذه المشكلة فقط، وبسببها، لا نحصل على وظيفة المعاينة :frowning:

شكرًا لكم على وقتكم ونتطلع إلى ردكم :slight_smile:

لقطة شاشة للموارد الأخرى العاملة:

هل يمكنك مشاركة ملف app.yml الخاص بك هنا؟

نعم بالتأكيد.

## يُدار بواسطة Ansible. لا تقم بالتغييرات على الخادم
## هذا هو قالب حاوية 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: '16GB'

  ## يمكن أن يحسن أداء الفرز، ولكنه يزيد من استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## أي إصدار Git يجب أن تستخدمه هذه الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة وأنوية وحدة المعالجة المركزية.
  ## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على معالجات CPU المكتشفة، أو يمكنك تجاوز ذلك
  UNICORN_WORKERS: 8

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن يعمل Discourse مع عنوان IP مجرد.
  DISCOURSE_HOSTNAME: 'community-dev.stackit.cloud'

  ## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس اسم النطاق (-h option) المحدد أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤولين ومطورين
  ## عند التسجيل الأولي، مثال: 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'xxx'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  ## مطلوب عنوان SMTP واسم مستخدم وكلمة مرور
  ## تحذير: قد يتسبب حرف '#' في كلمة مرور SMTP في حدوث مشاكل!
  DISCOURSE_SMTP_ADDRESS: '1.2.3.4'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: 'xx@xx.de'
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

  ## إذا قمت بإضافة قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  #LETSENCRYPT_ACCOUNT_EMAIL: info@ediri.de

  ## عنوان CDN http أو https لهذه النسخة من Discourse (مُهيأ للسحب)
  ## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  #DISCOURSE_CDN_URL: community-cdn.change.me

  ## مفتاح عنوان IP الخاص بـ maxmind الجغرافي للبحث عن عناوين IP
  ## راجع https://meta.discourse.org/t/-/137387/23 للحصول على التفاصيل
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

  DISCOURSE_DB_POOL: 16
  DISCOURSE_DB_USERNAME: 'discourse'
  DISCOURSE_DB_PASSWORD: 'yyy'
  DISCOURSE_DB_HOST: 1.2.3.4
  DISCOURSE_DB_NAME: 'discourse'
  DISCOURSE_DB_PORT: 5432

  DISCOURSE_REDIS_HOST: 'y.de'
  DISCOURSE_REDIS_PASSWORD: 'xxx'
  DISCOURSE_REDIS_PORT: 49456

  DISCOURSE_MESSAGE_BUS_REDIS_ENABLED: true
  DISCOURSE_MESSAGE_BUS_REDIS_HOST: 'y.de'
  DISCOURSE_MESSAGE_BUS_REDIS_PORT: 49456
  DISCOURSE_MESSAGE_BUS_REDIS_PASSWORD: 'xxx'

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: whatever
  DISCOURSE_S3_ENDPOINT: https://assets.xxx
  DISCOURSE_S3_ACCESS_KEY_ID: 'discourse-dev'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'xxx'
  DISCOURSE_S3_CDN_URL: https://discourse-dev.assets.xxx
  DISCOURSE_S3_BUCKET: 'discourse-dev'
  DISCOURSE_S3_BACKUP_BUCKET: 'discourse-dev/backups'
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

## حاوية 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
      - git clone https://github.com/discourse/discourse-cakeday.git
      - git clone https://github.com/discourse/discourse-oauth2-basic.git
      #- git clone https://github.com/discourse/discourse-bbcode.git

  after_assets_precompile:
- exec:
    cd: $home
    cmd:
      - sudo -E -u discourse bundle exec rake s3:upload_assets

## أي أوامر مخصصة للتشغيل بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'From' للتسجيل الأول، قم بإلغاء التعليق وتغيير:
  ## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. يجب تشغيله مرة واحدة فقط.
  - exec: rails r "SiteSetting.notification_email='xxx@xxx.de'"
  - exec: echo "End of custom commands"

هل تعمل خلف وكيل عكسي؟ هل قمت بتعيين force_https في الإعدادات؟

نعم، تم تعيين force_https. ولا، لا يوجد وكيل عكسي سوى nginx المدمج.

الأمر الغريب هو أن ملفات JS الأخرى تعمل بشكل صحيح مع عنوان URL الخاص بـ CDN. المشكلة تكمن فقط في markdown-it…

لا أعرف أين أبحث في الكود، خاصة أنني لا أعرف Ruby. :slight_smile: :grinning:

إعجاب واحد (1)

هل هناك أي معلومات إضافية تحتاجها لتوجيهي نحو الحل؟ هل يجب أن أفحص الكود؟

مرحباً، هل لدى أحدكم فكرة حول كيفية حل هذه المشكلة؟

إعجاب واحد (1)

يبدو أن هناك شيئًا غريبًا في إعداداتك.

لديك إعداد CDN لـ S3، لكنه يستخدم نفس عنوان URL الخاص بالدلو؟

data-s3-cdn="https://discourse-dev.assets.schwarz" 
data-s3-base-url="//discourse-dev.assets.schwarz"

مقارنةً بـ Meta:

data-s3-cdn="https://d11a6trkgmumsb.cloudfront.net" 
data-s3-base-url="//assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com"

الكود الذي يقوم بتحميل السكربتات الديناميكية سيحاول استبدال S3_BASE_URL بـ S3_CDN:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse-common/addon/lib/get-url.js#L35-L37

إعجاب واحد (1)

نعم، كلا العناوين URL متطابقان، حيث نستخدم Minio لتخزين الكائنات المتوافق مع S3.

@Falco، كنت محقًا. فصل كلا الرابطين ساعد في حل المشكلة :slight_smile:

شكرًا على المساعدة :slight_smile:

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.