تم تحميل Discourse جزئيًا وأخطاء 404 من بعض ملفات css و js و svg

مرحبًا أيها الأعضاء في منتدى Discourse.

لقد قمت بتثبيت Discourse بنجاح سابقًا باستخدام هذا الرابط، ولكن هذه المرة واجهت الخطأ التالي، لذا أحتاج إلى مساعدتكم في التثبيت.

عندما أحل هذه المشكلة، سأشارك كيفية إصلاحها.

من خلال متصفح الويب، ظهر لي الخطأ التالي أثناء تثبيت Discourse.

[خطأ] فشل تحميل المورد: استجاب الخادم بحالة 404 () (wizard_c4aee3fa9261fde8baf9c596832d10e16a40c298.css، السطر 0)
[خطأ] فشل تحميل المورد: استجاب الخادم بحالة 404 () (wizard-vendor-e639f7bedb553c62a51539714bacf10a7bb9c2a68ee57d9d9e9da130ede31d8b.js، السطر 0)
[خطأ] فشل تحميل المورد: استجاب الخادم بحالة 404 () (tada.svg، السطر 0)
[خطأ] فشل تحميل المورد: استجاب الخادم بحالة 404 () (ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js، السطر 0)
[خطأ] تم رفض تنفيذ https://forum.sangean.co.kr/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js كسكربت لأن “X-Content-Type: nosniff” تم تقديمه وأن نوع محتوى الملف ليس من نوع MIME الخاص بالسكربتات.
[خطأ] تم رفض تنفيذ https://forum.sangean.co.kr/assets/wizard-vendor-e639f7bedb553c62a51539714bacf10a7bb9c2a68ee57d9d9e9da130ede31d8b.js كسكربت لأن “X-Content-Type: nosniff” تم تقديمه وأن نوع محتوى الملف ليس من نوع MIME الخاص بالسكربتات.
[خطأ] فشل تحميل المورد: استجاب الخادم بحالة 404 () (tada.svg، السطر 0)

بيئتي - Ubuntu 18.94، Nginx Reverse proxy.

لقد قمت بتنفيذ جميع خطوات التثبيت باستخدام حساب root، لذا إليك معلومات “ls -al” لمجلد /var/discourse/shared/standalone:

أعتقد أن المشكلة تتعلق بالإذن، لكنني لست متأكدًا.

drwxr-xr-x 11 root root 4096 Apr 4 05:50 .
drwxr-xr-x 3 root root 4096 Apr 4 04:45 ..
drwxr-xr-x 2 1000 www-data 4096 Apr 4 04:45 backups
drwxr-xr-x 4 root root 4096 Apr 4 04:45 log
drwxr-xr-x 2 uuidd uuidd 4096 Apr 4 04:45 postgres_backup
drwx------ 19 uuidd uuidd 4096 Apr 4 05:50 postgres_data
drwxrwxr-x 3 uuidd uuidd 4096 Apr 4 05:50 postgres_run
drwxr-xr-x 2 landscape ssh 4096 Apr 4 06:00 redis_data
drwxr-xr-x 4 root root 4096 Apr 4 05:50 state
drwxr-xr-x 4 1000 www-data 4096 Apr 4 05:50 tmp
drwxr-xr-x 3 1000 www-data 4096 Apr 4 04:47 uploads

إعدادات ملف /nginx/sites-available/forum.sangean.co.kr:

server {
listen 80; listen [::]:80;
server_name forum.sangean.co.kr;

return 301 https://$host$request_uri;

}

server {
server_name forum.sangean.co.kr www.forum.sangean.co.kr;

access_log /var/log/nginx/forum.sangean.co.kr.access.log ;
error_log /var/log/nginx/forum.sangean.co.kr.error.log;

include common/locations-wo.conf;
include /var/www/forum.sangean.co.kr/conf/nginx/*.conf;

location / {
    proxy_pass http://forum.sangean.co.kr:25654/;
    proxy_set_header Host $http_host;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect http://forum.sangean.co.kr:25654/ https://forum.sangean.co.kr;
}

}

إذا كنت بحاجة إلى ملفات إعدادات nginx المضمنة أو ملفات إعدادات Discourse، يمكنني تعديلها أو الرد على هذا المنشور.

شكرًا جزيلاً لكم.

يبدو أن إعدادات nginx الخاصة بك غير صحيحة. هل يمكنك مشاركة ملف yml الخاص بك أيضًا؟

أعتقد أنك تحاول تشغيل discourse على المنفذ 25654، بينما يمكنك بسهولة استخدام قالب discourse sockets لتشغيله على منفذ (socket) واستخدام الوكيل (proxy) لتحويل الطلبات إلى هذا المنفذ.

يمكنك فهم إعدادات nginx بشكل أفضل من خلال هذا الدليل: Add an offline page to display when Discourse is rebuilding or starting up

@itsbhanusharma شكرًا جزيلاً لك على ردك

سأقوم بقراءة وتنفيذ منشورك بنفسي أيضًا.

إليك ملف app.yml الخاص بي.

## هذا قالب حاوية 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:
  - "25654:80"
  #- "80:80"   # http
  #- "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

## قم بتعيين db_shared_buffers إلى أقصى 25% من إجمالي الذاكرة.
  ## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على الذاكرة المكتشفة، أو يمكنك التعديل
  db_shared_buffers: "256MB"

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

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

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

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

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن يعمل Discourse مع عنوان IP مجرد.
  DISCOURSE_HOSTNAME: 'forum.sangean.co.kr'

  ## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس

## اسم المضيف (خيار -h) المحدد أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

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

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  ## مطلوب عنوان SMTP واسم مستخدم وكلمة مرور
  # تحذير: قد يتسبب الحرف '#' في كلمة مرور SMTP في حدوث مشاكل!
  DISCOURSE_SMTP_ADDRESS: smtp.elasticemail.com
  DISCOURSE_SMTP_PORT: 2525
  DISCOURSE_SMTP_USER_NAME: admin@sangean.co.kr
  DISCOURSE_SMTP_PASSWORD: 58BD8932EDB9FEF87F8B3F0A75F482295B4B
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)

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

  ## عنوان CDN http أو https لهذه النسخة من Discourse (مُعد للاستخراج)
  ## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: https://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"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'From' لتسجيلك الأول، قم بإلغاء التعليق وتغييره:
  ## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. يحتاج للتشغيل مرة واحدة فقط.
  - exec: rails r "SiteSetting.notification_email='admin@sangean.co.kr'"
  - exec: echo "End of custom commands"

الشيء الوحيد الذي يمكنني اقتراحه هنا هو تنفيذ المنشور الذي اقترحته … بهذه الطريقة، لن تواجه أي مشاكل مع وكيل العكس.