Port already in use, what to do?

This (port conflict) was handled in the script a while ago. Needing to proxy is a whole other deal there are howto topics on that.

This is the guide that the script links to but I don’t want to tear down my production website just to install discourse.

This guide assumes you already have Discourse working - if you don't, it may be hard to tell whether or not the configuration is working.

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

الخلفية: أعمل على Ubuntu 16.04.3 LTS (أخشى جدًا الترقية إلى 18.04) ونسخة Discourse 2.3.x (لا أتذكر الإصدار الدقيق، وسأوضح السبب لاحقًا).

أجريت تغييرًا (غير ذي صلة) على ملف app.yml وأعدت بناء التطبيق.

لاحظت أيضًا أن Ubuntu أرادت إعادة التشغيل (لم أتحقق من السبب)، فأعدت تشغيل النظام.

وانتهى الأمر بظهور خطأ المنفذ.

اكتشفت أن Apache2 يعمل فجأة، لذا قمت بتعطيله:
root@Discourse:~# sudo update-rc.d apache2 disable
insserv: warning: current start runlevel(s) (empty) of script apache2' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script apache2’ overrides LSB defaults (0 1 6).

وعاد المنتدى للعمل في النهاية لأن المنفذ أصبح حرًا.

ما لا أستطيع فهمه هو: لماذا حدث هذا؟ من أين جاء Apache2؟

كان ينبغي عليّ اختبار المنتدى فور إعادة التشغيل، يا إلهي. الآن لا أعرف ما إذا كان ترقية Discourse أو إعادة تشغيل Ubuntu هي المسؤولة عن هذا (ربما أجد ذلك في بعض السجلات، لكنني لم أعد جيدًا مع Linux). حاولت حتى البحث في المنتدى عما إذا كانت نسخة Discourse 2.5 تقوم بتثبيت Apache2 في الوقت الحالي.

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

من خلال وصفك، أفضل طريقة لمعرفة ما إذا كان ترقية أخرى ستسبب مشكلة هي إجراء الترقية ثلاثة أيام متتالية - يجب أن يكون الأمر سهلاً بما يكفي ليكون ذلك قابلاً للتطبيق!

بشكل عام، توقع أنه إذا مرّ عام أو أكثر منذ آخر ترقية لـ Discourse، فستحتاج إلى ./launcher rebuild app. أنصحك بزيارة /admin/upgrade بشكل أكثر تكرارًا بالطبع :slight_smile:

إذا كان ملف app.yml الخاص بك يشير إلى شيء آخر، فأنت بحاجة إلى

  ./launcher stop irrelevant

أو إعادة تسميته وإعادة بناء ذلك.

لا يقوم Discourse بتثبيت أي شيء خارج الحاوية باستثناء Docker كشرط مسبق للتثبيت.

من المرجح أن Apache2 قد تم تثبيته بعد إعادة التشغيل الأخيرة ولم يتمكن من استغلال المنفذ حتى قمت بإعادة تشغيل الجهاز. ابحث في سجل Bash الخاص بك للتحقق من الحزم التي تم تثبيتها يدويًا.

شكرًا للجميع على الأفكار.

لقد استخدمت أداة إعادة البناء (rebuild app). وإذا كان تثبيت Discourse لا يضيف أي شيء إضافي (كنت أظن أن nginx و Apache2 سيُثبّتان افتراضيًا بسبب شيء جديد)… هُمم. بالتأكيد لم قمتُ أنا بإضافة Apache2.

آه. بعد أن كنت أستخدم DigitalOcean Ubuntu لـ Discourse فقط لسنوات وسنوات، قمتُ فعليًا بتثبيت Subversion في يناير، ويبدو أنني فعلت ذلك دون إعادة تشغيل النظام. ويبدو أن هذا التثبيت يضيف Apache، رغم أن تعطيله لا يزال يترك لي الوظائف التي أحتاجها.

أظن أنني لم أعتد بعد على أن التثبيتات تضيف برامج غير مرغوب فيها (نعم، أنا متأكد من أن Apache مطلوب لأغراض ما). وهذا يحدث عادةً أكثر في أنظمة مثل Windows أو Android :D.

آسف على الإزعاج. ومع ذلك، فهذا سيناريو استخدام حقيقي، وهو دائمًا ما يكون مفيدًا للقراءة كمطور.