لديك نسخة من Discourse تعمل خلف خادم Apache وتتعامل عبر منفذ، كما هو موضح هنا.
لقد فعّلت SELinux، ولتمكين httpd من استخدام المنفذ، قمت بتعيين سياق للمنفذ يمنح httpd صلاحيات القراءة والكتابة، كما هو مُوصى به:
semanage fcontext -a -t httpd_sys_rw_content_t /var/discourse/shared/standalone/nginx.http.sock
restorecon /var/discourse/shared/standalone/nginx.http.sock
هذا يعمل بشكل ممتاز!
(ملاحظة جانبية: هل سيكون السياق httpd_var_run_t أكثر ملاءمة، حيث أن المنفذ نفسه ليس محتوى، وهذا هو السياق الذي يستخدمه httpd للبنية التحتية التشغيلية الأخرى؟)
ومع ذلك، في كل مرة يتم فيها إعادة تشغيل حاوية Discourse، يُعاد إنشاء ملف المنفذ بسياقه الأصلي وليس بالسياق الجديد، مما يضطرني إلى تشغيل restorecon قبل أن يتمكن Apache من التواصل مع Discourse. من السهل نسيان القيام بذلك والنتيجة أن تصبح المنتدى غير قابلة للوصول. خطر ببالي استخدام سكريبت cron لتشغيل restorecon بشكل دوري حتى لا أضطر لتذكير نفسي بالقيام بذلك يدويًا، لكن هذا حل غير أنيق.
كيف يمكنني ضمان حصول ملف المنفذ على السياق الصحيح عند إنشائه (أو على الأقل إعادة تعيين سياقه كجزء من عملية الإنشاء)؟