سؤال

هل تمكن أي شخص من جعل xinc يعمل بشكل صحيح ضمن Apache الافتراضي الذي تم تجذيره في OpenBSD؟أرغب في الحفاظ على تشغيل خادم التطوير الخاص بنا بشكل كامل تمامًا مثل خادم الإنتاج الخاص بنا حتى نتأكد من أن الكود الخاص بنا يعمل بشكل جيد.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

@dragonmantank

في حالة Xinc، أتمنى أنك استخدمت PEAR لتثبيته.

pear list-files xinc/Xinc

من المفترض أن يقوم بذلك، ويوضح لك المكان الذي وضع فيه تثبيت Xinc ملفاته.لذلك، على الرغم من أن Xinc هو "مجرد" نص PHP كبير، إلا أنه لا يزال منتشرًا في نصوص rc وجميع الأشياء الأخرى الضرورية لتشغيل التطبيق.أنا متأكد من أنك لا تحتاج إلى إضافة كافة المسارات المدرجة هناك، ولكن ربما بعضها من أجل تشغيله.

بصرف النظر عن Xinc نفسه، أعتقد أنه يحتاج أيضًا إلى phpUnit ومجموعة من مكتبات PEAR الأخرى للتشغيل، لذا فإن ما أقترحه هو هذا:

pear config-get php_dir

وبعد ذلك تحتاج إلى إضافة هذا المسار (كما اقترح Henrik) إلى بيئة chroot.

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

ستكون الخطوة الأولى هي جمع المعلومات حول كل ما يحتاجه التطبيق لتشغيله؛وهذا ما أنجزه عادةً عن طريق الجري سيستراس(1) و إل دي دي(1) لمعرفة ما هو مطلوب لتشغيل البرنامج.

انتقل من خلال إخراج

systrace -A -d. <app>
ldd <app>

وتأكد من أن كل ما يلمسه التطبيق ويحتاجه (الكثير من التطبيقات تلمس أشياء لا يحتاجها فعليًا) متاح في بيئة chroot.قد تحتاج إلى تعديل التكوينات ومتغيرات البيئة قليلاً.أيضًا، إذا كان هناك خيار لجعل سجل التطبيق في سجل النظام، عادةً ما أفعل ذلك وأنشئ مقبس سجل النظام (راجع الخيار -a في سجل النظام(8)) لتقليل الأماكن التي يحتاج التطبيق إلى الوصول للكتابة إليها.

ما وصفته للتو هو طريقة عامة لتشغيل أي برنامج تقريبًا في بيئة chroot (ومع ذلك، إذا كنت بحاجة إلى استيراد نصف مساحة المستخدم وبعض أوامر suid، فقد ترغب في عدم إجراء chroot :)).بالنسبة للتطبيقات التي تعمل ضمن Apache (أنا متأكد من أنك على علم بأن OpenBSD httpd(8) يختلف قليلاً) لديك الخيار (بمجرد بدء تشغيل البرنامج؛لا تزال أي مكتبات ديناميكية موجودة في السجن) لاستخدام Apache للوصول إلى الملفات، مما يسمح باستخدامها httpd.conf لاستيراد الموارد في بيئة chroot دون نسخها فعليًا.

من المفيد أيضًا (إذا عفا عليه الزمن قليلاً). هذا رابط، يوضح بعض الأخطاء في لغة PHP التي تم تجذيرها على OpenBSD.

ستكون الخطوة الأولى هي جمع المعلومات حول كل ما يحتاجه التطبيق لتشغيله؛أقوم بذلك عادةً عن طريق تشغيل systrace(1) وldd(1) لمعرفة ما هو مطلوب لتشغيل البرنامج.

سأعطي هذه المحاولة.المشكلة الكبيرة التي وجدتها مع xinc هي أنه على الرغم من كونه تطبيق PHP، إلا أنه يريد معرفة مسارات تثبيت التطبيق (ومع ذلك فهو لا يزال ينشر الأشياء في مجلدات أخرى) ويقوم بتشغيل بعض نصوص PHP في الوضع الخفي (تلك البرامج النصية هي الأصعب في التثبيت) تشغيل).لذلك، على سبيل المثال، طلبت منه التثبيت على /var/www/xinc ثم قمت بإنشاء رابط رمزي لـ

/var/www/var/www/xinc -> /var/www/xinc

وقد نجحت جزئيًا.لقد ظهرت واجهة المستخدم الرسومية قليلاً ورفضت التعرف على أي مشاريع قمت بإعدادها.أعتقد أن المشكلة الأكبر هي أن جزءًا منه يعمل على تشغيل الجذر والنصف الآخر يعمل في الخارج.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top