it-swarm.asia

كيف يمكنني تحديث موقعي دون إجبار المستخدمين على الانتظار؟

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

كيف يمكنني الاحتفاظ بإصدارات متعددة من الموقع على الخادم والتبديل بينها دون التسبب في أي توقف (على سبيل المثال مع ملف htaccess)؟

8
Gelatin

هل أنت على جهاز Linux/BSD؟ إذا كان الأمر كذلك ، يمكنك بسهولة استخدام الروابط الرمزية لتحقيق هذا الهدف.

قم بإنشاء الإصدار 1 من الموقع هنا:

/var/www/www.example.org.v1

قم بإنشاء رابط رمزي يشير إلى هذا الدليل

cd /var/www
ln -s www.example.com.v1 www.example.com

يجب أن يمنحك هذا دليل قائمة (ls -la) يبدو كالتالي:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:35 www.example.com.v1

اضبط خادم الويب الخاص بك لاستخدام /var/www/www.example.com كجذر للمستند الخاص به. لن تضطر أبدًا لتغيير هذا ؛ سيتم إجراء كل إعادة التأشير على مستوى نظام الملفات.

الآن ، عندما تريد التبديل في الإصدار 2 من الموقع ، كل ما عليك فعله هو وضع الإصدار الجديد في:

/var/www/www.example.org.v2

وتحديث الرابط الرمزي للإشارة إلى هذا الإصدار:

ln -sfh www.example.com.v2 www.example.com

مما سيترك مخرجات الدليل تبدو كما يلي:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x   2 userid  users   512 Aug  3 03:42 www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:41 www.example.com.v2

كما ترون ، يشير الرابط الرمزي www.example.com الآن إلى الإصدار 2 من موقعك. هذه عملية ذرية ويجب ألا تتسبب في حدوث أي تعطل بسبب عدم توفر الملفات.

بالطبع ، لا يزال هناك تعقيد كبير مطلوب في ضمان تحديث هياكل قاعدة البيانات ، أي موارد ثابتة متوفرة (وترتبط بالإصدار الصحيح) ، وما إلى ذلك ، ولكن هذا على الأقل يتأكد من التأكد من أن جميع الموارد المناسبة لـ موقع جديد متاحة على الفور.

يدعم نظاما التشغيل Windows Vista و Server 2008 أيضًا الروابط الرمزية باستخدام الأمر mklink ، على الرغم من أنني لا أمتلك أي خبرة مباشرة معه.

6
JasonBirch

يمكنك استخدام المضيفين الظاهريين في Apache للحصول على نسختين من الكود في 2 عناوين URL مختلفة. مثال شائع الاستخدام هو:

test.example.com -> /var/www/version1.2

www.example.com -> /var/www/version1.1

كلاهما موجود على نفس الخادم ، ولكن ربما واحد فقط يمكن الوصول إليه من قبل العالم. بمجرد أن تشعر بالرضا من أن test.example.com يعمل ، يمكنك فقط تغيير المكان الذي يشيرون إليه في تهيئة Apache و ... presto. موقع جديد ، رمز جديد. على افتراض عدم وجود تغييرات مخطط قاعدة البيانات هذا يجب أن تعمل. بعد إجراء التغيير ، سيكون:

test.example.com ->/var/www/newtestversion

www.example.com -> /var/www/version1.2

فيما يلي مثال لتوجيه تكوين Apache لمضيف افتراضي:

<VirtualHost *:80>

     ServerAdmin [email protected]

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

لمزيد من المعلومات حول كيفية القيام بذلك ، راجع وثائق مضيف Apache الظاهري

لست متأكدًا من كيفية القيام بذلك في IIS ، لكني أتخيل أن هناك أيضًا طريقة.

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

7
gabe.

في IIS يمكنك إعداد دليل ظاهري ثانٍ مع تحديثاتك.

ثم تقوم بإعادة توجيه جميع الطلبات ، أو إعادة تحديد روابط الموقع الثاني إلى اسم المضيف الذي تريده

إعادة توجيه HTTP في IIS 7: http://technet.Microsoft.com/en-us/library/cc732930 (WS.10) .aspx

1
Rickjaah

ما أود أن أقترح:

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