ما هي الأذونات لمجلد التحميلات؟

حاولت أولاً تشغيل Discourse بإعدادات شبه افتراضية وعملت بشكل جيد جدًا، وتمكنت من تحميل الملفات بالإضافة إلى القيام بأشياء أخرى.

ثم أدركت أن المسار في app.yml كان /var/discourse وقمت بتحديثه إلى /var/www/discourse، وأوقفت ودمرت الحاوية، وأزلت المجلد السابق بالكامل. وقمت بتشغيله مرة أخرى… ولكن لاحظت الآن أنني لم أعد أستطيع تحميل الملفات.

ما نوع الأذونات التي يحتاجها مجلد uploads؟ يمكنني إجراء بعض التغييرات يدويًا، ولكن أود أن أعرف بالضبط وما إذا كان ذلك جيدًا بشكل عام (ألا يجب أن يتولى المشغل إعداد الأذونات الصحيحة، خاصة عند تشغيله من البداية؟)

في السجلات لدي أخطاء nginx مثل

2024/07/12 19:11:23 [crit] 76#76: *160552 stat() “/var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png” failed (13: Permission denied), client: 172.17.0.1, server: _, request: “GET /phorum/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png HTTP/1.0”, host: “myhost.com”, referrer: “https://myhost.com/phorum/admin/site_settings/category/branding

الأذونات على uploads تبدو كالتالي:

drwxr--r--+ 3 discourse www-data 21 Jul 12 11:47 uploads

هذا ما هو موصى به.
المسار /var/www/discourse هو المسار لـ discourse داخل الحاوية. /var/discourse هو المسار العادي لـ Discourse_docker خارج الحاوية.
نظرًا لأنك بدأت للتو، أوصي بأن تبدأ من جديد ولا تقم بإعادة تسمية أي شيء هذه المرة.
تخميني هو أنك لم تقم بتحديث المسار في ملف app.yml الخاص بك، ولذلك فهو يحاول الوصول إلى شيء غير موجود.

لدي العديد من المشاريع الأخرى على هذا الخادم وجميعها موجودة بشكل جيد في مجلد /var/www الخاص بي، لذلك أفضل الاحتفاظ بها هكذا :slight_smile: ولا يهمني كيف هو الأمر داخل الحاوية.

لكنني قمت بتحديثه؟ في mounts، أو أين يجب أن يذهب؟

عذرًا، لا يمكنني المساعدة. لكنني متأكد تمامًا من أنه لا يوجد لديك Nginx هناك :wink: الوضع نفسه مع حاوية docker.

عذرًا، لست متأكدًا من Nginx الذي تقصده؟ السجلات من Nginx الخاص بـ Discourse، و Nginx الخاص بي الذي ينهي SSL فوقه.

هذه هي النقطة بالضبط. لأن وكيل Nginx العكسي الخاص بك ليس في هذا المسار، فلماذا يجب أن يكون حاوية Docker.

ولكن الحاوية تعيش حياتها الخاصة، ولا ينبغي أن يؤثر المسار إلى الحاوية على ما يفعله Nginx الخاص بها. هل قمت بتغيير شيء آخر أيضًا؟

لقد تحققت مما لدي:

lrwxrwxrwx 1 root root 15 Jul 12 10:10 uploads -> /shared/uploads

وك مثال لصورة في /var/www/discourse/public/uploads/default/original/1X تبدو هكذا:

-rw-r--r-- 1 discourse www-data 7100 May 19 2022 08335563eac3a393e60a902d4d38cffdfa6d967d

هذا كل ما أعرفه. لأن غير ذلك، فإن Docker هو لغز ضخم بالنسبة لي :rofl:

إذًا، هل هو قابل للكتابة عالميًا؟ أليس هذا يعتبر سيئًا للأمان؟

لا تريد حقًا المخاطرة بتقديم أسرارك في ملف app.yml الخاص بك للعالم.

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

داخل دوكر؟ لا أعتقد ذلك. و… لا يهمني لأن كل ذلك مخطط له ومدعوم من CDCK وأنا أثق بأنهم يعرفون ما يفعلونه :smirking_face:

بالتأكيد، لكنني لا أقدم أي شيء :slight_smile:

الأذونات هي نفسها بغض النظر عما إذا كانت بالداخل/بالخارج. ومجلد التحميلات مُركب.

حسنًا، لم ينجح أي شيء، لذا انتهى بي الأمر بتغيير الأذونات للمجلد uploads إلى 755 وهو يعمل الآن. بعد إعادة البناء، يبدو أن التحميلات نفسها كانت جيدة (من جانب المحرك)، ومع ذلك لم يتمكن nginx من قراءتها.

لا أفهم تمامًا لماذا تفعل كل هذا. إنه اختيارك لوضع حاوية في مسار سيكون مرئيًا عالميًا إذا ارتكبت خطأً بسيطًا، ولكن هذا اختيارك. ولكن كل شيء آخر… لماذا؟

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

ما هو “هذا”؟ لدي إعداد قياسي نسبيًا :slight_smile: وأنا أحاول إصلاح المشكلة.

إذا أردت، يمكنك تحميل ملف ورؤية أذوناته ونسخها.

ربما قم بتحميل بعض الملفات ثم قم بتنفيذ

 find uploads -ls |less

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

لهذا السبب أنت بعيد جدًا عن المعيار :smirking_face: لأنه يوجد خياران:

  • لديك خطأ في يديك لا يملكه أحد آخر
  • لقد فعلت شيئًا غريبًا

ربما يكون خطأ. وقد أكدت ذلك من خلال إجراء تثبيت قياسي باستخدام مسار آمن (من نواحٍ عديدة) وفي نفس الوقت توصيل الوكيل العكسي الخاص بك بالطريقة الصحيحة. لأنه إذا كان لا يزال معطلاً، يمكنني المراهنة على أن المشكلة تكمن في المضيف الافتراضي (virtual host) و/أو المنافذ. ولكن إذا كان يعمل… فنحن نعود إلى الخيار “الغريب” - حيث لا أحد يعرف ما الذي فعلته.

هل ترى المشكلة هنا؟

في كلتا الحالتين - استخدام وكيل عكسي (reverse proxy) يؤدي إلى عدم وجود دعم… هذه هي السياسة هنا. ولكن يمكن لمستخدمين آخرين، وغالبًا ما يفعلون، المساعدة.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.