ينهار منتدى الخاص بي عندما أقوم بإعادة بناء التطبيق

مرحباً،
ينهار المنتدى الخاص بي في كل مرة أقوم فيها بتشغيل ./launcher rebuild app.
لقد أرفقت لقطة شاشة للخطأ الذي يظهر.

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

إذا كنت أفهم بشكل صحيح، فإن رسالة الخطأ تقول أن هناك مشكلة في السطر 9.

جرب كتابة هذا الأمر:

cat -n containers/app.yml

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

من المحتمل أن يكون من الجيد أيضًا تشغيل أمر chmod المذكور في الإخراج، على الرغم من أنه غير مرتبط بالخطأ.

3 إعجابات

حسنًا، nano -l هي طريقة أسهل بكثير للعثور على السطر الصحيح وإصلاحه على الفور :wink:

إذا لم تكن قد غيرت الكثير، فإن السطر 9 من app.yml يأتي قبل templates: مباشرة - هل يمكن أن يكون هناك شيء غريب مثل مسافة بيضاء إضافية؟

لكن الشيء الوحيد الذي تعلمته عن YAML هو أنه يمكن أن تكون هناك مسافة بيضاء في أي مكان تقريبًا، أو مسافة مفقودة، أو علامة اقتباس مفقودة، أو نوع خاطئ - ويشير الخطأ إلى مكان خاطئ.

أقول إنه من الأسهل حذف app.yml وإعادة الإعداد مرة أخرى.

إعجابَين (2)

لقد قمت بإزالة هذا السطر 9 عناصر بالكامل ولكن لا يزال يقول إن السطر 9 به خطأ في بناء الجملة.

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

كيف يمكنني حذفه وإعادة بنائه؟

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

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

cd /var/discourse
mv containers/app.yml .
./discourse-setup
إعجاب واحد (1)

هل سيؤدي ذلك إلى حذف بيانات المنتدى الخاصة بي؟ مثل المنشورات والمستخدمين وكل ذلك؟

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

لا. ولكن هذا هو السبب في أنك قمت بعمل نسخة احتياطية كاملة أولاً.

ولكن يمكنك تجربة هذا أيضًا:

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

لقد حاولت التحقق من صحة YAML، ويقول إنه على ما يرام

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

أعتقد أنه خلل

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

هناك شيء ما.

ولكن يمكنك نسخ ولصق ملف app.yml الخاص بك هنا كما هو. عندها يمكن لشخص أكثر حكمة إلقاء نظرة. لأنه الآن لا أحد يعرف ما هو موجود أو غير موجود.

إعجابَين (2)

هل يمكنك مشاركة ملف app.yml بالكامل دون معلومات آمنة (كلمات مرور وما إلى ذلك)؟

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

## هذا هو قالب حاوية Discourse المستقل والمتكامل
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا جدًا عند التحرير!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة
hooks:  after_code:    - exec:        cd: $home/plugins        cmd:          - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git          - sudo -E -u discourse git coe tp/gtu.c/dcusedcu-pile-rti
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: "256MB"

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

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

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

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

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن تعمل Discourse مع رقم IP عارٍ.
  DISCOURSE_HOSTNAME:

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

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

  ## TODO: خادم بريد SMTP المستخدم للتحقق من صحة الحسابات الجديدة وإرسال الإشعارات
  # عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
  # تحذير الحرف '#' في كلمة مرور SMTP يمكن أن يسبب مشاكل!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: ###
  DISCOURSE_SMTP_PASSWORD: "##-07e2c238-419aaa92"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي صحيح)
  DISCOURSE_SMTP_DOMAIN:
  DISCOURSE_NOTIFICATION_EMAIL:

  ## إذا أضفت قالب 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

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

## الحاوية 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"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'من' للتسجيل الأول، قم بإلغاء التعليق والتغيير:
  ## بعد الحصول على أول بريد إلكتروني للتسجيل، أعد التعليق على السطر. يحتاج فقط إلى التشغيل مرة واحدة.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

أعتقد أنه لا ينبغي أن يكون هذا هو بداية الملف:
hooks: after_code: - exec: cd: $home/plugins cmd: - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git - sudo -E -u discourse git coe tp/gtu.c/dcusedcu-pile-rti

وهناك سطران مفقودان تحت السطر LANG: en_US.UTF-8.

LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en

ربما هناك المزيد لم ألاحظه، ولكن هذا هو الملف الافتراضي ويمكنك المقارنة.

السطر الأول الفعلي الذي يبدأ بـ hooks: لا يمكن أن يكون صحيحًا. يجب أن يكون شيئًا مثل

hooks:
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake posts:rebake
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

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

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

لقد تجاوزتني :rofl:

ما رأيك - هل سيكون ./discourse-setup الجديد هو الطريقة الأسرع والأسهل لإصلاح هذه الفوضى؟