كيف نتعامل مع المواقع المتعددة التي يمكنها الوصول إلى "دماغ" واحد؟

StackOverflow https://stackoverflow.com/questions/1326112

سؤال

بشكل عام، غطى تطويري فقط الشركات الصغيرة والمتوسطة الحجم ومواقع التجارة الإلكترونية.

سيشمل مشروعي التالي على سبيل المثال 30 موقعًا - ومع ذلك، سيكون لديهم حوالي 95% مشتركين مع بعضهم البعض.أريدهم أن يكون لديهم "عقل" واحد مما يعني أنه يمكنني إجراء التغييرات والتحديثات على إطار العمل وما إلى ذلك مرة واحدة فقط.

أتساءل عما إذا كانت مجموعة مواقع Stack Overflow تفعل ذلك (المستخدم المتميز، أو Stackoverflow، أو خطأ الخادم، وما إلى ذلك).

اللغات/الأنظمة الأساسية التي أختارها هي PHP 5.3 وMySQL 5 وKohana Framework.

يجب أن يكون لدى الدماغ

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

أدرك أن هذا من شأنه أن يضع الكثير من الضغط على الدماغ، لذلك سأضطر إلى استخدام التخزين المؤقت من جانب الخادم كثيرًا.

كيف يمكنني الوصول إلى كل مجال من المجالات في الدماغ، على سبيل المثال:

http://www.mysite2.com/products/something

الوصول بصمت http://www.mothership.com/mysite2/products/something

وهل ستكون هذه هي أفضل طريقة للقيام بذلك؟هل لديك أي نصائح؟هل أنا على الطريق الصحيح؟

لا تتردد في أن تسألني أي مزيد من التفاصيل.

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

المحلول

أسهل طريقة للقيام بذلك هي من خلال الاستضافة الافتراضية.في الأساس تقوم بتشغيل كافة المواقع على جهاز واحد.يحتوي الجهاز الواحد على تكوين Apache الذي يخدم جميع المواقع.

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

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

للحصول على وظائف مشتركة، يمكنك استخدام شيء مثل mod_rewrite لتعيين عناوين URL على المواقع المختلفة لنفس البرنامج النصي أو يمكن أن يكون لديك نصوص PHP في كل موقع تتضمن/تتطلب وظائف مشتركة.

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

كما هو مطلوب، القراءة المقترحة:

نصائح أخرى

يمكنك تحقيق ذلك في Apache باستخدام <VirtualHost> Directive.للقيام بذلك ضمن Apache 2.x، قم بتحريره httpd.conf وقم بإلغاء التعليق على هذا السطر (الموجود عادة بالقرب من نهاية الملف): Include conf/extra/httpd-vhosts.conf.ثم حدد موقع الملف httpd-vhosts.conf والدخول VirtualHosts بهذا التنسيق:

<VirtualHost 10.1.2.3>
DocumentRoot /home/site1
ServerName site1.com
</VirtualHost>

<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site2.com
</VirtualHost>

<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site3.com
</VirtualHost>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top