التطبيق الافتراضي لن يعاد بناؤه

مرحباً، قمت بإعداد discourse الافتراضي على جهاز Linux باستخدام هذا الدليل. سار كل شيء بسلاسة تامة، وظهر الموقع بشكل مثالي.

قررت السماح للمستخدمين بالاتصال عبر فيسبوك، لذا اتبعت تعليمات فيسبوك المرتبطة بالرابط أعلاه (لا يمكنني إعادة الرابط مرة أخرى لأن المستخدمين الجدد يمكنهم نشر رابطين فقط على ما يبدو). انتهى الأمر بعدم عمل ذلك، لكن الموقع ظل يعمل (لا أتذكر الخطأ الذي ظهر عند محاولة تسجيل الدخول عبر فيسبوك).

أثناء تصفح وثائق فيسبوك، رأيت شيئاً يتعلق بضرورة تمكين https، لذا بدأت في اتباع هذه الوثائق. سار كل شيء بشكل جيد حتى أمر ./launcher rebuild app، حيث ظهر خطأ متعلق بـ postgres. وهذا فاجأني، لأنني لم أقم بأي تعديلات على إعدادات postgres (حسب علمي). الخطأ الأول هو التالي:

INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

لم أوقف خدمة postgres، لكنني حاولت تشغيل service start postgres فقالت إن الخدمة غير مثبتة. لذا أفترض أنها تُثبّت تلقائياً بطريقة مختلفة عن المعتاد. هل لديكم أي أفكار حول ما قد يكون خاطئاً؟ شكراً لكم

ملف container/app.yml الخاص بي:

templates:
  - "templates/web.template.yml"
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  db_shared_buffers: "128MB"

env:
  LANG: en_US.UTF-8
  LETSENCRYPT_ACCOUNT_EMAIL: 'myotheremail@gmail.com'
  UNICORN_WORKERS: 2

  DISCOURSE_HOSTNAME: mysite.com

  DISCOURSE_DEVELOPER_EMAILS: 'myemail@gmail.com'

  DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: myemail@gmail.com
  DISCOURSE_SMTP_PASSWORD: "myPa$$word"

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

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

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: echo "End of custom commands"

إذا كنت تتبع الدليل الرسمي، فيجب أن يكون HTTPS قد تم إعداده تلقائيًا. لاحظ في أعلى الدليل الذي ربطت به:

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

حسناً، دعنا نعيد التنظيم للحظة.

هذان الدليلان هما كل ما تحتاجه لاتباع الخطوات:

أما هذا الدليل فلا ترغب في اتباعه لأن بروتوكول HTTPS مُفعّل افتراضياً:

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

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

حسنًا، لقد تم إعادة تشغيل التطبيق، لكنني لا أرى في هذه التعليمات أي شيء قد يساعد في إعداد الموقع باستخدام HTTPS، حيث لا يوجد أي ذكر للشهادة سوى طريقة Let’s Encrypt المذكورة في الأسفل. ما الذي فاتني؟ هل يمكنك إرشادي إلى المكان المحدد في تلك التعليمات الذي ينشئ HTTPS؟

يتم كل ذلك في الخلفية. عند إدخال بريدك الإلكتروني في خطوة التكوين الأخيرة:

أراهن أنني ضغطت على ENTER لتجاوز الأمر دون أن أدرك ذلك. إذا كان الأمر كذلك، فهل من الأفضل إعادة تشغيل الإعدادات أم اتباع تعليمات Let’s Encrypt؟ مع ملاحظة أن لدي بعض المحتوى على الموقع حاليًا ولا أريد محوه. (شكرًا مرة أخرى على مساعدتك)

فقط قم بتشغيل discourse-setup مرة أخرى وقدم عنوانًا لـ Let’s Encrypt.

ما هذه الميزة الرائعة. أشعر بالسخافة لأنني لم ألاحظها من المرة الأولى. شكراً لكما وللفريق على تنفيذها.

هل توجد طريقة لتغيير الكلمات التي كانت ستجعلك تفهم ذلك في وقت أقرب؟

أعتقد ذلك. لدي خبرة جيدة في العمل على الخوادم، لكنني لم أكن نشطًا كثيرًا منذ صدور Let’s Encrypt، لذا افترضت ببساطة أنه سيكون هناك قسم في الوثائق للحصول على شهادة إذا كان ذلك ممكنًا مباشرةً. وبما أنه لم يكن هناك مثل هذا القسم، افترضت أن الأمر يتطلب خطوة إضافية. لا يوجد شيء في تلك الصفحة يذكر Let’s Encrypt سوى مخرجات الأمر ./disource-setup. ربما يُذكر تحت عنوان

حسناً، ما هي الكلمات؟

لا أستطيع الجزم مما إذا كنت قد رأيت باقي ردّي، لكن ربما سأقوم بإنشاء طلب سحب (PR) يتضمن الإصلاحات التي أراها مناسبة. لكن في الحقيقة، مجرد الإشارة إلى أن الوثائق تتناول التعامل مع الشهادات سيكون كافياً.

أهلاً! إذن، هل وثيقة تثبيت السحابة لا توضح الأمر بشكل كافٍ؟ يبدو ذلك صحيحاً.

سأقوم بمراجعة اللغة المستخدمة في discourse-setup لأرى ما إذا كان يجب توضيح ماهية Let’s Encrypt بشكل أفضل. صحيح أنه لا ينبغي افتراض معرفة المستخدم المسبقة بذلك.

شكراً لك