أنا مستخدم جديد لمنصة Discourse قادم من phpBB. قبل أسبوعين، قمت بتثبيت Discourse في حاوية Docker باستخدام Nginx، حيث أن Apache يستخدم المنافذ 80 و 443 افتراضيًا. اتبعت بعناية الخطوات الموضحة في أدلة التثبيت وتكوين Nginx متعدد المواقع.
تمكنت من تشغيل المنتدى واستخدامه لمدة أسبوع، مع تسجيل الدخول بشكل متقطع فقط للتعود على المنصة. عندما طلبت من أحد المستخدمين التسجيل واختباره، تعطل المنتدى في اليوم التالي. عرض المتصفح الرسالة: “واجه البرنامج الذي يشغل منتدى المناقشة هذا مشكلة غير متوقعة.” لم أتمكن من إصلاحه، لذلك قمت بإعادة تثبيت المنتدى بالكامل من الصفر ثم استعدت المواضيع من آخر نسخة احتياطية متاحة. كان ذلك يوم الخميس الماضي. بعد كل هذا، عاد المنتدى للعمل. الآن، عاد مرة أخرى مع خطأ Nginx 502 Bad Gateway. ذهبت مباشرة لإعادة بناء التطبيق وتعطل مرة أخرى مع الخطأ:
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 580 exit 1>.
حدث نفس الشيء مرارًا وتكرارًا الأسبوع الماضي وأدى بي إلى إعادة تثبيت كل شيء من الصفر. المنتدى غير نشط عمليًا لأنني لم أجعله عامًا بعد. أخشى فكرة أنه إذا استمر في التعطل بدون نشاط، فماذا يمكن أن يحدث مع مجموعة مستخدمين أكبر؟ قم بتشغيل هذه الأوامر: ./launcher enter app
أنا لست مستخدمًا خبيرًا لتحديد الخطأ، لكنني أشك في أن Postgres سيتعطل في مرحلة ما. هذا ما دفعني إلى إعادة تشغيل كل شيء والبدء من جديد الأسبوع الماضي، لكنني لا أعتقد أن هذه ممارسة شائعة أو صحية لأي شخص.
يعمل Discourse على خادم بـ 4 أنوية، و 6 جيجابايت من ذاكرة الوصول العشوائي، و 180 جيجابايت من مساحة القرص. حاليًا، أقوم فقط بتشغيل هذا التثبيت لـ Discourse، لذا على حد فهمي، لست مقيدًا بالأجهزة.
هل قمت بالتثبيت القياسي؟ مع التثبيت القياسي، لا تحتاج إلى Nginx ولا Apache (وكلاهما يستخدم المنافذ 80 و 443 افتراضيًا). إذا كان لديك أي منهما مثبتًا، فيجب عليك إزالتهما قبل البدء.
هل تحتاج إلى مواقع متعددة؟ حتى لو كنت بحاجة إليها، أوصي أولاً بإجراء تثبيت قياسي، ثم اتباع هذا الدليل: Setup Multisite Configuration with Let’s Encrypt and no Reverse Proxy. لقد ساعدت شخصًا ما في ذلك بالأمس، ويبدو أنه إذا استخدمت أسماء المضيفين الصحيحة ولم تستخدم Cloudflare مع السحابة البرتقالية، فإنه يعمل بشكل جيد.
لحسن الحظ، لست من الأشخاص الذين يستسلمون بسهولة، على الرغم من أن هذه المشاكل اللاحقة تقلقني، خاصة وأنني لست على دراية كاملة بهذه المنصة.
بشكل افتراضي، يحتوي خادم السحابة الخاص بي على Apache مثبت، وإذا قمت بإزالته، فإنه يسبب مشاكل مع CPanel وميزات أخرى. لقد جربت ذلك أثناء التثبيت الأول لأنني قرأت أن nginx أفضل وأسرع بكثير، ولكن واجهت المشاكل التي ذكرتها. لذلك، قمت بإعادة تثبيت نظام التشغيل على الخادم وبدأت من جديد، متبعاً هذه التوصية:
ليس الأمر وكأن لدي مواقع متعددة، على الأقل ليس بعد، لأن خادم السحابة الخاص بي يسمح بما يصل إلى 5 حسابات.
بالنسبة للتثبيت القياسي، اتبعت جميع الخطوات لتثبيت Docker و Discourse و Certbot وتنزيل شهادات Let’s Encrypt، ولكن عندما قمت بتشغيل discourse-setup، كان عليّ إجراء التكوين اليدوي باتباع الرابط أعلاه وتكوين ملف app.yml يدوياً لإجراء إعادة البناء.
أنت حقًا لا تريد CPanel. إنه لا يضيف شيئًا ويجعل تثبيت Discourse أكثر صعوبة. وإذا كان لديك، فلا يمكنك اتباع تعليمات NGinx لأن Apache موجود بالفعل في الطريق.
إذا كان بإمكانك إزالة Apache و CPanel، فافعل ذلك. إذا لم تتمكن من ذلك، فأنصحك بخدمة استضافة مختلفة.
في الواقع، ما لديك قد لا يعمل على الإطلاق، هل يمكنك تشغيل
ما هي خدمة الاستضافة التي توصي بها؟ أو ما هي الخدمة الأكثر استخدامًا لتثبيتات Discourse؟
نعم! هذه هي الرسالة:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
أي شيء لا يقوم بتثبيت CPanel. هناك العديد من المواضيع حول الخدمات الموصى بها. Digital Ocean سهل.
آه. إذن إذا كان بإمكانك فقط التخلص من Apache و CPanel، فستكون في وضع جيد. يبدو هذا أسهل طريقة للمضي قدمًا من حيث أنت.
الطريقة الأخرى هي الاحتفاظ بـ CPanel والتحايل للحصول على Apache الحالي الخاص بك ليكون وكيل عكسي. ومع ذلك، ستكون بمفردك، حيث توجد الكثير من الثغرات الخاصة بالتثبيت التي يمكن أن يقع فيها الناس ليقدموا الكثير من المساعدة هنا.
لا أعتقد أنه من المحتمل أن أقوم بإزالة Apache و CPanel. ربما يمكن لمزود الخادم السحابي الخاص بي تعديل منافذ Apache بحيث لا يستخدم نفس المنافذ مثل Discourse، وبالتالي التخلص من nginx، أو تعديل CPanel لـ Ferozo أو خدمة أخرى. لا أعرف، لكنني سأسأل.